打印
[其它应用]

SH88F6161串口发送数据200字节左右丢byte

[复制链接]
210|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bqyj|  楼主 | 2021-3-3 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用SH88F6161串口发送和接收数据时,小数据量没发现异常,数据量超过150是就会有很大几率的出现丢字节的问题

使用特权

评论回复
沙发
wenfen| | 2021-3-3 22:29 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
tian111| | 2021-3-3 22:34 | 只看该作者
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;
}
更多操作

使用特权

评论回复
地板
zhuhuis| | 2021-3-3 22:36 | 只看该作者
中断发送下一字节前,先延时1bit的时间,浪费了一些MCU时间,但是确实没有误码了。

使用特权

评论回复
5
songqian17| | 2021-3-3 22:37 | 只看该作者
每次进入发送中断,启动发送标志,由定时器延时发送,这样不占用MCU时间,程序麻烦一些。

使用特权

评论回复
6
songqian17| | 2021-3-3 22:39 | 只看该作者
最主要的,MCU的串口发送是一个字节一个字节紧跟发送,中间只有一个停止位,如果有2个停止位,确实不会有错,但是一个MCU,收发的停止位不可能不一样。

使用特权

评论回复
7
bqyj|  楼主 | 2021-3-3 22:41 | 只看该作者
我现在是接收的时候会出错,会丢字节

使用特权

评论回复
8
chenho| | 2021-3-3 22:44 | 只看该作者

接收可以同时接PC的串口收来监控呀。
如果PC接收没有问题,就是你的接收程序问题了,是否MCU来不及接收?是否有更高级的中断程序影响了串口接收。

使用特权

评论回复
9
gongche| | 2021-3-3 22:47 | 只看该作者
还有6161这个MCU,寄存器是分2个BANK的,中断程序需要保护BANK现场,重新设置BANK。

使用特权

评论回复
10
bqyj|  楼主 | 2021-3-3 22:50 | 只看该作者

嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

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

本版积分规则

390

主题

4526

帖子

2

粉丝