UART串口通讯
提示:串口通讯是典型的串行通讯,且是异步通讯
前言
如果要理解串口通讯,就必须对串行和并行,同步和异步有一定的了解
提示:以下是本篇文章正文内容,下面案例可供参考
一、串行和并行的区别?
串行通讯:计算机与I/O设备之间,传输数据会根据顺序逐一传输,并通过添加起始位和结束位来确定是否结束,但同一时刻只能发送单位数据因此对比并行通讯它的传输数据较慢 ,但是其成本较低、传输距离远且抗干扰能力强
并行通讯:计算机与I/O设备之间需要使用多位数据线在同一时刻同时传输多位数据,优点是传输速度快,但是抗干扰能力弱,数传距离远,成本高
二、同步和异步的区别
同步通讯:该通讯要求接受双方的数据保持同步,因此他们往往会在传输线外多加一条时钟线以保持频率,同步通信是一种连续传送数据的通信方式,一次通信传送一帧数据,在发送数据时发送方会加上一个或者两个同步字符然后在发送若干位数据,当接收方收到同步字符,并和发送方达到同步后,就可以以固定的节奏一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率因此速度更快,效率更高,但是对硬件的要求也更高,而且在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。我们常见的I2C、SPI、USB都是这种方式
异步通讯:异步通信是按字符帧传输的,相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的 ,因此接收方并不知道数据据何时会来,所以必须一直做好接受准备 发送端不需要在发送字符之前和接收端进行协调(不需要先进行比特同步)。接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的字符间同步,字符内比特位异步)因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。通信双方需要对采用的信息格式(字符的位数、停止位的位数、有无校验位及校验方式等)和数据的传输速率作相同的约定。接收方是在数据的起始位和停止位的帮助下实现字符传送时的同步。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。用这种方式传输的常见的就是我们UART串口通讯
如果小伙伴还觉得不太详细的可以看看下方原文
原文链接:https://blog.youkuaiyun.com/sym_robot/article/details/113182977
三、UART简介
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信
串口采取的是TTL协议
关于这点可以看看这个
常见协议介绍
四、UART传输过程
由图可知UART的的传输数据包由起始位、结束位、校验位、数据帧位组成
1.UART的发送端在没有发送数据数据时默认是高电平,如果转到低电平且时长为一个时钟周期就可以认为它以及开始传输信息了
2.数据位的长度是比较短的,所以串口通讯的效率是不如异步通信的
3.校验位是可传可不传的,如果配置的话一般是奇偶效验,如果效验位是1那么统计数据位中的高位就是1的数量得出就应该是奇数,反之就是偶数,如果结果和效验码相同即认为该数据无错。
4.当数据传输结束后发送端就会变成高电平并保持1-2位时间,这就是结束位,接收端收到后就不会在接收数据了
5.整个发送阶段持续时间就是通过波特率约定,即波特率越大传输效率越高。
感觉不太清楚的小伙伴也可以看看下面这个大佬写的
原文链接:https://blog.youkuaiyun.com/m0_38106923/article/details/126024970