击左上方蓝色“一口Linux”,选择“设为星标”
第一时间看干货文章
?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式知识点-思维导图-免费获取?【就业】一个可以写到简历的基于Linux物联网综合项目?【就业】找工作简历模版
5tww3bgga2n6405042437.gif
33lp3n0lnsl6405042539.gif
动图来源:www.parlezvoustech.com
1、常见的硬件通信协议?
串行通信协议UART (Universal Asynchronous Receiver Transmitter):
一种异步串行通信协议,不需要时钟信号,常用于简单的点对点通信。
SPI (Serial Peripheral Interface):
一种同步串行通信协议,通常用于微控制器与传感器、存储设备等外部设备之间的高速通信。
包含一个主设备和一个或多个从设备,通过时钟信号同步数据传输。
I2C (Inter-Integrated Circuit):
一种同步多主多从串行通信协议,常用于低速设备间的短距离通信。
使用两根信号线(SDA和SCL)进行数据传输和时钟同步。
RS-232:
一种早期的串行通信标准,通常用于计算机与外部设备(如调制解调器和打印机)之间的连接。
使用单端信号传输,支持较长的传输距离。
RS-485:
一种改进的串行通信标准,适用于多点通信系统,支持更长的传输距离和更高的数据速率。
使用差分信号传输,提高抗干扰能力。
[/ol]并行通信协议PCI (Peripheral Component Interconnect ):
一种高速串行计算机扩展总线标准,广泛用于计算机内部的各种组件之间(如显卡、存储设备)的连接。
提供较高的数据传输速率和低延迟。
ATA/IDE (Advanced Technology Attachment/Integrated Drive Electronics):
一种早期的硬盘驱动器接口标准,使用并行数据传输方式。
SATA (Serial ATA):
ATA接口的串行版本,广泛用于连接硬盘驱动器和SSD,具有更高的数据传输速率。
[/ol]无线通信协议Bluetooth:
一种短距离无线通信协议,常用于移动设备、计算机和外围设备之间的数据传输。
Wi-Fi (Wireless Fidelity):
一种常用的无线局域网(WLAN)技术,支持设备之间的无线数据传输。
Zigbee:
一种低功耗、低数据速率的无线通信协议,常用于物联网(IoT)设备之间的通信。
NFC (Near Field Communication):
一种短距离无线通信技术,常用于移动支付、访问控制等应用。
[/ol]工业通信协议Modbus:
一种广泛应用于工业自动化系统的串行通信协议,支持主从通信模式。
CAN (Controller Area Network):
一种用于汽车和工业自动化中的串行通信协议,支持多主模式和高可靠性数据传输。
PROFINET:
一种基于以太网的工业通信协议,广泛应用于工业自动化和控制系统。
[/ol]其他常见协议USB (Universal Serial Bus):
一种广泛应用于计算机和外部设备之间的通用串行通信协议,支持热插拔和即插即用。
HDMI (High-Definition Multimedia Interface):
一种数字视频和音频传输标准,广泛用于高清电视、显示器和其他多媒体设备。
Ethernet:
一种用于局域网(LAN)的有线通信标准,支持高速数据传输和多点通信。
[/ol]2、同步通信和异步通信?
同步和异步通信是两种不同的数据传输方式,主要区别在于对时钟信号的使用。
同步通信特点:
共享时钟信号:发送端和接收端共享一个时钟信号,用于同步数据传输。
数据同步:每个数据位的传输都由时钟信号引导,接收端根据时钟信号确定数据读取时刻。
优点:
高效传输:由于时钟同步,数据传输速率较高。
可靠性强:时钟信号使数据的接收和发送更加精确。
缺点:
复杂性:需要额外的时钟线,电路设计复杂。
距离限制:时钟信号的准确性可能会随着距离增加而降低。
应用场景:
SPI、I2C(虽然I2C也支持异步特性,但其时钟线用于同步)。
异步通信特点:
无共享时钟:发送端和接收端不共享时钟信号,而是使用起始位和停止位来标识数据帧。
自包含时序:每个数据帧通过自身的起始和停止信号进行同步。
优点:
简单性:无需时钟线,减小了硬件复杂度。
灵活性:适合低速、长距离通信。
缺点:
效率稍低:由于需要添加起始和停止位,实际数据传输速率可能降低。
误差累积:长时间传输可能出现同步误差。
应用场景:
UART、RS-232。
同步通信适用于需要高效、高速数据传输的场景,但通常需要额外的硬件支持。
异步通信适合简单低速应用,易于实现和调试。
3、UART串口通信?
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种用于串行通信的硬件设备。UART用于将数据串行地传输和接收,广泛应用于计算机与外围设备之间的数据通信。
1. 基础概念:异步通信: 没有时钟信号,发送方和接收方必须约定好波特率(传输速率)。
波特率: 每秒传输的位数,一般有9600、115200等常见波特率。
数据帧结构: 包括开始位、数据位、奇偶校验位(可选)和停止位。
2. 数据帧结构:协议:数据包由起始位、数据帧、奇偶校验位和停止位组成。
rptgjgy0iwn6405042639.png
A. 起始位:先发出一个逻辑"0"的信号,表示传输字符的开始B. 数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符,从最低位开始传送。C. 奇偶校验位:数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。D. 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。E. 空闲位:处于逻辑"1"状态,表示当前线路上没有资料传送。F. 波特率:衡量数据传送速率的指标。表示每秒钟传送的比特位。3. 通信方式:全双工: 可以同时进行发送和接收(两个独立的通道)。
半双工: 发送和接收不能同时进行。
单工: 只能单方向传输数据。
4. 实现方式:硬件实现: 通过MCU或专用的UART芯片(如MAX232)实现。
软件实现: 通过软件模拟UART通信,适用于不具备硬件UART模块的系统。
5. 应用:嵌入式系统: 如单片机与传感器、模块之间的通信。
计算机外设: 如与鼠标、键盘、调制解调器等的连接。
调试和编程: 通过串口调试嵌入式设备或下载程序。
4、IIC通信?
I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,设计用于短距离互连低速设备。由飞利浦公司(现NXP)在20世纪80年代开发,I2C现在广泛应用于嵌入式系统中,用于连接微控制器、传感器、显示器和其他外围设备。
35oqvowfgge6405042739.jpg
yus0d2lqass6405042839.png
I2C 基本概念I2C是一种多主从架构的双线串行总线系统,由主设备和从设备组成。通信通过两条线进行:
SCL(Serial Clock Line): 时钟线,由主设备生成时钟信号。
SDA(Serial Data Line): 数据线,用于传输数据。
数据传输I2C使用7位或10位地址进行设备寻址,传输数据以字节为单位,具体传输步骤如下:
起始条件(Start condition):主设备拉低SDA线,然后拉低SCL线,表示通信的开始。
地址传输:主设备发送从设备的地址,并指示读/写操作。
数据传输:主从设备之间的数据传输。每个字节后面都有一个确认位(ACK/NACK)。
停止条件(Stop condition):主设备拉高SCL线,然后拉高SDA线,表示通信的结束。
[/ol]I2C设备地址每个I2C从设备都有唯一的7位或10位地址。7位地址通常使用更广泛,实际传输时,地址会左移一位,最右边一位表示读/写操作(0表示写,1表示读)。
I2C通信协议开始条件(Start Condition): 主设备将SDA从高电平拉到低电平,同时SCL保持高电平。
停止条件(Stop Condition): SCL为高电平时,SDA从低电平拉到高电平。
字节数据传输: 每传输一个字节数据后,接收方需发送一个确认位(ACK)。
读/写操作: 主设备发送设备地址的同时紧接着一个读/写位,0表示写,1表示读。
I2C优点简单的硬件接口:只需两根线即可实现通信。
多主从架构:允许多个主设备和从设备共用一条总线。
灵活性:支持多种设备共同使用,且设备可以热插拔。
I2C缺点速率较低:标准模式下最大速率为100kHz,快速模式为400kHz,更高的速率(高达5MHz)需要特殊的高速度模式。
距离受限:通常适用于PCB内部或短距离通信。
总线竞争:总线空闲时,多个主设备可能会尝试同时启动通信。
5、SPI通信?
SPI(Serial Peripheral Interface,串行外围设备接口)是一种用于短距离通信的同步串行通信协议。它由Motorola公司在20世纪80年代开发,广泛应用于嵌入式系统中,用于微控制器与传感器、存储设备、显示器以及其他外设的通信。
SPI 基本概念
SPI使用主从架构,其通信通过至少四条线进行:
MOSI(Master Out Slave In): 主设备输出,从设备输入。MISO(Master In Slave Out): 主设备输入,从设备输出。SCLK(Serial Clock): 时钟线,由主设备生成时钟信号。SS/CS(Slave Select/Chip Select): 从设备选择线,由主设备控制,以选择具体的从设备。数据传输
SPI是一种全双工通信协议,数据在时钟的控制下从主设备到从设备(通过MOSI),同时从从设备到主设备(通过MISO)。具体传输步骤如下:
主设备驱动CS线低电平,选择从设备。主设备生成SCLK时钟信号。数据通过MOSI和MISO线同步传输。根据时钟的上升沿或下降沿采样数据。传输完成后,主设备驱动CS线高电平,结束通信。[/ol]
SPI时钟相位和极性
SPI的时钟相位(CPHA)和时钟极性(CPOL)定义了数据采样的时机和时钟信号的初始状态。根据这两个参数,可以有四种模式:
3l2hartec5y6405042940.png
o5lfkuwl5406405043040.png
CPOL—— 0 : SCLK空闲时低电平;1 : SCLK空闲时高电平CPHA—— 0 : 奇数边沿采集数据; 1: 偶数边沿采集数据
CPOL = 0, CPHA = 0: 时钟信号空闲时为低电平,在第一个上升沿采样数据。CPOL = 0, CPHA = 1: 时钟信号空闲时为低电平,在第一个下降沿采样数据。CPOL = 1, CPHA = 0: 时钟信号空闲时为高电平,在第一个下降沿采样数据。CPOL = 1, CPHA = 1: 时钟信号空闲时为高电平,在第一个上升沿采样数据。SPI 优点高速传输:比I2C通信速率更高,适用于高数据速率的传输。全双工通信:可以同时发送和接收数据。简单的硬件实现:不需要复杂的仲裁机制。SPI 缺点线数较多:需要至少四条线,增加了布线复杂度。缺乏标准化:不同设备的SPI实现可能有所差异,需要仔细阅读设备手册。6、RS-232外部通信?
RS-232(Recommended Standard 232)是一种串行通信标准,最初由EIA(Electronic Industries Association)在20世纪60年代制定。它广泛用于计算机与外围设备(如调制解调器、打印机和工业设备)之间的通信。尽管RS-232在现代消费电子产品中使用较少,但在工业自动化和某些专业设备中仍然非常重要。
RS-232 基本概念RS-232为异步串行、全双工通信,由电子工业协会(EIA)制定,是个人计算机上的通讯接口之一,通常以9个引脚(DB-9)出现,传输距离通常十几米。
RS-232 信号RS-232接口定义了多种信号线,其中最常用的是:
TXD(Transmit Data): 发送数据线。
RXD(Receive Data): 接收数据线。
GND(Ground): 地线。
RTS(Request to Send): 请求发送。
CTS(Clear to Send): 清除发送。
DTR(Data Terminal Ready): 数据终端准备好。
DSR(Data Set Ready): 数据集准备好。
DCD(Data Carrier Detect): 数据载波检测。
RI(Ring Indicator): 振铃指示。
RS-232 电气特性RS-232定义的信号电压如下(负逻辑):
逻辑1(标志位): -3V到-15V。
逻辑0(空闲位): +3V到+15V。
任何在-3V到+3V之间的电平都被视为不确定状态。
数据传输RS-232使用异步通信,没有时钟信号。数据传输通过开始位、数据位、可选的校验位和停止位构成的数据帧进行:
起始位: 通常为1位,表示数据传输的开始,逻辑低电平。
数据位: 通常为5到8位,是实际传输的数据。
校验位: 可选,用于错误检测,一般有奇校验和偶校验。
停止位: 通常为1或2位,表示一帧数据的结束,逻辑高电平。
[/ol]RS-232 传输速度RS-232的波特率(传输速率)可以从300bps到115200bps不等,典型值有9600、19200、38400、57600和115200bps。
RS-232 应用RS-232广泛应用于:
计算机与调制解调器: 老式拨号上网。
工业自动化设备: PLC、传感器和控制器之间的通信。
嵌入式系统: 用于调试和通信。
医疗设备: 如数据采集和监控设备。
fqhrpa1rmew6405043140.png
7、RS485通信
d2ax2jl4ldq6405043240.png
RS-485是一种用于多点、差分信号传输的串行通信标准,广泛应用于工业自动化、楼宇自动化和其他需要可靠长距离数据传输的应用中。与RS-232相比,RS-485具有更强的抗干扰能力和更长的传输距离。
RS-485 基本概念差分信号RS-485使用差分信号传输,它通过两根线(A和B)来传输数据。差分信号的优势在于:
抗干扰能力强:由于接收端检测的是两根线之间的电压差,而不是单端电压,所以对噪声有更好的抵抗力。
传输距离长:典型的传输距离可以超过1200米。
多点通信RS-485支持多点通信,即多个设备可以连接在同一总线上,常见的配置是主从模式。一个RS-485总线上可以连接多达32个设备,使用扩展器可以连接更多设备。
RS-485 电气特性逻辑1:A线电压低于B线电压,通常两线间的电压差为+(2~6)V。
逻辑0:A线电压高于B线电压,通常两线间的电压差为-(2~6)V。
对于驱动器(发送器),逻辑1(正)是A>B, AB之间电压为+2~+6V,而逻辑0(负)是A[B]
而对于接收器,则逻辑1(正)则是B>A,BA之间的电压不小于200mV,逻辑0则是A>B,BA之间的电压小于-200mv,即正负逻辑,电压绝对值都大于200mv。
RS-485 通信模式半双工数据只能在一个方向传输,必须通过协议或硬件控制来实现发送和接收的切换。
常见连接:两根差分线(A和B),一根地线(GND)。
全双工数据可以同时在两个方向传输,需要四根线(两对差分线)。
常见连接:四根差分线(A、B、Y、Z),一根地线(GND)。
RS-485 典型应用RS-485广泛应用于需要长距离、可靠传输的场景,如:
工业自动化:PLC、传感器、执行器之间的通信。
楼宇自动化:HVAC系统、门禁控制、照明控制。
串行设备互连:例如Modbus协议下的设备通信。
远程数据采集:如SCADA系统中的数据采集。
8、Modbus协议
Modbus是一种开源的串行通信协议,最初由Modicon(现为施耐德电气的一部分)在1979年开发。它广泛应用于工业自动化系统中,用于连接电子设备和传感器,实现数据交换和设备控制。Modbus协议简单、可靠且易于实现,是工业环境中最常用的通信协议之一。Modbus 基本概念Modbus协议主要有两种传输模式:Modbus RTU(Remote Terminal Unit):基于二进制传输,通常用于RS-232、RS-485等串行通信。Modbus ASCII:基于ASCII字符传输,也用于串行通信,但相对较少使用。Modbus TCP/IP:基于以太网的通信,适用于局域网和互联网环境。[/ol]Modbus 数据模型Modbus设备数据组织为各种表,主要包括:离散输入(Discrete Inputs):只读的单位输入(位)。线圈(Coils):可读写的单位输出(位)。输入寄存器(Input Registers):只读的16位输入。保持寄存器(Holding Registers):可读写的16位寄存器。每种数据类型有不同的地址范围。例如,标志位(线圈和离散输入)的地址范围为1到9999,寄存器的地址范围为40001到49999。Modbus 功能码Modbus协议使用功能码来定义具体操作,例如读写线圈和寄存器。以下是一些常见的功能码:读线圈(0x01):读取一组线圈的状态。读离散输入(0x02):读取一组离散输入的状态。读保持寄存器(0x03):读取一组保持寄存器的内容。读输入寄存器(0x04):读取一组输入寄存器的内容。写单线圈(0x05):写入一个单线圈状态。写单寄存器(0x06):写入一个保持寄存器的内容。写多线圈(0x0F):写入多个线圈状态。写多寄存器(0x10):写入多个保持寄存器的内容。Modbus 数据帧Modbus RTU数据帧结构如下:地址域(1字节):指定从机地址。功能码(1字节):指定操作类型。数据域(N字节):包含具体操作的数据,如寄存器地址、值等。错误校验码(2字节):CRC校验码,用于错误检测。Modbus ASCII数据帧结构类似,但采用ASCII字符表示,每个字节以两个ASCII字符传输,并有LRC(纵向冗余校验)校验。9、CAN总线
CAN(Controller Area Network,控制器局域网络)是一种多主总线型串行通信协议,最初由德国的Bosch公司在1980年代开发,主要用于汽车电子系统,但其应用已扩展到工业自动化、医疗设备、航空电子和其他领域。CAN 基本概念帧类型CAN总线通信使用数据帧来传输信息,常见的帧类型包括:数据帧(Data Frame):用于传输实际数据。远程帧(Remote Frame):请求发送数据帧。错误帧(Error Frame):报告检测到的错误。过载帧(Overload Frame):指示总线过载。[/ol]数据帧结构CAN数据帧由以下主要字段组成:起始位(Start of Frame, SOF):表示帧的开始。标识符(Identifier):表示消息的优先级和内容。标准帧(11位标识符)扩展帧(29位标识符)控制字段(Control Field):指示数据长度和其他控制信息。数据字段(Data Field):实际传输的数据,长度为0到8字节。CRC字段(CRC Field):循环冗余校验,用于错误检测。应答字段(ACK Field):接收方确认发送方是否正确接收。结束位(End of Frame, EOF):表示帧的结束。位仲裁CAN总线采用非破坏性仲裁机制,通过标识符的优先级来决定哪个节点可以发送数据。标识符值越小,优先级越高。错误检测CAN具有多层次的错误检测机制,包括位级、帧级、消息级的错误检测和错误处理。CAN 应用场景汽车电子:车身控制、动力系统、信息娱乐系统。工业自动化:机器人控制、传感器数据采集。医疗设备:实时监控、诊断设备。航空电子:飞行控制系统。end
一口Linux
关注,回复【1024】海量Linux资料赠送
精彩文章合集
文章推荐
?【专辑】ARM?【专辑】粉丝问答?【专辑】所有原创?【专辑】linux入门?【专辑】计算机网络?【专辑】Linux驱动?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式所有知识点-思维导图 |