首页 > 编程知识 正文

51串口波特率计算公式,串口通信常用波特率

时间:2023-05-04 01:38:34 阅读:136164 作者:2491

STM32中波特率计算方式的解释:波特率的计算

STM32的波特率密切相关于串行外围设备的时钟,USART 1的时钟源自APB2,并且USART 2-5的时钟源自APB1。 STM32具有波特率寄存器USART_BRR,如下所示:

STM32串行端口速率由USART_BRR设置,STM32的端口速率寄存器支持分数设置以提高精度。 USART_BRR的前四位表示小数,后12位用于表示整数。 但那还不是我们想设置的波特率,要设置我们串行端口的波特率大小还需要计算。 实际上波特率的计算如下式。

根据以上公式,引入了新量的USARTDIV,它表示对串口的时钟源fck进行分频。 假设知道波特率和fck时钟频率的大小,可以根据上式算出USARTDIV的具体大小,根据USART的值的大小设定波特率寄存器。

根据上面的表达式,可以看出USARTDIV是一个带有小数的浮点数(例如27.75 )。 划分小数部和整数部,分别得到整数值n (例如27 )和小数值m (例如0.75 )。 有了这两个值,就可以填写USART_BRR寄存器,设置串行端口波特率的大小。

将整数部分m(27=0x1b )直接写入USART_BRR低位12位部分; 将小数部分n乘以16的整数值,例如0.75 x 16=12=0xC,写入USART_BRR的前4位部分,最后的USART_BRR的值为0x1BC。

注意:如果小数部分乘以16仍有小数,请将小数部分四舍五入以获得新整数,并将其写入USART_BRR的前四位。

为什么在计算波特率的公式中要乘以16?

据了解,串行通信通过TXD和RXD两条线路进行通信。 发射器的TXD连接到接收器的RXD,发射器的RXD连接到接收器的TXD,接收器和发射器可以经由RXD和TXD相互发送和接收数据。 当接收机检测到RXD线的电平被拉到低电平时,它立即开始接收发送器传来的数据。 正好其低电平只是告知接收机可以接收数据的开始位。

在数据传输中,可能会出现一些信号干扰和抖动,如下图所示。 当接收侧只采样一次这些信号数据时,由于对抖动不准确的数据进行采样,数据传输可能变得不准确,所以接收侧的采样数据线上的数据通常被多次采样,通过比较可以获得准确的数据

如上所述,为3358 www.Sina.com/http://www.Sina.com /,这16正好表示1比特数据的采样次数。 为什么呢?

中选择所需的族。 如果将该公式的分子分母取反,可以得到以下公式

因为每个位的传输时间仅是1/TX_baud,该总时间除以16,所以每个采样的时间正好是T1,即新分频周期。 初始串行时钟信号来自APBx,并且为了使得APBx时钟信号等于T1,它必须要对其进行分频,以便对USARTDIV进行分频。

正文链接: http://www.cn blogs.com/c posture/p/4268910.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。