首页 理论教育 如何设置波特率?

如何设置波特率?

时间:2023-06-28 理论教育 版权反馈
【摘要】:请读者再次观察图6-2,其波特率发生器选择定时器T1来产生。

如何设置波特率?

前文已经提到,波特率反映了串行通信的速度,波特率越高,则传输速度越快,波特率越低,传输速度越慢。那波特率由谁来决定呢?

6.2.3.1 使用波特率计数器实现

对STC15F2K60S2单片机而言,其STC_ISP软件集成了波特率设置功能,如图6-3所示。

978-7-111-55685-5-Chapter06-6.jpg

图6-3 STC_ISP波特率计算器

用户设定好系统频率、波特率、串口号、串口工作方式(UART数据位)、波特率发生器和定时器时钟后,单击“生成C代码”即可。这里特别请读者注意“误差”显示部分,最好所产生的波特率是没有计算误差的。

其中,特殊功能寄存器AUXR为辅助寄存器,其相关位见表6-4。第6位(B6)是T1速度控制位,对应图6-2中的“定时器时钟”。当T1×12=1,则定时器T1进入“1T”模式,速度比传统8051单片机快了12倍。当T1×12=0,则定时器T1为传统的12T模式,即12个时钟周期为一个机器周期,定时器计数值加1。

表6-4 AUXR的各位定义

978-7-111-55685-5-Chapter06-7.jpg

其他相关寄存器,如有不清楚的,请查阅定时器章节。

6.2.3.2 波特率的生成

这里以串口1,常用的工作方式1为例说明。串行通信模式1的波特率是可变的,由定时器/计数器1或定时器2产生,商家推荐优先选择定时器2产生波特率。请读者再次观察图6-2,其波特率发生器选择定时器T1来产生。

1.使用T2作为波特率发生器

串口1的波特率=(定时器2的溢出率)/4。

当T2工作在1T模式时,定时器2的溢出率=系统时钟/(65536-[RLTH2,RLTL2]);此时,串口1的波特率=系统时钟/(65536-[RLTH2,RLTL2])/4。

当T2工作在12T模式时,定时器2的溢出率=系统时钟/12/(65536-[RLTH2,RLTL2]);此时,串口1的波特率=系统时钟/12/(65536-[RLTH2,RLTL2])/4。(www.xing528.com)

说明:读者只需了解基本原理,实际应用时可直接使用STCISP软件进行设置。

2.使用T1作为波特率发生器——16bit自动重装模式

当串口1使用T1作为其波特率发生器且T1工作于模式0(16位自动重装模式)时,串口1的波特率=(定时器1的溢出率)/4。【注意:此时波特率与SMOD位无关!】

当T1工作在12T模式时,T1的溢出率=系统时钟/12/(65536-[RL_TH1,RL_TL1]);即此时串口1的波特率=系统时钟/12/(65536-[RLTH1,RL_TL1])/4。

当T1工作在1T模式时,T1的溢出率=系统时钟/(65536-[RLTH1,RL_TL1]);即此时串口1的波特率=系统时钟/(65536-[RL_TH1,RL_TL1])/4。

说明:读者只需了解基本原理,实际应用时可直接使用STCISP软件进行设置。

3.使用T1作为波特率发生器——8bit自动重装模式(与传统8051兼容)

当串口1使用T1作为其波特率发生器且T1工作于模式2(8位自动重装模式)时,与传统的8051单片机完全兼容。此时串行口1的波特率

(2SMOD/32)×(定时器1的溢出率)

动一动

1.请读者给出,当T1分别工作在12T和1T模式时,串口1的波特率计算公式。

2.细心的读者可能会看到了,在波特率计算公式中存在“除以4”或“除以32”的情况,请读者查阅相关资料,回答为什么有这个设置?

3.请读者使用波特率计算器,给出要求如下的串口1初始化程序:系统时钟为11.0592MHz,使用T1作为波特率发生器,且T1工作在方式2、12T模式,要求波特率为19200kbit/s,串口1工作在方式1。

978-7-111-55685-5-Chapter06-8.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈