• 【嵌入式开发】UART


    目录

    一、概述

    1.1 常见的通信类别/特点

    1.2 常见几种通信

    二、UART通信协议

    2.1 UART通信介绍

    2.2 UART通信协议

    物理连接示意图:

    三、STM32的UART接口

    3.1 STM32的UART特点

    3.2 STM32的UART框图分析

    3.3 UART初始化步骤

    3.4 STM32中UART使用


    一、概述

            通信时需要关注 总线构成(硬件) 和 通信协议(软件)。

    1.1 常见的通信类别/特点

            同步:指的是通信双方步调一致,一般需要通过时钟线连接双方的时钟。

            一方作为主机控制时钟(控制通信速度),另一方作为从机接收时钟。

            异步:通信双方的时钟是彼此独立的(也没有时钟线连接),一般需要使通信双方达到相同的速度。  即规定双方的波特率(bits / s)一致。

            串行:数据线只有1或2根,每次只能传输1位数据。

    并行:数据线一般有8或16,每次可以传输多位数据。

            半双工:通信双方均可以给对方发送数据,但同一时间只能一方发送、另一方接收。

    一般是因为数据线只有一组,所以同一时间,只有一方控制数据线。

            全双工:通信双方可以同时给对方发送数据,并同时接收对方发送的数据。一般是

            因为有多组数据线,所以同一时间,双方都可以控制自己发送数据的那组线。

    1.2 常见几种通信

    结合总线构成,判断其特点:

    UART: Tx , Rx 异步、串行、全双工

    IIC:  SCL , SDA 同步、串行、半双工

    SPI:  SCK , MOSI , MISO 同步、串行、全双工

    二、UART通信协议

    2.1 UART通信介绍

            通用异步收发器UART(Universal Asynchronous Receiver/Transmitter),是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。

            一般将UART通信描述为异步串行通信,即串口通信,包括RS232、RS485、RS422、TTL等。 以上这些都属于串口通信,其区别是电平规范、硬件实现不同。

            所以若两个设备实现串口通信,但是由于硬件原因,使用了不同的电平规范,则需要在通信中使用电平转换芯片。例如有CH340芯片(TTL和USB电平转换),用于STM32芯片和电脑进行串口通信。

    2.2 UART通信协议

            UART作为异步串行通信协议的一种,工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中,信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。由于异步通信两个uart设备之间通信的时候时钟线,这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。

            通信速度:双方一致即可,单片机中常用波特率 1200、2400、4800、9600、19200、38400、115200

            常用波特率一般有以下特点:能够用单片机波特率生成器生成,误差率小;在能接受的误差范围内,波特率较大。

            数据帧格式:一帧数据构成, 1位起始位 + 5~8位数据位 + 0~1位校验位 + 0.5/1/1.5/2位停止位

            起始位:1位低电平,标志一帧数据开始

            数据位:5~8位,传输的有效数据

            校验位:0~1位,无校验/奇校验/偶校验(数据位和校验位中逻辑’1’个数)

            停止位:0.5/1/1.5/2位高电平,标志一帧数据结束

            通信双方对一帧数据的规定必须一致。

            传输数据方向:先传送数据低位,一对一通信。

    物理连接示意图

    三、STM32的UART接口

    3.1 STM32的UART特点

    ● 全双工异步通信

    ● 发送器和接收器具有单独使能位

    ● 传输检测标志:(标志一般对应外设寄存器中的某个位,通过这个位的状态 检测外设工作状态)

    — 接收缓冲区已满

    — 发送缓冲区为空

    — 传输结束标志

    ● 奇偶校验控制:

    — 发送奇偶校验位

    — 检查接收的数据字节的奇偶性

    ● 十个具有标志位的中断源:

    — CTS 变化

    — LIN 停止符号检测

    — 发送数据寄存器为空

    — 发送完成

    — 接收数据寄存器已满

    — 接收到线路空闲

    — 溢出错误

    — 帧错误

    — 噪声错误

    — 奇偶校验错误

    3.2 STM32的UART框图分析

    3.3 UART初始化步骤

            1、将使用到GPIO引脚复用为相应的UART的Tx和Rx(引脚初始化)

            2、UART外设初始化(激活UART、数据帧设置、发送/接收器使能、UART使能),在stm32f4xx_rcc.c , stm32f4xx_gpio.c , stm32f4xx_usart.c 找到实现以上功能的函数

    3.4 STM32中UART使用

            通过对数据寄存器进行写操作,控制发送的内容。当接收数据后,通过对数据寄存器及逆行读操作,读出接收的内容。发送和接收控制使能是独立的,但是发送和接收的速度是一致的实现UART通信时,也会有GPIO配置【GPIO是芯片和外界数据交流的唯一通道】由于此时相应的GPIO引脚需要作为另一片上外设UART的发送/接收引脚(Tx/Rx),故将相应的引脚配置为复用模式,且将之具体复用为相应UART的Tx和Rx。

    注意:串口助手的设置,如波特率、停止位、数据位、校验位等,必须要和STM32程序中设置匹配。

  • 相关阅读:
    手机 IOS 软件 IPA 签名下载安装详情图文教程
    【C语言】qsort函数
    一文带你深入浅出C语言动态内存分配
    requests模块高级用法练习
    Nginx 变量
    Destoon采集翻译伪原创发布工具
    Java这些最基础的知识,你还记得多少?
    <C++>【入门篇】
    环境安装篇 之 golang环境安装
    Ubuntu下发送邮件
  • 原文地址:https://blog.csdn.net/xiaoyingxixi1989/article/details/139870932