购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.3 波特率的计算与串行口初始化

1.波特率的计算

在串行通信中,收发双方的波特率必须保持一致。通过软件可设定串行口的 4 种工作方式,并确定每种方式的波特率。

(1)方式0的波特率是固定的,为单片机晶振频率fosc的1/12,即BR= fosc/12。如fosc =6MHz,则波特率为500kbps;如fosc =12MHz,则波特率为1Mbps。

(2)方式2的波特率也是固定的,且有两种。一种是晶振频率的1/32,另一种是晶振频率的1/64,即fosc/32和fosc /64。如用公式表示为

figure_0055_0061

式中,SMOD为特殊功能寄存器PCON串行口波特率系数的控制位;SMOD=1表示波特率加倍。

注意:PCON不能使用位寻址,只能对其进行字节操作。

例如,在 12MHz 晶振系统中,若 SMOD=0,则波特率=187.5kbps;SMOD=1,则波特率=375kbps。

(3)方式1和方式3的波特率是可变的,其波特率由定时器1的计数溢出(对80C52来说,也可使用定时器2的计数溢出)决定,公式为

figure_0055_0062

式中,定时器1溢出率计算公式为

figure_0055_0063

各种方式波特率的计算公式参见表2-4。

表2-4 波特率的计算公式

figure_0055_0064

表中,若SMOD=0,则K=1;若SMOD=1,则K=2。

通常使用单片机的串行口时,选用的晶振频率fosc比较固定(一般为6MHz、12MHz、11.0592MHz)。单片机和微机通信时,选用的波特率也相对固定。

在实际使用中,经常根据已知波特率和时钟频率来计算定时器 T1 的初值。为方便使用,常用的波特率和初值X间的关系可列成表2-5。

表2-5 常用通信方式及其波特率

figure_0055_0065

其中,有三点需要注意:

① 表 2-5 中仅为一些特定系统串口通信时的典型数据,对于其他一些未列出的波特率,通过前述公式进行计算获取。并可进行相关参数调整,以获得需求的波特率。

② 在使用的时钟振荡频率为 12MHz 或 6MHz 时,表中初值 X 和相应的波特率之间有一定误差。例如,FDH的对应的理论值是10416波特(时钟振荡频率为6MHz时),与9600波特相差816波特,消除误差可以通过调整时钟振荡频率fosc来实现。例如,采用的时钟振荡频率为 11.0592MHz,换言之,在要求串行通信的系统中,为保证串行通信准确,一般使用11.0592MHz的晶振。

③ 如果串行通信选用很低的波特率,可将定时器 T1 设置为方式 1 定时。但 T1 溢出时,需要在中断服务程序中重新装入初值。中断响应时间和执行指令时间也会使波特率产生一定的误差,可用改变初值的方法加以适当调整。

2.串行通信的校验

异步通信时可能会出现帧格式错、超时错等传输错误。在具有串行口的单片机的开发中,应考虑在通信过程中对数据差错进行校验,因为差错校验是保证准确无误通信的关键。常用的差错校验方法有奇偶校验(80C51系列单片机编程采用此法)、和校验及循环冗余码校验。

1)奇偶校验

在发送数据时,数据位尾随的一位数据为奇偶校验位(1 或 0)。当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;当设置为偶校验时,数据中1的个数与校验位中 1 的个数之和应为偶数。接收时,接收方应具有与发送方一致的差错检验设置,当接收一个字符时,对1的个数进行校验,若二者不一致,则说明数据传送出现了差错。

奇偶校验是按字符校验,数据传输速度将受到影响。这种特点使得它一般只用于异步串行通信中。

2)和校验

和校验是指发送方将所发送的数据块求和(字节数求和),并产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的校验和进行比较,相符则无差错,否则即出现了差错。这种和校验的特点无法检验出字节位序的错误。

3)循环冗余码校验

这种校验是对一个数据块校验一次。例如,对磁盘信息的访问、ROM 或 RAM 存储区的完整性等的检验。这种方法广泛应用于串行通信方式。

3.串行口初始化

在使用单片机串行口之前,应对其进行编程初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

(1)确定定时器l的工作方式——编程TMOD寄存器。

(2)计算定时器l的初值——装载THl、TLl。

(3)启动定时器1——编程TCON中的TRl位。

(4)确定串行口的控制——编程SCON。 tfMYCYVaso5xQGCJ0Ylg+oS8jXKcYUWFxSWsDihb4kH0yGhF24TGbBoRoR7Pc+XM

点击中间区域
呼出菜单
上一章
目录
下一章
×