1.串行通讯误差要求
实践表明,当波特率的相对误差小于4.5%时,不会影响数据的正确接收,一般要保证传输的可靠性,要求误差不大于2.5%。
2.误差来源
按照本文原理设置波特率,则误差来源有四,
2 定时器T2启动延迟和停止点的滞后造成的误差△T1;
2 定时器计数本身有一个机器周期的误差△T2=±1;
2 计算X16 定时常数由于8bit单片机计算产生的误差 △X16’;
2 晶体振荡器本身频率的误差
由(E)知道,△X16 = △X16’ +(△T1+△T2)*3/8。
3.误差分析计算
波特率(实际)=fosc/{32 x [65536-( X16±△X16)]}……………………………..(F)
波特率相对误差=(波特率(实际) -波特率(理论) )/波特率(理论) x 100%
1
波特率相对误差=( ----------------------------------- - 1) x 100%………….(G)
1±△X16 /( 65536- X16)
由(G)知道, X16的值越大,则波特率相对误差越大。
X16的值越小,则波特率相对误差越小。
关于波特率误差在什么范围内能正常通信的问题
http://blog.sina.com.cn/s/blog_6035432c0100l7ey.html
一般在设波特率是,有时不是很精确,如要求2400bps但2368bps也能通信,但到底是什么范围能通信上,什么范围不能呢?
1.这个误差没有关系,只要一个字节(10或11bit)累计误差小于半bit时间即可。因为在发现stop位时一个字节同步接收完成,下一个字节的起始位会重新开始同步。
2.就是说把误差控制在5%以内就可以了
3.一般控制在2%以内,还要看你的硬件设计情况,不过对于9600BIT的低速率是比较容易的。
异步通信而言,
1把原理交待清楚了;2指的是通信双方的合计允许误差3则是考虑了对方的误差,给出一般的设计原则。
是异步的,只要能传一个后面就没问题。
因为每一个字节传输完成后都会重新同步上
异步的波特率误差不会产生累积效应的