关于STM32的USART串口通信——异步全双工(1)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、通信接口USART/UART介绍
  • 二、UART异步通信方式引脚连接
  • 三、串口异步通信传输数据帧所需参数
  • 四、USART串口通信底层寄存器控制流程

  • 前言

    作为一个嵌入式初学者,初来驾到,记录一些自己学习的粗浅理解,供自身知识回顾,也希望能供各位参考一二,若有错误还望各位谅解。
    个人精力有限,且理解还粗浅,故分段讲解。

    一、通信接口USART/UART介绍

    STM32F10X芯片,包含3个USART(USART1、USART2、USART3)和2个UART(UART4、UART5)。
    其中USART是通用同步/异步收发器,而UART是通用异步收发器。
    在以下运用中,只介绍USART作为异步全双工串口通信使用,即UART模式,在此以USART1具体。
    

    二、UART异步通信方式引脚连接


    -RXD:数据输入引脚。数据接受。USART1的RXD引脚为PA10。
    -TXD:数据发送引脚。数据发送。USART1的TXD引脚为PA9。

    三、串口异步通信传输数据帧所需参数

    根据函数USART_Init,可知传输的数据帧所需参数
    1.起始位。(无需设置)
    2.数据位:8位或9位。
    3.奇偶校验位:奇偶校验一旦使能,在发送数据的 MSB 位插入经计算的奇偶位(字长 9 位时的第 9 位,字长 8 位)。
    4.停止位:在帧结尾传输0.5或1或1.5或2个停止位
    5.串口波特率:传输速率
    6.收发模式:指定了使能或者失能发送和接收模式
    7.硬件流控制:此处还未深入理解,故采用硬件流控制失能(USART_HardwareFlowControl_None)

    四、USART串口通信底层寄存器控制流程

    现在我们看下USART串口通信到底是如何运转的。(个人拙见)

    1.对于数据输入:数据从RX接口进入,到接收移位寄存器,一位一位移位寄存后,写入接收数据寄存器(RDR),内核通过读操作进行读取接收数据寄存器(数据缓冲器)中数据。
    2.对于数据输出:内核通过写操作写入发送数据寄存器(TDR),将数据一次性发送给发送移位寄存器,由发送移位寄存器一位一位从TX接口输出。
    3.接收器控制和发送器控制分别通过接收器时钟和发送器时钟,来控制接收移位寄存器和发送移位寄存器。接收器时钟和发送器时钟同源,故接收器控制和发送器控制共用波特率发送器。(其中接收器控制还对中断控制USART进行控制)
    4.由于APB2外设采用的是PCLK2时钟,而APB1外设采用的是PCLK1时钟。

    由图可知USART1是挂在APB2上的,故PCLK2。
    fPCLK2/USARTDIV(USARTDIV由USART_BRR进行配置),然后再/16,从而产生发送器时钟和接收器时钟,即产生波特率。
    5.USART_SR寄存器为状态寄存器:是很多标志位,CR1寄存器为控制寄存器:包含很多使能位,其中也包含中断使能。

    后续“USART串口通信——异步全双工”部分在下一节进行讲解。

    作者:愿瓶

    物联沃分享整理
    物联沃-IOTWORD物联网 » 关于STM32的USART串口通信——异步全双工(1)

    发表回复