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]