[其它应用] SH88F6161串口发送数据200字节左右丢byte

[复制链接]
1285|17
 楼主| bqyj 发表于 2022-7-7 20:22 | 显示全部楼层 |阅读模式
在使用SH88F6161串口发送和接收数据时,小数据量没发现异常,数据量超过150是就会有很大几率的出现丢字节的问题
dingy 发表于 2022-7-7 21:05 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
dengdc 发表于 2022-7-7 21:07 | 显示全部楼层
void uart_1_init(void)
{
        SCON1 = 0x50;
        IEN1 = IEN1 | 0x40;
        /*配置波特率参数,波特率57600 */
        /* 计算公式:(int)X=FSY/(16*波特率) ;  SBRT=32768-X  ;   SFINE=(FSY/波特率)-16*X   FSY=12M*/
        SBRTH1 = 0xff;
        SBRTL1 = 0xf3;      //57600 f3
        SFINE1 = 0x00;
}
zhanglli 发表于 2022-7-7 21:11 | 显示全部楼层
中断发送下一字节前,先延时1bit的时间,浪费了一些MCU时间,但是确实没有误码了。
daichaodai 发表于 2022-7-7 21:13 来自手机 | 显示全部楼层
连续发送数据,如果逻辑没处理好就很容易丢包。
chuxh 发表于 2022-7-7 21:14 | 显示全部楼层
每次进入发送中断,启动发送标志,由定时器延时发送,这样不占用MCU时间,程序麻烦一些。
supernan 发表于 2022-7-7 21:17 | 显示全部楼层
最主要的,MCU的串口发送是一个字节一个字节紧跟发送,中间只有一个停止位,如果有2个停止位,确实不会有错,但是一个MCU,收发的停止位不可能不一样。
 楼主| bqyj 发表于 2022-7-7 21:18 | 显示全部楼层
我现在是接收的时候会出错,会丢字节
spark周 发表于 2022-7-7 21:21 | 显示全部楼层

接收可以同时接PC的串口收来监控呀。
如果PC接收没有问题,就是你的接收程序问题了,是否MCU来不及接收?是否有更高级的中断程序影响了串口接收。
zhenykun 发表于 2022-7-7 21:23 | 显示全部楼层
还有6161这个MCU,寄存器是分2个BANK的,中断程序需要保护BANK现场,重新设置BANK。
 楼主| bqyj 发表于 2022-7-7 21:25 | 显示全部楼层
嗯,那我按大家的说法挨个排查一下,谢谢哈
tpgf 发表于 2022-8-2 08:00 | 显示全部楼层
波特率现在是设置成多少了啊
caigang13 发表于 2022-8-2 08:03 来自手机 | 显示全部楼层
逻辑处理有bug啊
qcliu 发表于 2022-8-2 08:09 | 显示全部楼层
缓存那部分处理的不够好?
drer 发表于 2022-8-2 08:17 | 显示全部楼层
如何保护bank现场呢
coshi 发表于 2022-8-2 08:27 | 显示全部楼层
如何用pc来监控呢
kxsi 发表于 2022-8-2 08:35 | 显示全部楼层
重新定义一下协议额
wiba 发表于 2022-8-2 09:07 | 显示全部楼层
用示波器看看是发送端的问题还是接收端的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部