方式3波特率公式的计算公式里面除以32是什么意思

不管是什么单片机在使用串口通信的时候,有一个非常重要的参数:方式3波特率公式什么是方式3波特率公式:方式3波特率公式就是每秒传送的字节数。双方在传输数據的过程中方式3波特率公式一致,这是通讯成功的基本保障下面以STM32单片机为例,讲解一下串口方式3波特率公式的计算方法

2. STM32方式3波特率公式相关的寄存器

STM32单片机设置方式3波特率公式的寄存器只有一个:USART_BRR寄存器,如下图所示

该寄存器的有效位数为16位,前4位用于存放小数蔀分后12位用于存放整数部分。将方式3波特率公式算出来后数值填入这个方式3波特率公式就可以了。下面介绍如何计算

STM32的数据手册给絀了计算方法,有一个公式如下图所示:

在这个公式上,共有三个变量其中两个我们是知道的,Fck和Tx/Rx方式3波特率公式

前文说过USART_BRR的前4位存放小数部分,后12位存放整数部分

数据手册给我们提供了一张数据表:

在这张数据表上,已经算出了常用的方式3波特率公式值我们可鉯拿来直接用。但是如果我们想把方式3波特率公式的计算做成一个传参函数的方式如:USART_INIT(uint_t 16 Baud),在调用时只需要写USART_INIT(9600),USART_INIT(115200)那程序该怎么写呢?

下面介绍的是寄存器版的程序

程序第一步45行:先计算得到USART_DIV,这个就是前面公式的变形;程序第二步46行:获得USART_DIV的整数部分;程序第三步47行:获嘚USART_DIV的小数部分;程序第四步48行:将整数部分左移4位即存入BRR寄存器的后12位;程序第五步49行:将整数和小数部分合在一起,即前4位和后12位重噺组合;程序第六步50行:将计算出来的数值赋给BRR寄存器

这样一个将方式3波特率公式作为形参的函数就完成了。从以上来看的话方式3波特率公式的计算好像也不是很难啊。

  在串行通信中收发双方对發送或接收的数据速率要有一定的约定, 我们通过软件对MCS- 51串行口编程可约定四种工作方式其中,方式0和方式2的方式3波特率公式是固定的而方式1和方式3的方式3波特率公式是可变的,由定时器T1的溢出率决定

  串行口的四种工作方式对应着三种方式3波特率公式。由于输人嘚移位时钟的来源不同所以,各种方式的方式3波特率公式计算公式也不同

  1、方式0的方式3波特率公式

  方式时,移位时钟脉冲由56 (即第6个状态周期第12个节拍)给出,即每个机器周期产生一个移位时钟发送或接收一-位数据。所以方式3波特率公式为振荡频率的十②分之一, 并不受PCON寄存器中SIMOD的影响即:方式0的方式3波特率公式=fosc/12

  2、方式2的方式3波特率公式

  串行口方式2方式3波特率公式的产生与方式0不同,即输入时钏源的频率不同控制接收与发送的移位时钟由振荡频率Foec的第二节拍P2 (即]

  Foec/2)给出,所以方式2方式3波特率公式取決于PCON中smOD位的值,当SMOD=0时 方式3波特率公式为Foec的六十四分之- -若sMOD=1,则方式3波特率公式为Foec的三十二分之一即:方式2的方式3波特率公式=2smod/64*Foeco

  3、方式1囷方式8的方式3波特率公式

  方式1和方式3的移位时钟脉冲由定时器r1的溢出率决定,故波特宰由定时器T1的溢出率与sMOD值同时决定即:方式1和方式3的方式3波特率公式=2SMOD/32 -T1溢出率。

  其中溢出率取决于计数速率和定时器的预置值。计数速率与TMOD寄存器中c/T的状态有关当c/T=0时,计数速率=fosc/2;當C/T=1时计数速率取决于外部输入时钟频率。

  当定时器11作方式3波特率公式发生器使用时通常选用可自动装入初值模式(工作方式2),茬工作方式2中IL1作为计数用,而自动装入的初值放在TH1中设计数初值为x,则每过“256- -x”个机器周期定时器1就会产生一次溢出。 为了避免因溢出而引起中断此时应禁止1中断。这时溢出周期为:系统晶振频率选为11. 0592M1Z就是为了使初值为整数,从而产生精确的方式3波特率公式

  如果串行通信选用很低的方式3波特率公式,可将定时器T1置于工作方式0或工作方式1但在这种情况下,T1溢出时需用中断服务程序重装初徝。中断响应时间和执行指令时间会使方式3波特率公式产生一定的误差可用改变初值的办法加以调整,上表列出了 各种常用的方式3波特率公式及其初值

  总而言之,认识方式3波特率公式从定义开始逐步熟悉公式,每一-个点滴的知识小结总结到位,为以后的技术之蕗做好铺垫

  方式3波特率公式和字节的关系

  我们需要串口接收的数据数每秒512字节,串口的方式3波特率公式是115200位/秒

  如果没有校验位就应该除以10,得到的是每秒字节数:方式3波特率公式115200=115200(位/秒)=11520(字节/秒)

  再除以1024就是每秒KB数:方式3波特率公式115200=115200(位/秒)=11.25(KB/秒)也就是满足每秒可以接收512字节。

我要回帖

更多关于 方式3波特率公式 的文章

 

随机推荐