UART


UART

Universal Asynchronous Receiver/Transmitter,即通用异步收发传输器

UART是一种串行(串口),异步,收发协议.

作用:将并行数据转换成串行数据,所谓串行就是一位一位的传输.

像GPS模块,LCD显示器等就是使用UART串口通信.

为何说它是通用,异步的?

说它是“通用”的,是因为数据传输速度和数据字节格式都是可以配置的;

说它是“异步”的,是因为它并没有使用时钟来同步两个设备之间的数据传输.

硬件设备一般会在FIFO缓存区中收集数据,直到APP读取数据.

UART也是全双工通信,即可以同时发送和接收数据,它通常比I2C快,但是由于缺少共享时钟,因此两个设备必须协商好传输速度.

硬件连接

有两种方式:

  • 3线

  • 5线(硬件流控制)

    "uart-flow-control"

5线的模块新增了两个端口,一个是RTS(request to send),一个是CTS(clear to send)

软件通信协议

"uart-frame"

  • 空闲

    总线空闲的时候,处于高电平“1”

  • 起始位

    开始传输数据前,发送一个低电平“0”,表示开始传输字符的开始

  • 数据

    数据可以是5~8位,更少的位表示字符可以提升传输效率

  • 校验位

    可选的位,即可以不设置这个位.如果设置就是奇偶校验:

    • 奇校验(odd):数据位中“1”的个数是奇数,则为“0”,否则为“1”
    • 偶校验(even):数据位中“1”的个数是偶数,则为“0”,否则为“1”

    也存在仅作为标记作用的“1”位,和空的校验位“0”

  • 停止位

    数据结束标志,可以是1,1.5,2位的高电平

波特率(baud rate)

通过UART传输数据的速度叫做波特率.它表示发送/接收的速度,单位是bit/s

因为使用UART连接的两个设备并没有使用共享时钟,因此必须提升设置好波特率.

常见的波特率有 9600, 19200, 38400, 57600, 115200, 和 921600.

这个速率包括整个数据帧(起始位,数据位,校验位,停止位),因此实际有效的传输率比设置的低.


文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
linux使用fork方式创建进程 linux使用fork方式创建进程
代码#include <stdio.h> #include <unistd.h> int main() { printf("fork之前\n"); pid_t fpid; fpid = fork();
2020-06-15
下一篇 
ARM架构基础知识 ARM架构基础知识
Architecture 中文可以是体系结构,也可以是架构,我这里用架构 一些专业术语可以在本科课程/书籍《计算机体系结构》中找到. 三种配置 A-Profile(Applications) 性能最高,用于运行复杂的操作系统,比如Lin
2020-06-12
  目录