打印
[其它应用]

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

[复制链接]
907|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skawu|  楼主 | 2018-5-15 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用SH88F6161串口发送和接收数据时,小数据量没发现异常,数据量超过150是就会有很大几率的出现丢字节的问题,使用波特率57600,串口配置如下:
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;
}


沙发
gx_huang| | 2018-5-15 16:59 | 只看该作者
这个我有专门研究,也没有研究出最终结论。
但是最终的解决方案是有些无奈,我是在中断发送下一字节前,先延时1bit的时间,浪费了一些MCU时间,但是确实没有误码了。
还有,就是每次进入发送中断,启动发送标志,由定时器延时发送,这样不占用MCU时间,程序麻烦一些。
最主要的,MCU的串口发送是一个字节一个字节紧跟发送,中间只有一个停止位,如果有2个停止位,确实不会有错,但是一个MCU,收发的停止位不可能不一样。

使用特权

评论回复
板凳
skawu|  楼主 | 2018-5-15 17:48 | 只看该作者
gx_huang 发表于 2018-5-15 16:59
这个我有专门研究,也没有研究出最终结论。
但是最终的解决方案是有些无奈,我是在中断发送下一字节前,先 ...

我现在是接收的时候会出错,会丢字节

使用特权

评论回复
地板
skawu|  楼主 | 2018-5-15 18:32 | 只看该作者
gx_huang 发表于 2018-5-15 16:59
这个我有专门研究,也没有研究出最终结论。
但是最终的解决方案是有些无奈,我是在中断发送下一字节前,先 ...

好头疼,搞不定。。。

使用特权

评论回复
5
gx_huang| | 2018-5-16 08:37 | 只看该作者
接收可以同时接PC的串口收来监控呀。
如果PC接收没有问题,就是你的接收程序问题了,是否MCU来不及接收?是否有更高级的中断程序影响了串口接收。

使用特权

评论回复
6
gx_huang| | 2018-5-16 08:38 | 只看该作者
还有6161这个MCU,寄存器是分2个BANK的,中断程序需要保护BANK现场,重新设置BANK。

使用特权

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

本版积分规则

6

主题

110

帖子

0

粉丝