STM32
直播中

李进锋

7年用户 918经验值
私信 关注
[问答]

怎样去使用USART(串口通信)呢

USART是指什么?USART与SART的区别在哪?怎样去使用USART(串口通信)呢?

回帖(1)

段朝思

2021-12-8 14:29:33
STM32学习笔记—02—USART(串口通信)

2.USART功能框图介绍

USART是指通用同步异步收发器,是一个串行通信设备,可以进行全双工数据交换(同时进行数据发送和接受),与SART的区别在于:在USART的基础上裁剪了同步通信功能,只有异步通信。








  • 2.1 功能介绍
    TX:发送数据输出引脚
    RX:接受数据输入引脚
    SCLK:时钟,仅同步通信时使用
    nRTS:请求发送(Request To Send)
    nCTS:允许发送(Clear To Send)
    后三者仅USART才有,UART不具备





    应该注意的是UASRT1是挂在APB2高速时钟线上的,其他都是APB1低速时钟线上,配置的时候,开启时钟应该特别注意。
  • 2.2数据寄存器(USART_DR)

USART_DR:只有9位有效,并且第 9 位数据是否有效要取决于USART_CR1的M位设置,当 M 位为 0 时表示 8 位数据字长,当 M位为1表示9位数据字长,我们一般使用 8 位数据字长。USART_DR包含一个发送数据寄存器TDR和一个接收数据寄存器RDR。一个地址对应了两个物理内存。TDR 和 RDR 都是介于系统总线和移位寄存器之间。串行通信是一个位一个位传输的,发送时把 TDR 内容转移到发送移位寄存器,然后把移位寄存器数据每一位发送出去,接收时把接收到的每一位顺序保存在接收移位寄存器内然后才转移到 RDR。



  • 2.3控制器(USART_CRx:x=1~3):主要是CR1;CR2用于配置时钟(USART一般我们使用并行通信),CR3用于硬件流控制。
    使用USART的流程:
    ①先向USART_CR1寄存器的UE位置1使能USART,UE 位用来开启供给给串口的时钟;
    用作发送时,数据从CPU或DMA中读取,放到发送数据寄存器TDR中,然后TDR把数据转移到发送移位寄存器,然后通过发送移位寄存器(8位数据)一位一位的通过TX发送出去。
    ②-1、USART_CR1寄存器的TE位置1,发送使能,启动数据发送
    ②-2、当发送数据寄存器TDR中的数据全部转移到发送移位寄存器时,USART_SR的TXE位置1表示数据已经被转移到发送移位寄存器,则CPU可以继续发送下一个数据,如果为0,表示数据还没有全部转移到发送移位寄存器,则CPU不能继续发送数据,但是TXE位置1不表示数据已经发送出去啦,只是代表数据全部发送给了发送移位寄存器。小结:USART_SR的TXE位监测发送数据寄存器TDR。当需要使用发送缓冲区中断时,可以配置USART_CR1的TXEIE(发送缓冲区中断使能)位。
    ②-3、发送移位寄存器中的数据发送完成才表示数据全部发送,此时USART_SR的TC位置1,表示数据发送完成。小结:USART_SR的TC位监测发送移位寄存器。当需要使用发送完成中断时,可以配置USART_CR1的TCIE(发送完成中断使能)位。
    用作接收时,数据通过RX从外部来,一位一位的接收,先放到接收移位寄存器,再转移到接受数据寄存器RDR中,然后读取到CPU或者DMA内部去。
    ③-1、USART_CR1寄存器的RE位置1,接收使能,并开始搜寻RX引脚上的起始位。
    ③-2、当数据转移到接受数据寄存器RDR时,USART_SR的RXNE位置1表示收到数据,CPU或者DMA可以过来读取数据。当需要使用接收完成中断时,可以配置USART_CR1的RXNEIE(接收完成中断使能)位。
  • 2.4波特率
    计算方法可以参考:STM32f10x中文参考手册的524页。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分