用插值调整法设计单片机串行口波特率
发布时间:2008/5/27 0:00:00 访问次数:846
摘要:传统方法设计单片机串行口波特率时,往往要使用特殊频率的晶振。本文在分析mcs-51单片机串行口工作原理的基础上,提出基于12mhz晶振的单片机系统,通过编程实现所需波特率的插值调整设计方法。 关键词:单片机 串行口 波特率 调整 引言 单片机在当今的仪表及工业测控设备上应用相当广泛,在构成分布式系统进行较长距离数据通信或是要求用有限的硬件资源进行数据交换时,都要用到串行口。也正是串行口使得mcs-51单片机增色不少,成为单片机开发应用中不可缺少的部分。 1 mcs-51单片机串行口工作原理 mcs-51单片机串行口采用异步通信方式。异步通信方式是以字为单位来传送数据的。每一个字由起始位、数字位、奇偶检验位、停止位等构成,称为一帧,如图1所示。在帧格式中,一个字由起始位开始,至停止位结束。起始位为0,用来通知接收端一个新的字开始到来,同时,起始位还被用作接收端的同步时钟,以保证后面的接收能正确进行。起始位后是5~8位数据,接着是奇偶校验位(可省略),最后是停止位。停止位为1。
下面以单片机串行口工作方式3为例说明其工作原理。串口在发送时,内部有一个16(当smod=1时)分频计数器,用于计算t1的溢出。当16分频计数器每次满度翻转时(由全1变全0)的那个机器周期,即把1位写入“sbuf”中的数据送到txd口上。 图2为接收时序图。在接收时,接收器在每一个接收时钟的上升沿(t1的溢出信号)采样接收数据线rxd。当发现出现负跳变时,16分频计数器就立刻复位,以使计数器满度翻转的刻度恰好与输入位的边沿对准。在以后的接收里,16分频计数器计算t1的溢出,每满度翻转1次就接收1位数据。在计数器第7、8、9状态时,所对应的t1溢出作为位检测采样控制脉冲。每个脉冲控制位检测器对rxd端口采样1次,这3个脉冲理论上对应于每一位的中央段,采样的结果按三中取二法确定rxd的值,以抑制干扰。如果所接收的第一位不是0,说明不是一帧数据的起始位,该位被摒弃,接收电路复位,等待下一个负跳变。 参看串口接收脉冲时序图,若所接收的数据与接收终端自身的波特率设置有差异,即在接收起始位时,由于起始位的同步作用,7、8、9三个位采样检测脉冲处在该数据位的中断。随着接收的进行,检测采样脉冲将逐步偏离接收数据的中央,在接收停止位时偏移达到最大值。但由于下一帧起始接收停止位时偏移达到最大值。但由于一帧起始位的同步作用,致使前面累积的误差对以后的接收不影响。因此只要这种偏移在允许范围内就不至于发生错位或漏码。由分析可知,当检测时钟脉冲对于接收数据的累积误差达50%,则采样的最后一位数据已处于检测时钟有效与无效的临界状态,这时就可能出错。考虑到器件的离散性,累积误差不应大于标准值的25%。因此,对于常用的9位和11位一帧的串行传输,通常规定其最大的波特率允许误差分别为2.8%和2.3%。
2 波特率传统设计方法 mcs-51单片机串行口波特率的传统设计,通常是把定时器t1置于工作方式2(8位自动重装定时初值方式)。这样,只要给t1装入初值,启动t1便会产生相应的溢出,串行口工作方式1、3的波特率计算公式为 整理后,得到定时器t1在相应波特率时的初装值: 式中:smod-波特率倍增位;fosc-振荡频率;x-定时器初值 若用户板采用的是常用的12 mhz晶振,即有许多常见的波特率由式(2)算得x值非整数。此,常见的参
摘要:传统方法设计单片机串行口波特率时,往往要使用特殊频率的晶振。本文在分析mcs-51单片机串行口工作原理的基础上,提出基于12mhz晶振的单片机系统,通过编程实现所需波特率的插值调整设计方法。 关键词:单片机 串行口 波特率 调整 引言 单片机在当今的仪表及工业测控设备上应用相当广泛,在构成分布式系统进行较长距离数据通信或是要求用有限的硬件资源进行数据交换时,都要用到串行口。也正是串行口使得mcs-51单片机增色不少,成为单片机开发应用中不可缺少的部分。 1 mcs-51单片机串行口工作原理 mcs-51单片机串行口采用异步通信方式。异步通信方式是以字为单位来传送数据的。每一个字由起始位、数字位、奇偶检验位、停止位等构成,称为一帧,如图1所示。在帧格式中,一个字由起始位开始,至停止位结束。起始位为0,用来通知接收端一个新的字开始到来,同时,起始位还被用作接收端的同步时钟,以保证后面的接收能正确进行。起始位后是5~8位数据,接着是奇偶校验位(可省略),最后是停止位。停止位为1。
下面以单片机串行口工作方式3为例说明其工作原理。串口在发送时,内部有一个16(当smod=1时)分频计数器,用于计算t1的溢出。当16分频计数器每次满度翻转时(由全1变全0)的那个机器周期,即把1位写入“sbuf”中的数据送到txd口上。 图2为接收时序图。在接收时,接收器在每一个接收时钟的上升沿(t1的溢出信号)采样接收数据线rxd。当发现出现负跳变时,16分频计数器就立刻复位,以使计数器满度翻转的刻度恰好与输入位的边沿对准。在以后的接收里,16分频计数器计算t1的溢出,每满度翻转1次就接收1位数据。在计数器第7、8、9状态时,所对应的t1溢出作为位检测采样控制脉冲。每个脉冲控制位检测器对rxd端口采样1次,这3个脉冲理论上对应于每一位的中央段,采样的结果按三中取二法确定rxd的值,以抑制干扰。如果所接收的第一位不是0,说明不是一帧数据的起始位,该位被摒弃,接收电路复位,等待下一个负跳变。 参看串口接收脉冲时序图,若所接收的数据与接收终端自身的波特率设置有差异,即在接收起始位时,由于起始位的同步作用,7、8、9三个位采样检测脉冲处在该数据位的中断。随着接收的进行,检测采样脉冲将逐步偏离接收数据的中央,在接收停止位时偏移达到最大值。但由于下一帧起始接收停止位时偏移达到最大值。但由于一帧起始位的同步作用,致使前面累积的误差对以后的接收不影响。因此只要这种偏移在允许范围内就不至于发生错位或漏码。由分析可知,当检测时钟脉冲对于接收数据的累积误差达50%,则采样的最后一位数据已处于检测时钟有效与无效的临界状态,这时就可能出错。考虑到器件的离散性,累积误差不应大于标准值的25%。因此,对于常用的9位和11位一帧的串行传输,通常规定其最大的波特率允许误差分别为2.8%和2.3%。
2 波特率传统设计方法 mcs-51单片机串行口波特率的传统设计,通常是把定时器t1置于工作方式2(8位自动重装定时初值方式)。这样,只要给t1装入初值,启动t1便会产生相应的溢出,串行口工作方式1、3的波特率计算公式为 整理后,得到定时器t1在相应波特率时的初装值: 式中:smod-波特率倍增位;fosc-振荡频率;x-定时器初值 若用户板采用的是常用的12 mhz晶振,即有许多常见的波特率由式(2)算得x值非整数。此,常见的参
上一篇:智能天线为无线局域网添加精彩