longe 发表于 2023-6-16 10:03:06

STC15和STC8多串口校验位的问题

本帖最后由 longe 于 2023-6-16 10:13 编辑

下载stc15的4串口中断自发自收范例,随便修改各自串口的波特率都能正常通信,未发现丢包现象。

手头一个项目:把一个非标协议改为标准的modbus协议,使用stc15w4k56S4/stc8F2k64s4 (32脚封装)的com1、com2。

com1、com2都使用1200/8,N,1 。com1只接收非标协议解析,com2与主机modbus通信。
使用电脑两个串口反复测试正常。
安装现场后发现com1通信不正常,检查com1使用的是1200/8,E,1。com2不变。

修改com1的串口初始化:

SCON = 0xD0;      //9位数据,可变波特率

com1的发送接收按范例对应修改。
再次使用电脑两个串口反复测试发现com2经常会不正常。

将com2接收的数据原版发送回来监测,发现com2接收的数据经常会丢失头两个字节,一条modbus的03协议8字节,单片机只能接收后面6字节。但是如果接收到完整的字节,则能将正确的modbus数据发送回来。

将com1接收的数据(用com1或com2)发送回来监测,正常。

得出的结论是修改com1的通信协议为9位数据,可变波特率后造成com2的接收不正常。
换stc8F2k56S4相同封装单片机也出现同样问题。


页: [1]
查看完整版本: STC15和STC8多串口校验位的问题