打印

GD32串口输出错误分析

[复制链接]
1641|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
saservice|  楼主 | 2024-2-25 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、用法:
目前公司采用GD32F407作为主控芯片,采用美信的MAX3232作为RS232的驱动芯片用于与其他第三方设备通信。
2、现象:
第三方设备该端口的波特率为固定值:115200,经测试,与绝大多数第三方设备均可以正常通信,但与某些品牌的第三方设备通信时会完全是乱码。而采用STM32F407作为主控芯片时该会产生乱码的第三方设备的通信则没有问题。
如发送0A:
  • 正常接收为:0D 0D 0A 53 4D 49 4F 53 20 6C 6F 67 69 6E 3A 20
  • 实际接收数据为:A8 48 68 2A EA 6A 20 6C 6F 67 69 6E 3A 20
3、进一步现象发现:
用示波器查看了该第三方设备输出的RS232波形,如图1所示:黄色为第三方设备输出的RS232原始波形,蓝色为经美信RS232转TTL以后得波形,从图中可以很明显看出,黄色信号上升下降斜率均较低,且不一致,这导致转TTL后的电平也呈现低电平时间短,高电平时间长的现象(查看了该厂家采用的为SP3232,图2为美信MAX3232的波形,上升下降斜率均较高);
图1
图2
SP3232出来的波形如下图:发送0x0A后
放大后如下图:
4、更近一步现象发现:
采用单字节收发的模式进行测试,发现在数值为奇数时,都无法接受到正确的报文,而数值为偶数时则一般没有问题。
5、STM32与GD32检测机制分析:
  • 两者对数据部分的检测机制完全一致,如图3:

图3
  • 对于起始位的检测描述则ST写的比较清晰,如图4所示,但GD并未提及(但网上找到一些资料说GD需要检测到连续16个0才能认为是有效的起始位)
图4
6、起始位检测机制:
6.1、ST起始位检测机制
stm32对串口的数据识别主要包含两部分,起始位的识别和数据位的识别。
起始位识别:
不管是16 倍还是 8 倍过采样,起始位检测序列相同。都是按照16倍的方式判断,就是起始位不受16 倍或 8 倍过采样配置的影响,在 USART 中,识别出特定序列的采样时会检测起始位。此序列如下:
1110X0X0X0000
起始位识别图,如下:
如果下降沿序列不完整,起始位检测将中止,接收器将返回空闲状态(无标志位置 1)等待下降沿。
如果 3 个采样位均为 0(针对第 3 位、第 5 位和第 7 位进行首次采样时检测到这 3 位均为 0;针对第 8 位、第 9 位和第 10 位进行第二次采样时检测到这 3 位均为 0),可确认起始位(RXNE 标志位置 1,RXNEIE=1 时生成中断)。
如果满足以下任意条件时,可验证起始位(RXNE 标志位置 1,如果 RXNEIE=1 则生成中断),但同时 NF噪声标志位也会置 1:
  • 对于两次采样,有 2 位为 0(针对第 3 位、第 5 位和第 7 位进行采样;针对第 8 位、第 9 位和第 10 位采样)。
  • 如果其中一次采样时(对第 3 位、第 5 位和第 7 位进行采样或对第 8 位、第 9 位和第 10位进行采样),3 个采样位中有 2 个为0。
如果条件 a 或条件 b 都不满足,则启动检测中止,接收器返回空闲状态(无标志位置 1)。
当起始位满足要求,那么就进入数据位检测:
数据检测的时候,过采样16和过采样8是不同的,具体如下:
过采样16
过采样8
其实过程都一样,就是通过采集中间的3次来判断这个bit的高低,下面的对照表:
但是要注意,当串口的电平延时不标准的时候(比如低电平时间短),会导致采集的这三次不在bit的中间,这就是容错性的问题关键了。
6.2、GD起始位检测机制
需要明确GD对起始位置的检测原理,若真如网传的是连续检测16个0,再联系实测波形及奇数出现乱码的现象,则可对上述产生乱码的现象解释。
经与原厂工程师确认,GDF32F4xx串口起始位检测机制为:连续检测16个0---20231229与GD技术支持确认
7、分析结论:
造成数据乱码的问题:在于GD串口对起始位的检测机制不合理造成,同样将GD32F407换成STM32F407后问题解决。

使用特权

评论回复
沙发
发货后已经wi| | 2024-2-25 19:29 | 只看该作者
使用逻辑分析仪或串口调试工具监视串口通信,更详细地分析波形和通信过程中的数据。

使用特权

评论回复
板凳
烟雨蒙蒙520| | 2024-7-31 23:07 | 只看该作者
GD32F407 在与某些第三方设备通信时出现乱码,而 STM32F407 在相同条件下通信正常。问题的主要症状是 RS232 信号的波形质量和通信数据的正确性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

1277

帖子

2

粉丝