串口波特率的理解

一、基础知识

1.1 bit与byte

bit就是位,也叫比特位,是计算机中最小的单位;
byte是字节,也就是B;
1字节(byte)=8位(bit)既
位只有两种形式0和1,只能表示2种状态,而字节是有8个位组成的。可以表示256个状态。
1byte = 8 bit, 1KB= 1024 byte, 1MB = 1024 KB, 1G = 1024 MB, 1T = 1024 G。

1.2 波特率概念

1)比特率:9600bps ,其表示每秒传输9600bit,也就是相当于每一秒中分成了9600等分。
例如:那么每1bit的时间就是1/9600秒=104.16666666666666666666666us,约0.1ms。既大约每0.1ms发送1bit位,发送9600份。

2)帧格式,帧间隔
在PC设置端口时,默认格式是:1个起始bit,8个数据bit,1个停止bit,无校验等。则实际:10bit为一帧数据。一秒钟可以发送9600/10=960个帧,也就是960个字符,因为一帧数据只有一个数据位8bit,即为一个字符。

3)串口通讯
串口当然可以连续,没有时间间隔地发送帧,默认情形下电脑在9600bps下可以发送960帧。
但在实际工作中,在异步通讯下,一般需要一个交互过程,所以,电脑发送一个帧,或者若干帧,还需要等待从设备的应答,并不是一直发送的。有问有答地实现编程者的目标。在stm32中常用中断方式进行数据发送接收。

4)波特率时钟
实际上是比特率时钟,每1bit所要花费的时间周期。而波特率(实际是比特率)发生器生成的分频时钟实际是对每1bit进行采样的时钟,它是波特率时钟的16倍。

波特率发生器实质是设计一个分频器,用于产生和RS232通信同步的时钟。在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。该计数器一般工作在一个频率较高的系统时钟下,当计数到N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此反复即可得到占空比50%的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和N的大小。如系统时钟频率是40MHz,要求波特率是9 600,则16倍波特率时钟的周期约等于260个系统时钟周期,则计数器取260/2=130时,当计数溢出时输出电平取反就可以得到16倍约定波特率的时钟。

也可以这么理解:40mhz晶振,最小计数脉冲是25ns,16倍波特率的频率就是169600,其时钟周期就是 1/(169600)=6.5us也就是以40mhz晶振作为输入的话,计数器需要计数=6500/25=260 个计数。9600波特率也可理解为一种波特时钟频率,即1秒钟计数9600个,如果是16倍波特率时钟,即直接相乘就可以了。就是1秒计数9600*16=153600。

1/(960016)除以(1/40000000)也就是以时钟周期除了最小时钟周期得到的就是计数的个数。简化而言就是40000000/(960016)=260,也就是频率直接相除就得到要分频计数器计数的个数。

根据引用\[1\]中提供的公式,计算UART的波特率需要知道串口时钟频率和所需的波特率。首先,根据引用\[1\]中的例子,假设串口时钟频率为90M,需要得到115200的波特率。根据公式USARTDIV = 串口时钟频率 / (波特率 * 16),我们可以计算出USARTDIV的值为48.828。然后,根据公式DIV_Fraction = USART的小数部分 * 16,我们可以计算出DIV_Fraction的值为9。最后,根据公式DIV_Mantissa = USART的整数部分,我们可以计算出DIV_Mantissa的值为48。因此,设置串口的BRR寄存器值为0X30D,就可以得到115200的波特率。 #### 引用[.reference_title] - *1* [24.UART串口通讯框图、波特率计算方法](https://blog.csdn.net/YOURUOLI/article/details/123140492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [UART 波特率选择的认识与理解](https://blog.csdn.net/qq_34430371/article/details/120462664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [UART总结与波特率计算方法](https://blog.csdn.net/qq_42848805/article/details/129175751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值