串口 低速收数据时出现乱码

来源:百度知道 编辑:UC知道 时间:2024/06/20 03:04:20
我在编写串口程序时,发现一段在较高波特率下(>9600)接收正常的情况下,在使用低速率(我使用的是)2400,会出现以下的现象:
当首先打开发送端(我使用串口调试助手),按照每1ms自动发送数据,此时再打开接受端接受数据,发现接受的数据是乱码(收发端的波特率是一致的,各位大侠不要考虑这点)。奇特的是,其它所有测试条件不变,仅仅是先打开接受端的串口,然后让发送端按照每1ms自动发送数据,此时,接受的数据正常。
请问哪位大侠知道原因啊,在编程中怎样避免。请不吝赐教,不胜感激。
注:我使用串口调试助手进行接受,还是一样会出现问题。
当10ms发送时还是会出现乱码,当100ms发送的时候就不会出现乱码了。波特率和发送频率的配合问题,您能呢个详细说说吗,我没有理解您的意思。

BaudRate = 2400
则假设:
停止位2bit + 字节8bit + 校验位1bit = 11bit
则发送一个字节最少需要:

11 * 1/2400 s = 46ms。

所以你1ms发一次,10ms发一次肯定得到的是乱码。而100ms发一次则正常。

我没有计算过

速率2400时 是不是可以 每2ms发送呢? 3ms ...

可能是 波特率 与 发送频率 的配合 问题

祝你顺利

发送或接受一位数据的时间为T,波特率为1/T ,8位为一个字节。
你发送频率太快,没有考虑接收端那边的接受速度,接收速度不光是波特率,还有你两次接收中间程序执行的时间。就是,你那边很多个数据发过来了,接收程序才执行了第一遍。