前言:通信是学习单片机必不可少的的一个环节,通信的方式有很多,本小结先介绍最基本的一种通信方式,以便于了解单片机的通信的模式。
一、USART的基本介绍
通用同步异步收发器
(USART)
进行全双工数据交换。
USART
利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信,
它还允许多处理器通信。 使用多缓冲器配置的DMA
方式,可以实现高速数据通信。
二、一些基本的名词解释
1.
全双工与半双工:全双工是指两个通信端可以同时进行收发数据的模式,一般会有两根通信线TX与RX。半双工是指通信只能由一方传到另一方,另一方接收之后才能进行回应,即通信线上只能同时进行一个方向的数据传输。
2.
电平标准:单片机之间是通过高低电平的变化来传递数据的,这个高低电平的值是需要一个标准统一的。如下图(来自江协科技)
![](https://i-blog.csdnimg.cn/blog_migrate/7a5809215b625e80db8367c0ebbf4371.png)
3.一些串口的参数
![](https://i-blog.csdnimg.cn/blog_migrate/6ae6191b6a35452eb4d6d18b9ce42f2e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9fbdf769f6b516d98d0aaedd3d27e3f4.png)
单片机空闲状态时一定是高电平,起始位一定会跳到低电平用于告诉单片机,我要发送数据了。然后进入数据位,高低电平跳变传输数据。然后接一个校验位,最后跳到高电平,通讯停止。
三、USART原理框图
先看左上角的TX与RX两个引脚,它们的作用就是TX发送数据,RX接收数据。然后数据进入上方的寄存器当中,移位寄存器的作用就是将数据一位一位地发送出去,对应的就是数据位的高低电平变化。而最上方的两个寄存器就是储存我们程序写入的数据(即准备发送的数据),和储存从别人那里接收来的数据。最下面的波特率控制器用于设置TX与RX引脚信号传输的波特率。
Tx / Rx
波特率 =
f
CK/16( USARTDIV
)
这里的
f
CK
是给外设的时钟
(PCLK1
用于
USART2
、
3
、
4
、
5
,
PCLK2
用于
USART1)
USARTDIV
是一个无符号的定点数。这
12
位的值设置在
USART_BRR
寄存器。
四、USART同步模式(最常使用的模式)
通过在
USART_CR2
寄存器上写
CLKEN位选择同步模式,
CK
脚是
USART
发送器时钟的输出。在起始位和停止位期间,CK
脚上没有时钟脉冲。根据
USART_CR2
寄存器中
LBCL
位的状态,决定在最后一个有效数据位期间产生或不产生时钟脉冲。
因为
CK
是与
TX
同步的
(
根据CPOL和
CPHA)
,所以
TX
上的数据是随CK同步发出的。
![](https://i-blog.csdnimg.cn/blog_migrate/3e5bcd72e9a283a29c34eb1bc15d91b1.png)
以上为同步模式的时钟时序,具体可看手册530页