填一个STC15F单片机串口通信的坑

最近在做个串口通信的案子,双方约定通信波特率为115200,进行过程中,双方按照50Hz频率发送数据包,包长最大30byte,接收时,为了不掉数据,我使用了环形FIFO,数据在串口中断写入,主程序通过读取FIFO来提取数据,使用FIFO读取数据时,为了保证数据可靠性,不能同时写入,所以需要将串口中断暂时关闭语句内容大致如下:{ES=0;语句1,语句2,ES=1}语句1和语句2很简单,就是读取FIFO中数据,理论不会暂用太多时间,但是因为我是11.0592M晶振,不太清楚到底多久,应该是几个us或者最多十几个US,串口115200波特率。传输一个字节是86us,一个字节是10BIT,8个数据位,停止和起始位,所以硬件检测一个BYTE需要86us,我觉得语句应该可以在这段时间内完成并打开ES中断,但是发现这样会导致数据丢包,加入了CRC校验,导致数据出错,后来降低波特率到57600解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值