CH32VXX系列串口可能有硬件BUG

主机采用CH32V307RCT6 运行于(125MHz),  从机采用STM32F103, 运行于(72MHz),   设置一个波特率,如115200, 会出现两者都有一定的 误差。   主机CH32V与从机STM32的发送接收均采用  DMA,   主机CH32V通过 modbus读取 STM32F103的数据, 当读取寄存器个数在 30个以内时,  基本不出现失败,  当读取寄存器个数在 120个时, 出现失败的概率很高。   为了进一步测试, 主机CH32V发送采用一个串口(设置停止位为2个),  接收采用另一个串口(设置停止位为1个)。    STM32停止位设置位1.5个。 这种配置对 CH32V的接收 是最友好的, 可是依然会出现失败概率, 会低很多。

STM32是批量产品, 稳定工作了很多年了。   抓示波器波形,  发现stm32每次都返回数据,  CH32V调试发现 CRC错误或 少数据。   当波特率达到 2M时,  CH32V更是 有 40%以上的错误。    感觉CH32V串口的重同步机制有 BUG,    芯片的errata哪里可以下载

以前电脑地线断了漏电,估计也是电源群脉冲影响?然后CH32V307串口 DMA不停的接收到乱七八糟的数据,那时心态差点崩了…


两台 CH32VXXX进行主从通讯,可以正常进行, 只要与 STM32F103VC系列(从机)通讯,问题就存在


问题大概已经找到了,STM32F103 串口1(PB6) 在发送长数据时,每几十个字节就会产生50ns的尖峰,注意是ns级别的, 直接用示波器抓到的,在大部分的情况下, 50ns的尖峰都无法通过隔离器件。? ?就算不隔离电脑端的串口也无法识别该尖峰,会过滤掉, 但是CH32Vxxx系列,很可能包括 CH32Fxxx系列, 会将该尖峰作为一个位的开启或一个字节的开启。 导致最后整体接收数据有误.? 目前在CH32V的串口接收引脚前, 加入RC滤波, R=100R, C = 1nf, 时间常数约为 100ns, 可以将该尖峰变成一个小突起, CH32V就可以完全正确的接收该长串数据, 因此可以得出结论,CH32XXX系列 在串口接收 滤波方面 是存在一定问题的,无法消除 50ns级别的尖峰,? 即使波特率是115200时也是同样存在.不知道为什吗STM32F103会发送该50ns的尖峰, 估计也是硬件问题.? ?WCH厂家能否确认该问题, 望尽快试验告之.只有采用STM32F103做从机 才会出现该问题,其他MCU未全测试.下图通讯速率为1M, 滤波后可通讯. 8d19b9f7fb7969d0426df597e7ef2ed.jpg


如果串口滤波问题不解决, CH32XXX系列 串口通讯在 群脉冲测试时,特别是电源线之间的群脉冲,? 会表现很差劲,? 这个50ns约为 20M左右的 脉冲, 刚好是群脉冲频率范围。? CH32V的串口接收加入RC滤波后,? 作为主机 与 STM32F103(从机)进行MODBUS通讯,? ?每秒通讯10次,? 1M波特率,? 每次120个寄存器,? 测试一小时,? 每次都通讯成功,? ?去掉 RC滤波后, 基本上失败概率60%以上。?? ?所有测试均在 无干扰环境下进行。??


国产芯片的测试真是让人痛心, 测了好多种国产MCU了, 没有一个让人省心的。  HC32F460系列的DMA有BUG,  WCH的串口滤波 又是大BUG,   降低波特率只能降低出错概率, 不能完全避免, 用国产芯片的同志们应该能够体会到的。  现在我们支持国产, 国产芯片也要争气啊。   本人是20多年的老工程师了, 浙大硕士,总工。   本人测试过 10几款 MCU了,  国内的,进口的。   不要怀疑本人的判断,  基本上都是在大量试验的基础上做出的,  本人对FPGA也有开发经历, 对这些硬件BUG也能分析个8,9不离十。  我敢断定 WCH的芯片的串口通讯在群脉冲下会有 大问题。 


关注一下


看描述是STM32F103有BUG, hhh


问题不能这么说,  stm32作为从机,  其他主机与stm32的通讯也是正常的。  也就是所, stm32发出人50ns的尖峰 虽然不合常理, 但是不影响其他主机的通讯。  但是 ch32V系列会被影响。  我们不能看到stm32f1的BUG,  就忽略了CH32V的BUG.  


我们芯片过EFT群脉冲测试不会有问题。我们很多量产客户使用我们芯片做的产品也会去过EFT群脉冲认证测试,从市场端得到的认证反馈没有任何问题。

另外按照我们芯片串口设计50ns的尖峰脉冲也不会别误认为是有效电平。串口设计中使用过采样技术来区分数据还是噪音。按照您当前1M的波特率划分16等份后每一次采样是62.5ns,理论上50ns的脉冲最多会被采样一次,接收数据仍然会为0。所以您这边遇到的问题我们这边会再实测验证一下,测试过程中可能会有一些细节需要沟通,如果方便麻烦添加一下我的微信:18951773083或者记录一下我的邮箱:wangyy@wch.cn,方便后续进一步的细节沟通。

image.png



问题是在波特率是115200的时候, 也是会出现问题。 这个50ns脉冲按理应该采集不到, 但是我这边用 ch32v203c8t6测试 也是过不了。   采用RC滤波以后就可以过,  这个如何解释。



话题扯开点:我也发现这STM32F103VC问题很大!

一块电机板经常出问题,然后重新烧写一次程序就又OK;

IO端口很脆弱,两路输出一个高一个低不小心连一起,芯片就开始发烫,即使撤去了短路,芯片还是发烫,就这么坏了……

不懂技术的老板很自信的认为他是买到国产高仿了。


话再说回来,Errata确实很重要!

这个还希望沁恒能有更开放的心态来面对。

现在的芯片问题,要么隐藏在参考手册内,要么去外设库看蛛丝马迹,然后看到某家芯片卖的便宜都不敢买:心想会不会是有Bug的版本。


看描述,这不是STM32有bug么?怎么怪到CH32头上了


这些滤波问题,老牌芯片厂家肯定都吃过亏,所以早解决了。所以工业抗干扰能力会好一些。

厂家吃过亏,遇到过问题,本身也是一种经验积累。


只有登录才能回复,可以选择微信账号登录