协议类接口

一、何为协议类接口?

双方约定信号的协议和满足时序要求。

二、UART如何传数据

通用异步收发器简称 UART,即“Universal Asynchronous Receiver Transmitter ”,它用来传输串行数据。

发送数据时, CPU 将并行数据写入 UART, UART 按照一定的格式在一根电线上串行发出;

接收数据时, UART 检测另 一根电线上的信号, 将串行收集放在缓冲区中, CPU 即可读取 UART 获得这些数据。

UART 之间以全双工方式传输数据, 最精简的连线方法只有要3 根电线就够了(串口中还有一些功能高级的线): TxD 用于发送数据, RxD 用于接收数据, Gnd 一般为地线,用于给双方提供参考电平。实际上SoC还要经过电平转换(有的开发板上还有串口座),才能和串口线相连。这是由于UART 使用标准的 TTL/CMOS 逻辑电平 (0~5v、 0~3.3V、 0~2.SV或0~ 1.8V)来表 示数据, 高电平表示l, 低电平表示0。 为了增强数据的抗干扰能力、提高传输长度, 通常将 TTL/CMOS 逻辑电平转换为 RS-232 逻辑电平, 3~ 12V表示 0, -3~-12V 表示1 。

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

数据传输流程如下。

(1)平时数据线处于 “ 空闭 ” 状态( 1状态)。
(2)当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持时间T,这样接收方检测到开始位后就会知道对方再过时间T后即将发送数据,T时间后就开始一位 一位地检测数据线的状态得到所传输的数据 。注意这个时间T是双方约定好的。

(3) UART一帧中可以有5、 6、 7或8位的数据, 发送方一位一位地改变数据线的 状态 将它们发送出去, 首先发送最低位。

(4)如果使用校验功能, UART在发送完数据位后, 还要发送1个校验位。 有两种校验方法: 奇校验 、 偶校验一一数据位连同校验位中,“1”的数目等于奇数或偶数。

(5)最后, 发送停止位, 数据线恢复到 “ 空闲 ” 状态(1状态〉。 停止位的长度有3种: 1位、 1.5位、 2位。

下图演示了UART使用7个数据位、 偶校验、2个停止位的格式传输字符 ‘ A'(二进制值为0b01000001)时, TTL/CMOS逻辑电平 、 RS-232逻辑电平对应的波形。

三、平常工作中如何设置这些协议?

开发板侧:设置SoC中的UART(也叫串口控制器)。这样想发送数据时,只要把想传输的数据写到里面的具体寄存器就可以了,它就会自动产生起始位,自动地根据数据位让数据线产生状态变化,传输完后再插一个停止位等将数据一位一位地传过去。这里在设置波特率地时候还需要根据给定地波特率,所选择始终源地频率,来根据芯片手册给的的公式进行计算。

 PC机侧:在工具xshell、secureCRT中就可以设置,如停止位、波特率等。

上述双方设置一定要一致。

原文地址:https://www.cnblogs.com/zhangshuaifeng/p/10627959.html