usart学习笔记

usart通用同步/异步串行收发器。相对于普通uart而言它的功能更加强大。在stm32中集成了usart控制器,它不仅支持普通的异步串行通信(uart功能)同时还具有LAN总线功能(局域互联网功能)、IRDA(红外通信)和Smartcard(智能卡)功能。

异步通信数据格式:起始位,数据位(最低为5位最高为9位),奇偶校验位 ,停止位

相关硬件知识:

一般情况下,串口通信所采用的芯片为max3232芯片,作为收发的gpio管脚通过此芯片连接到串口接口DB9的针脚上,其中gpio_tx接第三针脚,gpio_rx接DB9的第2针脚。

这样的接线方式和pc机的串口接线方式相同。因此如果将stm32开发板与pc机的串口相连。需要使用交叉线。还有一种接线方式为gpio_tx接第二针脚,gpio_rx接第三针脚。这样在和pc的串口进行通信的时候就必须接直通串口线。




以上是stm32串口的硬件接口,从图上可以看出stm32的usart非常复杂,可以大致分为三个部分:波特率控制部分、收发控制部分、数据存储和转移部分。

1.波特率的控制:

波特率的控制是通过串口时钟源来控制的。通过控制改变串口时钟源就能够改变相应的波特率。因此这里设置了USART_BRR寄存器,该寄存器的功能就是用来设置串口时钟频率的分频值(USARTDIV),它有两部分组成分别为整数部分DIV_Mantissa和小数部分DIV_Franction。USARTDIV = DIV_Mantissa+(DIV_Fraction/16)。

在stm32系列单片机中USART1挂接在APB2上,因此它的时钟源为FPCLK2。USART2挂接在APB1上,它的时钟源为FPCLK1。串口时钟源通过USARTDIV分频后分别输出作为发送器时钟和收发器时钟。控制发送和接收的时序。

2.收发控制

收发控制部分是串口模块的重要的组成部分,包括3个控制寄存器分别为CR1, CR2 , CR3和一个状态寄存器SR。通过写控制参数到这三个控制寄存器可以改变串口的一些模式设置,例如,停止位,奇偶校验位,数据字长等一些重要通信参数。串口的一些状态则可以通过SR寄存器获取到。


3.数据存储和转移部分:

这部分包括数据寄存器TDR/RDR和移位寄存器。通过对收发控制部分的配置,这部分则按照配置好的参数进行工作。

数据发送:当有数据需要发送,内核或者DMA将内存中的数据写入到TDR寄存器,发送控制器将适时的将数据加载的移位寄存器中,当数据完全加载到移位寄存器时,然后通过串口线_tx将数据一位一位的发送出去。在数据从TDR转移到移位寄存器中时,会产生一个事件叫做TXE(数据寄存器已空事件)。当数据发送完毕的时候会产生发送完成事件TC。

数据接收:接收数据为发送数据的逆过程,数据一位一位的接收到移位寄存器中,在加载到RDR寄存器。然后通过内核或者DMA拷贝到内存。供应用程序使用。


你可能感兴趣的:(嵌入式开发)