CH432,CH438,CH9434串口扩展芯片常见问题
目前WCH有三款串口扩展芯片CH432,CH438以及CH9434。
型号 |
CH432 |
CH438 |
CH9434 |
扩展串口数量 |
2 |
8 |
4 |
通讯接口 |
并口/SPI(具体需要看芯片封装) |
并口 |
SPI |
接口速度 |
支持最高 10MB的并口 24MHz的SPI |
10MB的8位并口 |
最高16Mbit/s 注1:见表格底 |
是否支持级联 |
是 |
是 |
是 |
FIFO大小 |
内置 16 字节的 FIFO 先进先出缓冲器,支持 4 个 FIFO 触发级 |
内置 128 字节的 FIFO 先进先出缓冲器,支持 4 个 FIFO 触发级 |
串口每个方向独立 FIFO 缓存,发送 1536 字节,接收 2048 字节 |
封装 |
CH432Q(LQFP44) CH432T(SSOP20) |
CH438L(LQFP128) CH438Q(LQFP44) |
QFN48_5X5 |
电源 |
3.3V-5.3V (5V典型值) |
3.3V-5.3V (5V典型值) |
2.4V-3.6V (3.3V典型值) |
注1:CH9434的SPI最快时钟速度与CH9434的系统时钟有关系。最快速度(稳定)约为系统时钟的1/3。Eg:如果使用内部32M,倍频15,分频15.那么sys_clk还是32M,那么SPI_Clk不能超过10Mbit/s。
常见问题解决
1. CH432/8/CH9434的LSR寄存器进入break。
解答:这个是因为串口的RXD脚一直处于低电平导致的,只需要硬件接上拉等方式即可解决。
2. 如何判断CH432/CH438/CH9434芯片是否正常工作
解答:(1)检查硬件,检查芯片的VCC引脚的电压是否为手册里面要求的典型值。看一下VCC的纹波是否过大。
(2)在上电的情况,使用示波器去检查芯片的XI,看一下晶振是否有波形。
(3)检查硬件的连接线是否有问题(主控芯片与串口扩展芯片通讯接口的连接)
(4)通过接口发送对应的数据,往SCR寄存器写数据,再读出来看是否为刚刚写入的数据,如果是的,则表示芯片工作正常并且硬件基础的通讯连接没有问题。
注:这三个串口扩展芯片的SCR寄存器为用户自定义的寄存器,断电复位是会保持。
3. 主控芯片与芯片通讯不正常
解答:(1)首先检查硬件的连接。
(2)如果是SPI,检查一下SPI的CLK速度是否超过了芯片要求的最大值
(3)部分芯片对于命令与数据,命令与命令之间是由最小时间的间隔要求,具体需要看芯片手册。可以用逻辑分析仪查看是否有这些时间间隔。
(4)所有的SPI转串口(扩展)的芯片的时序,CS是在发送完addr和数据后,才会重新拉高的。具体可以看芯片手册的时序图。
4.有关串口扩展芯片的FIFO的问题
解答:三款串口扩展芯片的接收fifo触发点都是控制FCR寄存器的RECVTG1 和 RECVTG0位(3个芯片的大部分寄存器都是一样的)。
(1)CH432:RECVTG1 和 RECVTG0:设置接收 FIFO 的中断和硬件流控制的触发点,00 对应 1 个字节,即接收
满 1 个字节产生接收数据可用的中断,并在使能硬件流控制时自动无效 RTS 引脚,01 对应 4
个字节,10 对应 8 个字节,11 对应 14 个字节。(FIFO16字节)。
(2)CH438:RECVTG1 和 RECVTG0:设置接收 FIFO 的中断和硬件流控制的触发点,00 对应 1 个字节,即接收
满 1 个字节产生接收数据可用的中断,并在使能硬件流控制时自动无效 RTS 引脚,01 对应 16
个字节,10 对应 64 个字节,11 对应 112 个字节((FIFO128字节)
(3)CH9434M:RECVTG1 和 RECVTG0:设置接收 FIFO 的中断和硬件流控制的触发点,00 对应 256 个字节,即
接收满 256 个字节产生接收数据可用的中断,并在使能硬件流控制时自动无效 RTS 引脚,
01 对应 512 个字节,10 对应 1024 个字节,11 对应 1280 个字节。
当接收数据达到触发值时,就会触发recv_rdy(接收字节数达到fifo触发点)中断。
5. 对于CH43x芯片读取的问题
解答:有些新上手的工程师,在使用fifo接收的时候,会发现随着波特率的提高,当触发RECV_RDY中断的时候,去读取RBR寄存器(注1)的数据。最后读出来的数据长度会超过FIFO接收触发的长度。这个是因为目前43xEVT的代码里面,是一个do--while循环,判断的条件是看BIT_LSR_DATARDY,也就是LSR的DATARDY位是否为1(注2),为1则表示fifo里面有数据,那么如果通讯接口的速度与较慢,串口的波特率较高,并且对方串口的发送速度也较快,那么就会出现,触发fifo_recv_rdy中断后,主控芯片通过接口去读取缓冲区的数据,但如果在读取的时候来了新的数据,那么就会继续停留在这个do-while循环语句当中。最后导致的情况就是读出的数据长度明显大于fifo触发的长度,如果fifo触发值设置的较大,那么很有可能会出现fifo溢出的问题。
u8 CH432Seril1Rcv( u8 *buf ) /* 禁用FIFO,CH432串口1接收多字节子程序*/
{
u8 RcvNum = 0;
if( !( ReadCH432Data( CH432_LSR1_PORT ) & ( BIT_LSR_BREAKINT | BIT_LSR_FRAMEERR | BIT_LSR_PARERR | BIT_LSR_OVERR ) ) ) /* b1-b4无错误 */
{
while( ( ReadCH432Data( CH432_LSR1_PORT ) & BIT_LSR_DATARDY ) == 0 ); /* 等待数据准备好 */
do
{
*buf++ = ReadCH432Data( CH432_RBR1_PORT ); /* 从接收缓冲寄存器读出数据 */
RcvNum++;
}
while( ( ReadCH432Data( CH432_LSR1_PORT ) & BIT_LSR_DATARDY ) == 0x01 );
}
else ReadCH432Data( CH432_RBR1_PORT );
return( RcvNum );
}
解决办法就是在这个接收函数里面,如果是fifo触发的中断,则强制只读一个触发值长度的数据,如果是超时中断则调用原来的dowhile的那个方式。其次,若选择的是CH432这样的fifo较小的串口扩展芯片,那么fifo触发值最好选择一半。还有就是提高spi接口的通信的速率。
6. 有关串口波特率的问题
解答:串口波特率的计算和DLM以及DLL两个寄存器有关。具体的计算公式:除数(DLL和DLM的值)=芯片主时钟/16or8(具体看芯片手册)/波特率。
注1:RBR:接收缓冲寄存器,如果 LSR 的 DATARDY 位为 1 则可以从该寄存器读取接收到的数据。如果 FIFOEN
为 1 则从串口移位寄存器 RSR 接收到的数据首先被存放于接收 FIFO 中,然后通过该寄存器读出
注2:DATARDY:该位为 1 表示接收 FIFO 中有接收到的数据,读取 FIFO 中所有数据后,该位自动清 0。
驱动代码工程
可以去个人Gitee,里面有STM32F103单片机控制CH423/CH438的驱动代码。
个人Gitee:https://gitee.com/maji19971221/wch_-per/tree/master/WCH_Per/STM32F103
CH9434的驱动代码可以去WCH官网,官方留的就是stm32驱动的。
CH432,CH438,CH9434串口扩展芯片常见问题 - 我叫搞事情 - 博客园
CH432,CH438,CH9434串口扩展芯片常见问题相关推荐
- SJXXX串口扩展芯片 4串口芯片 UART串口芯片
SJXX串口扩展芯片 1 概述 SJ000是一款具备I2C总线/SPI总线/UART接口的四通道异步收发器件,通过模式选择使得该器件工作于以上任何一种主接口模式下.器件的四个通道UART可提供高达2M ...
- STM32驱动WK2168串口扩展芯片完整教程
一.WK2168介绍 WK2168是首款具备256级FIFO的低功耗并支持 UART/SPITM/IIC/8位并行总线接口的 4通道UART器件.可以通过模式选择使得该芯片工作于以上任何一种主接口模式 ...
- WK串口扩展芯片思维图,最直观明了
比如: 1.名称:WK2114-ISPG UART主接口的四通道异步收发器件 2. 名称:WK2124-ISSG , SPI桥接/扩展4个增强功能串口(UART) wk2114 将一个标准的 3 线异 ...
- 基于一款 wk2168芯片的串口扩展
串口扩展芯片应用介绍 一. 概述 随着嵌入式系统的功能越来越强大,搭载的外围设备也不断的增加,为了方便系统的集成,现在的外围设备通常都提供了标准的通信接口.在这些标准接口当中最常用的就是我们比较熟悉的 ...
- 单串口扩展为4串口的芯片WK2114的使用(一)
WK2114是国产的单个串口扩展为4个串口的芯片,串口1,串口2,串口3,串口4. 用的MCU是STM32F429 , 就是把STM32F429的串口1 扩展为 4个串口, 注意事项: wk211 ...
- 行业便携终端串口扩展方案
行业便携终端串口扩展方案 华南总代 深圳市恒泰瑞 热线:13902238970 QQ与微信:398776922 ~~ WK2204-IQNG WK2168-IQPG WK2132-ISSG, WK21 ...
- 【嵌入式模块】常用扩展芯片及数据手册总结
文章目录 前言 一.74HC165 二.74HC595 工作原理 实战演练 三.MAX7219/MAX7221 参考链接 概述 工作原理介绍 点阵LED控制例程 四.PCA9685 参考链接 概述 引 ...
- CH423要如何使用,便宜的国产IO扩展芯片
目录 前言 特点 如何使用 例子1 配置输出 例子2 配置OC1输出 例子3 配置OC14输出 前言 有时候会遇到IO不够用的情况,例如说驱动LED灯,那么有没有什么便宜的,容易买到的芯片?我这次就 ...
- 安霸平台gpio扩展芯片aw9523b调试
公司的一个车载项目由于gpio扣较少,所以用了艾为的一颗16路gpio口扩展芯片,下面描述一下调试过程 硬件原理图如下 aw9523b芯片寄存器较少,直接自己写了个简单的gpio驱动,采用gpio子系 ...
最新文章
- 标准差、协方差、相关性分别是什么?
- select count(*) from user注入
- Micro-CMS v1
- SAP ABAP SE16 and SE17
- 一帮一python_[python]L1-030 一帮一 (15分)
- 用GLM来读取显示有纹理的OBJ
- python地图图表和3d_Python地图可视化三大秘密武器
- 【转】解决IE8无法加载webplayer流媒体播放器的方法
- windows下怎么用basename_比较下养殖用铁丝网还是尼龙网,你会怎么选择?
- 正交匹配追踪算法(OMP)
- 蛋白组+代谢组联合分析
- 关于【Windows 资源保护找到了损坏文件,但其中有一些文件无法修复】的解决方法
- 第一次参加本校大学生创新创业训练项目答辩的反思与总结
- Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019
- 计算机程序前端和后端指什么,什么是前端和后端
- JS获取指定特殊字符之间的字符
- Excel学习笔记——基础篇
- 监控系统zabbix相关
- Visual Studio 2017、2019 无法启动的解决方法
- 奶茶MM:爱上一个大叔,是野马遇上一片草原。
热门文章
- Java容器【集合】笔记
- 英国内政大臣:维基解密创始人朱丽安·阿桑奇可被引渡到美国
- TCP传输的终极秘密
- 博力扬LED大屏专用光纤收发器千兆单模单纤兼容诺瓦灵星雨德普达中德等
- 出海现金贷还有未来吗?
- 手机拨号按键歌曲谱子
- 计算机辅助翻译stm,计算机辅助翻译报告.docx
- How to design your talend custom component?
- CMSIS-RTOS2 入门教程 [2]——RTX_Config.h配置
- linux好压iso压缩文件,好压压缩文件管理器新手指南