stm32波特率配置
定义:波特率指数据信号对载波的调制速率, 它用单位时间内载波调制状态改变次数来表示,单位为波特。比特率指单位时间内传输的比特数,单位 bit/s(bps)。对于 USART 波特率与比特率相等,以后不区分这两个概念。波特率越大,传输速率越快。
信号的传输速率正比于波特率,那信号的传输速率又取决于什么呢?
为得到一个信号真实情况,需要用一个比这个信号频率高的采样信号去检测,称为过采样
,这个采样信号的频率大小决定最后得到源信号准确度,一般频率越高得到的准确度越高,但为了得到越高频率采样信号越也困难,运算和功耗等等也会增加,所以一般选择合适就好。
接收器可配置为不同过采样技术
,以实现从噪声中提取有效的数据。 这个由控制寄存器 1 (USART_CR1)决定。由手册可以得到:
由此可见,可以采用
8倍采样
和16倍采样
两种模式。采样原理是下图所示:
8 倍过采样速度更快,最高速度可达
fPCLK/8
, fPCLK为 USART 时钟。使用第 4、 5、 6 次脉冲的值决定该位的电平状态。16 倍过采样速度虽然没有 8 倍过采样那么快,但得到的数据更加精准,其最大速度为fPCLK/16。使用第 8、 9、 10 次脉冲的值决定该位的电平状态。
那么fPCLK的时钟频率到底是多少呢?这要看USART挂载的时钟总线了。
其中USART1和USART6挂载在APB2下,即84MHz
其中USART2、USART3、UART4、UART5挂载在APB1下,即42MHz
这样,理论的波特率最大可以达到fPCLK/(8∗(2−OVER8))
,当16倍采样时,OVER8=0,当8倍采样时,OVER8=1;
那如果想要自己控制波特率的大小,就要设置另外一个寄存器:波特率寄存器 (USART_BRR)。功能如下: