转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)
Posted 三明治开发社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)相关的知识,希望对你有一定的参考价值。
本文转自:【木木9026】
原文链接:https://blog.csdn.net/m0_46582811/article/details/123899074?spm=1001.2014.3001.5502
一、概述
通信协议是两个(或多个)设备之间进行通信,必须要遵循的一种协议。通讯协议分为物理层和协议层。
物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输;
协议层:规定通讯逻辑,统一收发双方的数据打包、解包标准。
二、定义
UART: 通用异步收发传输器。
USART: 通用同步/异步串行接收/发送器。USART可以理解为UART和USRT二合一的通信接口,一个是同步通信,一个是异步通信。
IIC: 集成电路总线,是一种串行通信总线。
SPI: 串行外设接口,是一种高速的,全双工,同步的通信总线。
QSPI: 是SPI接口的扩展,比SPI应用更加广泛。QSPI是在SPI协议的基础上,对其增加了队列传输机制,传输过程不需要CPU干预,极大的提高了传输效率。
RS-232: 全双工点对点式的异步串行通信协议接口。
RS-485: 串行通信总线,采用两线制,差分传输,半双工模式。
RS-422: 采用四线制,全双工,差分传输,多点通信的数据传输协议。
USB: 通用串行总线 。USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术。
CAN: 控制器局域网络。 CAN 总线是一种应用广泛的现场总线 ,在工业测控和工业自动化等领域有很大的应用前景。
IRDA: 是一种利用红外线进行通信的,点对点通信的技术。
三、通信协议
1、UART
(1)基本概念
UART——通用异步收发传输器。UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
基于UART的数据传输是异步形式的串行数据传输。基于UART的串行数据传输不需要使用时钟信号来同步传输的发送端和接收端,而是依赖于发送设备和接收设备之间预定义的配置。
对于发送设备和接收设备来说,两者的串行通信配置(波特率、单位字的位数、奇偶校验、起始位数与结束位、流量控制)应该设置为完全相同。通过在数据流中插入特定的比特序列,可以指示通信的开始与结束。当发送一个字节数据的时候,需要在比特流的开头加上起始位,并在比特流的末尾加上结束位。数据字节的最低位紧接在起始位之后。
UART 串口的特点是将数据一位一位地顺序传送,只要2根传输线就可以实现双向通信,一根线发送数据的同时用另一根线接收数据。
UART 串口通信有几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对于两个使用UART串口通信的端口,这些参数必须匹配,否则通信出错。
UART通信数据格式:
起始位:表示数据传输的开始,电平逻辑为“0” ,位数为1位。
数据位:可以是5~8位的数据,先发低位,再发高位,一般取值为8,因为一个ASCII 字符值为8位。
奇偶校验位:用于接收方对接收到的数据进行校验,“1”的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。
停止位:表示一帧数据的结束,电平逻辑为“1”,位数可以是1/1.5/2位。
波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit) 数来表示,其单位为每秒比特数bit/s(bps)。常见的波特率值有4800、9600、115200 等,数值越大数据传输的越快,波特率为115200 表示每秒钟传输115200 位数据。
(2)硬件连接
(3)UART存在的问题
UART只是对信号的时序进行了定义,而未定义接口的电气特性;
UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;
UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接不方便。
UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错。
由于TTL信号的抗干扰能力较差,所以其通信距离很短,一般只能用于一个电路板上的两个不同芯片之间的通信。
温馨提示: 下一章节将讲叙I2C通信协议。
以上是关于转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)的主要内容,如果未能解决你的问题,请参考以下文章