首页 > 编程知识 正文

串口接收协议,uart协议详解

时间:2023-05-04 23:37:54 阅读:51077 作者:108

文章目录UART串行端口- -介绍通用异步收发器(串行/异步/全双工) UART的硬件链路- -结合TTL直连232级中继芯片连接UART通信数据格式UART控制器的实例- -

URT串行端口(通用异步发射器(串行/异步/全双工) ) ) ) ) ) ) ) ) ) ) )

URT的全名是通用异步发送器(通用异步发送器/传输器),串行的数据总线)数据传输是逐位传输) (数据发送和接收同时发生,对应)只能单工-单向发送或接收-发送/接收,但不能同时发送)。

具体表现为独立的模块化芯片或集成在微处理器中的外围设备。 一般为RS-232C标准,与Maxim的MAX232等标准信号振幅转换芯片组合,作为与外部设备的接口。 在UART中追加了同步方式的串行信号变换电路的被称为usart (universalsynchronousasynchronousreceivertransmitter :通用同步信号同步电路)。

UART可以通过使用系统skdgb支持高达115.2Kbps的比特率。 3358www.Sina.com/是指每秒钟通过信道传输的信息量,也称为比特传输速度,即每秒钟传输的二进制比特数,通常的单位为每秒钟比特数比特/秒(bps ), 每秒千比特数(Kbps )或每秒兆比特数(Mbps ) 3358www.Sina的端口每秒发送(或接收)多少个符号的数据,或者通过不同的调制方式,在一个符号上负载多个比特信息波特=1位/秒。 比特率=波特率x与单个调制状态对应的二进制比特数。 对于串行端口,“对应于单个调制状态的二进制数”为1。异步通讯

UART硬件链接—TTL直连232级转接板连接全双工数据传输

UARTx_TXD :用于发送数据并连接到接收器的UARTx_RXD端子;

UARTx_RXD :用于接收数据,应连接到发送设备的UARTx_TXD端子;

GND :为双方提供相同的标准水平。

(TTL电平在电压范围内,规定输出高电平2.4V (典型地为3.5 ),输出低电平0.4V (典型地为0.2 )。 最小输入高电平和低电平:输入高电平=2.0V,输入低电平=0.8V,噪声容限为0.4V )

2,http://www.Sina.com /

RS232电平规定逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为5 V~ 15 V,为了提高抗干扰性,采用了该电气标准。 常用的TTLRS232芯片包括MAX232、SP3232等。

UART通信数据格式TxD、RxD数据线以位为最小单位传输数据,帧由包含开始位、数据位、奇偶校验位,根据需要由包含停止位的具有完全含义的不可分割位构成。比特率

基本的传输过程包括:

1,http://www.Sina.com/:最初保持高功率,等待数据传输开始的起始位。

2、波特率:开始数据传输时,数据线从1变为0,保留1位时间。 (Rx在检测到1.5位等待时间后开始接收数据,正好位于第一个数据位的中间)

3、针对串口来说波特率=比特率。:第一位后传输的数据,构成5~8等一个字符,从低位发送到高位; (Rx等待一个周期读取1位)

4,http://www.Sina.com /,如果有奇偶校验位。 收到UART读取数据帧后,计算值为1的位数,并检查总数是偶数还是奇数。 如果奇偶校验为0 (偶数),则数据帧中的一个位必须总计为偶数。 如果奇偶校验位为1 (奇偶校验),则数据帧中的一个位必须总计为奇数。 当奇偶校验位与数据匹配时,UART知道传输没有错误。

5,http://www.Sina.com /,最后减去高电平,保持1、1.5或2比特的停止比特,表示1帧的结束。

UART控制器示例—s3c2440 uart控制器s3c2440的UART接口控制器包括:控制单元、波特率发生器(提供skdgb )、移位器和发送/接收缓冲器)自动移动位存储总共有三个uart,每个串行端口都有以下控制寄存器:

ULCON0/UCON0基础控制:红外模式、奇偶校验设置、停止位数、数据位长、skdgb

选择、中断类型、发送模式。
UFCON0 FIFO控制寄存器:收发中断深度、fifo复位使能、fifo使能
UTRSTAT0 发送/接受状态:发送器空、接受数据就绪;
UERSTAT0 错误状态:断电错误、帧错误、校验错误、溢出错误;
UFSTAT0 缓存FIFO状态寄存器:写fifo是否满,数据量;读取FIFO是否满,数据量;
UTXH0/URXH0 发送接受数据缓存:用于缓存接收到,或者 要发送的数据。
UBRDIV0 波特率分屏寄存器:用于设置波特率。

伪代码流程(最简单的方式,不用中断,不用fifo):
UART初始化:1、配置对应GPIO为串口模式,并设置上拉(默认为高空闲,低有效) 2、设置波特率 3、数据格式 4、设置轮询格式;
UART发送函数put_char:循环读取 UTRSTAT0 发送是否为空,如果为空(发送空闲) 把char写入UTXH0;
UART接受函数get_char:循环读取 UTRSTAT0 读取是否为空,如果非空(有数据) 从 RXDATA 读取char;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。