STM32串口波特率大小计算

发布时间:2023-04-03  

波特率的计算
STM32 下的波特率和串口外设时钟息息相关,USART 1 的时钟来源于 APB2,USART 2-5 的时钟来源于 APB1。在 STM32 中,有个波特率寄存器 USART_BRR,如下:



STM32 串口波特率通过 USART_BRR 进行设置,STM32 的波特率寄存器支持分数设置,以提高精确度。USART_BRR 的前 4 位用于表示小数,后 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 这两条线进行通信的,当接收器的 RXD 连接着发送器的 TXD,接收器的 TXD 连接着发送器的 RXD,接收器和发送器可以通过 RXD 和 TXD 互传数据。当接收器检测到 RXD 这条线的电平被拉为低电平,立即开始接收发送器发送过来的数据,刚刚那个低电平只是一个告知接收器可以接收数据的起始位而已。

在数据的传输中,信号可能受到一些干扰而产生一些抖动,如下图。如果接收端只对这些信号数据采样一次,那么它有可能采样到的是抖动的不准的数据,进而使数据传输不准确,所以接收端在采样数据线上的数据,通常都要采样多次,然后通过比较获得准确的数据。



前面已经说过,USARTDIV,它表示对串口的时钟源 fck 进行分频,而这 16 表示的正是 1bit 数据的采样次数。为什么呢?



将这个表达式的分子分母倒过来,可以得到下面这条表达式



每一位的传输时间只有 1/TX_baud,这个总时间除以 16,所以每采样一次的时间正好是 T1,即新分频后的周期。而初始的串口时钟信号来自于 APBx,APBx 时钟信号需要经过分频才会等于 T1,所以才需要分频 USARTDIV。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    STM32单片机的串口波特率计算方法;1. 什么是波特率 不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率......
    可以通过观察板子P0 口上的对应的LED 指示出来。 五、总结 本讲介绍了单片机串口通信的原理并给出了实例,通过该讲,读者可以了解和掌握51 单片机串口通信的原理与应用流程,利用串口通信,单片机可以与计算......
    STM32单片机的串口通信波特率计算方法;1. 什么是波特率 不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率波特率就是每秒传送的字节数。双方......
    8051单片机波特率计算公式;8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON<7>......
    方完全达到同步。 九、RS-232电平与TTL电平的转换 一般使用MAX232实现电平转换 十、波特率与定时器初值的关系 1、波特率单片机或计算机在串口通信时的速率用波特率表示,它定......
    STC89C52RC串口波特率程序;一、完整代码如下:C#include#define uchar unsigned char #define uint unsigned int void send......
    工具,想用哪个定时器,哪个定时方式,多大的晶体,多长的延时,输入你的要求,自动计算出来! 第5款:51单片机波特率计算工具,功能虽然不算多,但完全足够了,输入波特率或者晶振频率再点击计算......
    深入理解51单片机串口通信及通信实例;  串口通信的原理   串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并......
    ,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了。STM32与51单片机串口通信相关实例,请移步此处:STM32与51单片机串口通信实例。 若是芯片与PC机(或上......
    在接收到的信息的RB8位必须是1(表明是地址))   串口波特率计算: 方式0的波特率为晶振频率的1/12。 方式2的波特率为:波特率=(2SMOD/64)×fosc 方式1和方式3的波特率......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>