UART串口协议简单总结

文章目录

        • UART串口 ---通用异步收发传输器(串行/异步/全双工)
        • UART的硬件链接---TTL直接连接 / 配合232电平转接芯片连接
        • UART 通讯数据格式
        • UART控制器举例介绍---s3c2440 uart控制器

UART串口 —通用异步收发传输器(串行/异步/全双工)

UART 全称是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),属于一种串行的数据总线(数据传输是一位接一位传输),属于异步通讯(串行通信不需要同一个时钟,依赖双方约定波特率和起始结束标志),同时支持全双工数据传输(发送和接收数据在同时发生,对应:单工-只能单方向发或接收 半双工-可以发/接但不能同时)。
具体实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备。一般是RS-232C规格的,与类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配,作为连接外部设备的接口。在UART上追加同步方式的序列信号变换电路的产品,被称为USART(Universal Synchronous Asynchronous Receiver Transmitter)。

UART 通过使用系统时钟可以支持最高 115.2Kbps 的比特率。
比特率 指每秒钟通过信道传输的信息量,也称为位传输速率,即每秒钟传送的二进制位数,常用的单位有每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)
波特率设备在一秒钟内发送(或接收)了多少码元的数据,它是对符号传输速率的一种度量,表示单位时间内传输符号的个数(传符号率)。波特一秒钟内发送(或接收)了多少码元,的数据而通过不同的调制方式,可以在一个码元符号上负载多个bit位信息。1波特=1位/秒。比特率=波特率X单个调制状态对应的二进制位数。对于串口来说,“单个调制状态对应的二进制位数”为1。针对串口来说波特率=比特率。

UART的硬件链接—TTL直接连接 / 配合232电平转接芯片连接

1、(最简单)直接TTL电平三线直接连接。
UARTx_TXD:用于发送数据,应连接到接收设备的 UARTx_RXD 引脚上;
UARTx_RXD:用于接收数据,应连接到发送设备的 UARTx_TXD 引脚上;
GND:为双方提供一个相同的参考电平。
(TTL电平是个电压范围,规定输出高电平>2.4V(典型3.5),输出低电平<0.4V(典型0.2)。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V)
UART串口协议简单总结_第1张图片
2、TTL 电平转 RS232 电平,外接辅助芯片,提高抗干扰能力
RS232 电平规定逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为+5 V~+15 V,选用该电气标准以提高抗干扰能力。常用的 TTL 转 RS232 芯片有:MAX232,SP3232 等。
UART串口协议简单总结_第2张图片

UART 通讯数据格式

TxD、RxD数据线以位为最小单位传输数据,而帧由具有完整意义的、不可分割的若干位组成,包含开始位、数据位、校验位(需要的话)和停止位。发送数据之前,UART之间要约定好数据的传输速率(即每位所占据的时间,其倒数称为波特率)、数据的传输格式(即有多少个数据位、是否使用校验位、是奇校验还是偶校验、有多少个停止位)。

UART串口协议简单总结_第3张图片
基本传输流程如下;
1、空闲状态:一开始保持高电,等待数据传输开始发出的开始位。
2、起始位:当要开始传输数据后数据线的由1变为0,保持一位的时间。(Rx检测到等待1.5位的时间后开始接收数据,刚好在第一个数据位中间)
3、数据位:起始位之后便是传输的数据,可以是5~8等,构成一个字符,从低到高位发送;(Rx等待1个周期读取一位)
4、校验位,如果有校验位的话。接收UART读取数据帧后,它会计算值为1的位数,并检查总数是偶数还是奇数。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位是1(奇校验),则数据帧中的1位应总计为奇数。当奇偶校验位与数据匹配时,UART知道传输没有错误。
5、停止位,最后就是拉高电平,保持1、1.5或者2位的停止位,表示一帧的结束。

UART控制器举例介绍—s3c2440 uart控制器

s3c2440的uart接口控制器如下,包含控制单元,波特率发生器(提供时钟),移位器和发送接受缓冲器(用于自动移动位保存或者发送寄存器)。一共有3个uart,每个串口具备的控制寄存器如下:
ULCON0 / UCON0 基础控制:红外模式、奇偶校验设置、停止位个数、数据位字长度、时钟选择、中断类型、发送模式。
UFCON0 FIFO控制寄存器:收发中断深度、fifo复位使能、fifo使能
UTRSTAT0 发送/接受状态:发送器空、接受数据就绪;
UERSTAT0 错误状态:断电错误、帧错误、校验错误、溢出错误;
UFSTAT0 缓存FIFO状态寄存器:写fifo是否满,数据量;读取FIFO是否满,数据量;
UTXH0/URXH0 发送接受数据缓存:用于缓存接收到,或者 要发送的数据。
UBRDIV0 波特率分屏寄存器:用于设置波特率。
UART串口协议简单总结_第4张图片
伪代码流程(最简单的方式,不用中断,不用fifo):
UART初始化:1、配置对应GPIO为串口模式,并设置上拉(默认为高空闲,低有效) 2、设置波特率 3、数据格式 4、设置轮询格式;
UART发送函数put_char:循环读取 UTRSTAT0 发送是否为空,如果为空(发送空闲) 把char写入UTXH0;
UART接受函数get_char:循环读取 UTRSTAT0 读取是否为空,如果非空(有数据) 从 RXDATA 读取char;

你可能感兴趣的:(ARM嵌入式类)