N76E003串口115200接收连续数据不完整怎么解决?

2020-01-12 17:29发布

本帖最后由 zhcj66 于 2018-6-23 11:13 编辑

如题"N76E003串口波特率115200,接收连续数据不完整怎么解决?",

原先用的STM8S103可以一次接收10bit数据,不丢数据,然而因为涨价严重,不的不换方案

这些8bit的mcu也没有DMA真的接收数据很累啊,GD和ST的32bit的mcu电压都是最高3.3v的也没有个5v的,如果换这样的mcu还需要加LDO成本又上去了

难道N76E003芯片串口接收连续数据是,只能在发送每个字节上加延时了吗?
23条回答
zhcj66
1楼 · 2020-01-15 00:48.采纳回答
anjiyifan 发表于 2019-5-30 23:43
楼主问题解决了吗?你的原因应该是计算波特率的时候多加了一个1导致的。试试这样:
#ifdef FOSC_166000                //  ...

已经放弃这个芯片了
zhcj66
2楼-- · 2020-01-15 00:26
 精彩回答 2  元偷偷看……
anjiyifan
3楼-- · 2020-01-15 00:37
楼主问题解决了吗?你的原因应该是计算波特率的时候多加了一个1导致的。试试这样:
#ifdef FOSC_166000                // if Fsys = 16.6MHz
        RH3    = HIBYTE(65536 - (1037500/u32Baudrate));                  /*16.6 MHz */
        RL3    = LOBYTE(65536 - (1037500/u32Baudrate));                        /*16.6 MHz */
#endif
anjiyifan
4楼-- · 2020-01-15 05:03
zhcj66 发表于 2019-5-31 13:22
已经放弃这个芯片了

我猜你之前是波特率计算出错了,官方例程的计算方法有误的,多加了一个1,在9600波特率下,偏差1没影响,但是115200波特率下,波特率计数器设置值很小,相差一个1,就占很大百分比了。
还是得看芯片手册上的计算方法才行,芯片手册上的是对的。
anjiyifan
5楼-- · 2020-01-15 05:51
当然也有可能是中断优先级问题。高波特率下要把串口中断优先级设高一点,不然被别的中断抢占后,容易丢数据。

一周热门 更多>