目前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串口扩展芯片常见问题相关推荐

  1. SJXXX串口扩展芯片 4串口芯片 UART串口芯片

    SJXX串口扩展芯片 1 概述 SJ000是一款具备I2C总线/SPI总线/UART接口的四通道异步收发器件,通过模式选择使得该器件工作于以上任何一种主接口模式下.器件的四个通道UART可提供高达2M ...

  2. STM32驱动WK2168串口扩展芯片完整教程

    一.WK2168介绍 WK2168是首款具备256级FIFO的低功耗并支持 UART/SPITM/IIC/8位并行总线接口的 4通道UART器件.可以通过模式选择使得该芯片工作于以上任何一种主接口模式 ...

  3. WK串口扩展芯片思维图,最直观明了

    比如: 1.名称:WK2114-ISPG UART主接口的四通道异步收发器件 2. 名称:WK2124-ISSG , SPI桥接/扩展4个增强功能串口(UART) wk2114 将一个标准的 3 线异 ...

  4. 基于一款 wk2168芯片的串口扩展

    串口扩展芯片应用介绍 一. 概述 随着嵌入式系统的功能越来越强大,搭载的外围设备也不断的增加,为了方便系统的集成,现在的外围设备通常都提供了标准的通信接口.在这些标准接口当中最常用的就是我们比较熟悉的 ...

  5. 单串口扩展为4串口的芯片WK2114的使用(一)

    WK2114是国产的单个串口扩展为4个串口的芯片,串口1,串口2,串口3,串口4. 用的MCU是STM32F429 , 就是把STM32F429的串口1 扩展为 4个串口, 注意事项:   wk211 ...

  6. 行业便携终端串口扩展方案

    行业便携终端串口扩展方案 华南总代 深圳市恒泰瑞 热线:13902238970 QQ与微信:398776922 ~~ WK2204-IQNG WK2168-IQPG WK2132-ISSG, WK21 ...

  7. 【嵌入式模块】常用扩展芯片及数据手册总结

    文章目录 前言 一.74HC165 二.74HC595 工作原理 实战演练 三.MAX7219/MAX7221 参考链接 概述 工作原理介绍 点阵LED控制例程 四.PCA9685 参考链接 概述 引 ...

  8. CH423要如何使用,便宜的国产IO扩展芯片

    目录 前言 特点 如何使用 例子1  配置输出 例子2 配置OC1输出 例子3 配置OC14输出 前言 有时候会遇到IO不够用的情况,例如说驱动LED灯,那么有没有什么便宜的,容易买到的芯片?我这次就 ...

  9. 安霸平台gpio扩展芯片aw9523b调试

    公司的一个车载项目由于gpio扣较少,所以用了艾为的一颗16路gpio口扩展芯片,下面描述一下调试过程 硬件原理图如下 aw9523b芯片寄存器较少,直接自己写了个简单的gpio驱动,采用gpio子系 ...

最新文章

  1. 标准差、协方差、相关性分别是什么?
  2. select count(*) from user注入
  3. Micro-CMS v1
  4. SAP ABAP SE16 and SE17
  5. 一帮一python_[python]L1-030 一帮一 (15分)
  6. 用GLM来读取显示有纹理的OBJ
  7. python地图图表和3d_Python地图可视化三大秘密武器
  8. 【转】解决IE8无法加载webplayer流媒体播放器的方法
  9. windows下怎么用basename_比较下养殖用铁丝网还是尼龙网,你会怎么选择?
  10. 正交匹配追踪算法(OMP)
  11. 蛋白组+代谢组联合分析
  12. 关于【Windows 资源保护找到了损坏文件,但其中有一些文件无法修复】的解决方法
  13. 第一次参加本校大学生创新创业训练项目答辩的反思与总结
  14. Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019
  15. 计算机程序前端和后端指什么,什么是前端和后端
  16. JS获取指定特殊字符之间的字符
  17. Excel学习笔记——基础篇
  18. 监控系统zabbix相关
  19. Visual Studio 2017、2019 无法启动的解决方法
  20. 奶茶MM:爱上一个大叔,是野马遇上一片草原。

热门文章

  1. Java容器【集合】笔记
  2. 英国内政大臣:维基解密创始人朱丽安·阿桑奇可被引渡到美国
  3. TCP传输的终极秘密
  4. 博力扬LED大屏专用光纤收发器千兆单模单纤兼容诺瓦灵星雨德普达中德等
  5. 出海现金贷还有未来吗?
  6. 手机拨号按键歌曲谱子
  7. 计算机辅助翻译stm,计算机辅助翻译报告.docx
  8. How to design your talend custom component?
  9. CMSIS-RTOS2 入门教程 [2]——RTX_Config.h配置
  10. linux好压iso压缩文件,好压压缩文件管理器新手指南