数据帧
对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。
起始位:起始位是在实际数据之前添加的同步位。起始位标记数据包的开始。通常,空闲数据线,即当数据传输线不传输任何数据时,它保持在高电压电平。为了开始数据传输,发送 UART 将数据线从高电平拉到低电平(从 1 到 0)。接收 UART 在数据线上检测到这种从高到低的变化,并开始读取实际数据。通常,只有一个起始位。
数据位:数据位是从发送方传输到接收方的实际数据。数据帧的长度可以在 5 到 9 之间(如果不使用奇偶校验,则为 9 位,如果使用奇偶校验,则只有 8 位)。
奇偶校验位:奇偶校验允许接收器检查接收到的数据是否正确。Parity 是一个低级错误检查系统,有两种类型:偶校验和奇校验。
停止位:表示一帧数据的结束。电平逻辑为“1”停止位,顾名思义,标志着数据包的结束。它通常有两位长,但通常只使用一个位。为了结束传输,UART 将数据线保持在高电压。
如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
接收
UART受一个内部时钟信号控制。该时钟信号是数据传输率的倍频,典型是比特率的8或16倍。接收器在每个时钟脉冲时测试接收到的信号状态是否为开始比特。
如果开始比特的低电平持续传输1个比特所需时间的一半以上,则认为开始了一个数据帧的传输;否则,则认为是毛刺脉冲并忽略。
到了下一个比特时间后,线路状态被采样并送入移位寄存器。约定的表示一个字符的所有数据比特(典型为5至8个比特)接收后,移位寄存器可被接收系统使用。UART将设置一个标记指出新数据可用,并产生一个处理器中断请求主机处理器取走接收到的数据。
UART的标准特性之一是在接收下一个字符时在缓冲区保存上一个接收到的字符。这种“双缓冲区”允许接收计算机用一个字符的传输时段来获取缓冲区内的上一个字符。
许多UART有更大的FIFO缓冲区,允许主机一次处理多个字符,这特别适用于高传输数据率的串行通信同时处理器中断频率有限(通常中断间隔大于1毫秒)。
发送器
UART把一个字符放入移位寄存器,就开始产生一个数据帧。对于全双工通信,发送与接受使用不同的移位寄存器。使用更大的FIFO使得主机处理器或DMA(Direct Memory Access)放置多个字节后由UART自主完成传输。UART用一个标志位表示busy。
在 UART 中,发送器和接收器必须事先就时序参数达成一致。此外,UART 在每个数据字的开头和结尾使用特殊位来同步发送器和接收器。
在基于 UART 的串行通信中,发送器和接收器以下列方式进行通信。发送设备上的 UART 即发送 UART 从 CPU(微处理器或微控制器)接收并行数据并将其转换为串行数据。
该串行数据被传输到接收设备上的 UART,即接收 UART。接收 UART 在接收到串行数据后,将其转换回并行数据并提供给 CPU。由于 UART 涉及并行到串行和串行到并行数据转换,因此移位寄存器是 UART 硬件的重要组成部分(具体来说是两个移位寄存器:发送器移位寄存器和接收器移位寄存器)。
UART规则
如前所述,UART 中没有时钟信号,发送器和接收器必须就串行通信的某些规则达成一致,以实现无差错数据传输。规则包括:
•同步位(开始位和停止位)
•奇偶校验位
•数据位和
•波特率
波特率:使用波特率提到数据传输的速度。发送 UART 和接收 UART 必须在波特率上达成一致才能成功传输数据。
波特率以每秒位数为单位。一些标准波特率是 4800 bps、9600 bps、19200 bps、115200 bps 等。其中 9600 bps 波特率是最常用的一种。
让我们看一个示例数据帧,其中必须传输两个数据块,即 00101101 和 11010011。帧的格式是 9600 8N1 即 9600 bps,有 8 位数据,无奇偶校验和 1 个停止位。在这个例子中,我们没有使用奇偶校验位
-
寄存器
+关注
关注
31文章
5281浏览量
119746 -
uart
+关注
关注
22文章
1216浏览量
101066 -
发送器
+关注
关注
1文章
258浏览量
26771 -
数据帧
+关注
关注
0文章
43浏览量
6722
发布评论请先 登录
相关推荐
评论