串行通信与并行通信的比较
1.同步和异步
同步串口通信(Synchronous Serial Communication)
异步串口通信(Asynchronous Serial Communication)
比较
2.全双工,半双工,单工
全双工(Full Duplex)
半双工(Half Duplex)
单工(Simplex)
比较
3.SPI
SPI的主要特点:
SPI的工作流程:
SPI的配置参数:
4.I2C
I2C的主要特点:
I2C的应用场景:
I2C的工作流程:
5.RS485
RS485的主要特点:
RS485的工作流程:
6.RS232
RS232的主要特点:
RS232的工作流程:
串行通信与并行通信的比较
串口(串行接口)
- 数据传输:一次传输一个比特,通过单一的通信线路(或通道)。
- 应用:常用于连接鼠标、键盘、打印机、调制解调器等设备,以及嵌入式系统中的设备间通信。
- 标准:包括RS-232、RS-422、RS-485等。
并口(并行接口) - 数据传输:一次可以传输多个比特,通过多个并行线路。
- 应用:曾广泛用于打印机连接(Centronics接口),以及某些扫描仪和外部存储设备。
- 标准:包括Centronics、IEEE 1284等。
串行通信与并行通信的比较
- 传输方式:串行通信是按位顺序传输,而并行通信是多位同时传输。
- 传输速度:串行通信速度较慢,但随着技术发展,高速串行通信标准已经可以支持非常高的数据传输速率。并行通信理论上可以更快,但实际应用中受到信号同步和干扰的限制。
- 传输距离:串行通信更适合长距离传输,因为信号不容易失真。并行通信则因为信号同步问题,通常限于较短的距离。
- 抗干扰性:串行通信因为使用单根线,所以抗干扰性较强。并行通信由于多根线之间可能产生串扰,抗干扰性相对较弱。
- 成本和复杂性:串行通信的硬件成本和复杂性较低,因为只需要少数几根线。并行通信需要更多的线,增加了成本和复杂性。
- 现代应用:随着技术的发展,串行通信(尤其是USB)已经取代了并行通信在大多数应用中的地位。
1.同步和异步
同步串口通信(Synchronous Serial Communication)
-
数据块传输:同步串口通信通常用于数据块的传输,其中数据被组织成帧或数据包。
-
时钟信号:同步通信需要一个时钟信号来同步发送方和接收方的数据传输。这个时钟信号可以是内部的或外部的。
-
高速数据传输:由于使用了时钟信号,同步串口可以支持更高的数据传输速率。
-
全双工通信:同步串口通常支持全双工通信,即可以同时发送和接收数据。
-
应用场景:常用于存储设备(如硬盘驱动器)、音频和视频传输,以及需要高速数据传输的应用。
-
硬件支持:同步串口通信通常需要硬件支持,如SPI(串行外设接口)或SDIO(安全数字输入输出)、I2C(Inter-Integrated Circuit集成电路互联)。
异步串口通信(Asynchronous Serial Communication)
-
字符传输:异步串口通信通常用于字符级别的传输,每个字符的发送和接收是独立的。
-
起始位和停止位:每个字符前后都有起始位和停止位,用于标记字符的开始和结束。
-
波特率:使用波特率来定义字符传输的速度,而不是时钟信号。
-
半双工或全双工通信:异步串口可以支持半双工或全双工通信,但在同一时间内只能发送或接收。
-
应用场景:广泛用于计算机与外部设备(如打印机、调制解调器)之间的通信,以及微控制器之间的通信。
-
硬件支持:异步串口通信通常由UART(通用异步收发器)或USART(通用同步/异步收发器)硬件支持。
比较
- 时钟信号:同步通信需要时钟信号同步数据传输,而异步通信使用波特率和起始/停止位来控制数据传输。
- 数据传输速率:同步通信通常可以实现更高的数据传输速率。
- 全双工能力:同步通信更易于实现全双工通信。
- 硬件要求:同步通信可能需要更复杂的硬件支持。
- 应用范围:异步通信由于其简单性和灵活性,在许多标准设备和微控制器中更为常见。
2.全双工,半双工,单工
全双工、半双工和单工是描述通信通道工作方式的术语,它们指的是在通信过程中发送和接收数据的能力。
全双工(Full Duplex)
全双工通信允许数据同时双向传输,即通信的双方可以同时发送和接收信息。这种模式类似于电话通话,两个人可以同时讲话和听对方讲话。
特点:
- 同时发送和接收:数据可以在两个方向上同时流动。
- 通信效率:由于数据可以连续不断地双向传输,通信效率较高。
- 常用技术:以太网(Ethernet)、双工RS-422和RS-485总线等。
半双工(Half Duplex)
半双工通信允许数据双向传输,但在同一时间内只能有一个方向的数据传输。这意味着发送和接收不能同时进行,通信双方需要交替进行发送和接收。
特点:
- 交替发送和接收:数据可以在两个方向上传输,但不是同时。
- 通信效率:通信效率可能低于全双工,因为需要时间来切换发送和接收模式。
- 常用技术:某些类型的无线通信、某些网络协议等。
单工(Simplex)
单工通信只允许数据在一个方向上传输。在这种模式下,只有一个通信方可以发送数据,而另一个通信方只能接收数据。
特点:
- 单向传输:数据只能从发送方流向接收方。
- 通信效率:通信效率可能较低,因为没有反馈或确认机制。
- 常用技术:广播、电视信号传输、某些类型的警报系统等。
比较
- 全双工:可以想象成一条双向道路,车辆可以同时双向行驶。
- 半双工:类似于单车道的道路,车辆需要交替行驶,不能同时双向行驶。
- 单工:类似于一条单向道路,车辆只能朝一个方向行驶。
在实际应用中,选择哪种通信模式取决于通信需求、成本、技术限制和系统设计。例如,电话系统需要全双工通信以实现双向对话,而广播系统则使用单工通信,因为信息只从广播站向听众单向传输。
3.SPI
SPI(Serial Peripheral Interface)是一种广泛使用的同步串行通信协议,用于短距离通信,主要应用于微控制器和它们的外围设备之间。SPI是一种全双工通信协议,它允许数据在两个方向上同时传输。
SPI的主要特点:
-
全双工通信:SPI可以在两个方向上同时发送和接收数据,这是通过单独的数据线(MOSI - 主设备发送,从设备接收;MISO - 主设备接收,从设备发送)实现的。
-
同步通信:SPI使用一个时钟信号(SCLK或SCK)来同步数据传输,数据在时钟信号的上升沿或下降沿被采样。
-
主从架构:SPI通信需要一个主设备来初始化通信,它可以是微控制器或其他类型的设备。主设备控制时钟信号并选择从设备。
-
最少三线接口:SPI通信至少需要三条线:主设备发送(MOSI)、主设备接收(MISO)和时钟信号(SCLK)。
-
片选(Chip Select):SPI通常使用单独的片选线(CS或[nSS]),主设备可以通过这根线来选择特定的从设备。
-
数据速率:SPI的数据传输速率(时钟频率)可以变化,取决于主设备和从设备的速率能力。
-
灵活性:SPI协议相对简单,易于实现,支持多种数据格式和传输速率。
-
广泛的应用:SPI被广泛应用于各种电子设备,包括传感器、存储器、显示器、音频设备等。
SPI的工作流程:
-
初始化:主设备通过片选线选择特定的从设备,并将数据线配置为发送或接收模式。
-
发送时钟信号:主设备生成时钟信号,从设备根据这个信号同步数据传输。
-
数据传输:主设备通过MOSI线发送数据,同时从设备通过MISO线发送数据给主设备。
-
结束通信:主设备停止发送时钟信号,并通过片选线取消选择从设备,结束通信。
SPI的配置参数:
- 时钟极性(CPOL):时钟信号的空闲状态,可以是高电平或低电平。
- 时钟相位(CPHA):数据采样的时钟相位,可以是第一个时钟周期的边缘或第二个时钟周期的边缘。
- 数据顺序:数据传输的顺序,可以是高位在前(MSB First)或低位在前(LSB First)。
SPI是一种非常灵活且高效的通信协议,适用于需要高速数据传输和简化布线的应用场景。然而,由于SPI是同步通信协议,它要求所有设备共享一个时钟信号,这可能会限制其在某些分布式系统中的使用。
SPI常用引脚:
SPI(Serial Peripheral Interface)是一种常见的串行通信协议,用于微控制器和它们的外围设备之间的通信。SPI通信协议通常涉及以下四种基本的引脚(接口信号):
-
MOSI (Master Out Slave In) - 主设备发送,从设备接收:这是主设备用来向从设备发送数据的线路。
-
MISO (Master In Slave Out) - 主设备接收,从设备发送:这是从设备用来向主设备发送数据的线路。
-
SCLK (Serial Clock) - 时钟信号:由主设备生成的时钟信号,用于同步数据传输。数据通常在SCLK的上升沿或下降沿采样。
-
CS (Chip Select) - 片选信号:这是一个控制信号,用于激活特定的从设备。在SPI总线上可以连接多个从设备,每个从设备都有自己的CS引脚。当主设备想要与特定从设备通信时,它会将该设备的CS引脚拉低(使能),其他设备的CS引脚保持高电平(禁用)。
除了这些基本的SPI引脚,某些设备或特定的SPI实现可能还包括以下额外的引脚:
- STE (Slave Select Enable) - 从设备使能:在某些SPI设备中,STE用于独立于CS控制从设备的激活。
- ALERT - 警告或中断信号:某些从设备可能提供一个ALERT引脚,用于向主设备发送中断或警告信号。
- RST (Reset) - 复位信号:用于复位从设备。
- HOLD - 保持信号:某些SPI设备可能使用HOLD引脚来暂停数据传输。
SPI通信通常是全双工的,意味着它可以同时发送和接收数据。SPI协议还允许灵活的数据传输速率(时钟频率)和数据宽度(数据位长度),这些可以根据具体的应用需求和设备能力来配置。
在设计和实现SPI接口时,需要参考具体设备的数据手册来确定所需的引脚和配置。
4.I2C
I2C(Inter-Integrated Circuit),中文名通常称为“集成电路互连”,是一种多主机、同步通信的串行计算机总线。它由Philips Semiconductor(现NXP Semiconductors)在1980年代初期开发,用于微控制器和各种外围设备之间的短距离通信。
I2C的主要特点:
-
多主机能力:I2C总线上可以连接多个主设备和从设备,任何一个主设备都可以启动与从设备的通信。
-
同步通信:I2C使用一个时钟信号(SCL)来同步数据传输,数据在时钟的上升沿或下降沿被采样。
-
地址空间:每个从设备都有一个唯一的地址,主设备通过发送这个地址来选择与之通信的特定从设备。
-
数据速率:I2C支持不同的数据速率,包括标准模式(最高100 kbps)、快速模式(最高400 kbps)、快速模式加(最高1 Mbps)和高速模式(最高3.4 Mbps)。
-
总线仲裁:当两个主设备尝试同时控制总线时,I2C协议通过仲裁机制来决定哪个主设备保留总线控制权。
-
信号线:I2C通信只需要两根线:串行数据线(SDA)和串行时钟线(SCL)。
-
应答机制:I2C协议包括一个应答(ACK)机制,从设备在接收到数据后发送一个应答位,以指示数据已被成功接收。
-
支持扩展:I2C总线可以通过使用不同的地址位来扩展,以支持更多的从设备。
-
简单性:I2C是一种相对简单且成本效益高的通信协议,适用于短距离通信和低速数据传输。
I2C的应用场景:
- 微控制器:用于微控制器与各种外围设备(如传感器、显示器、EEPROM等)之间的通信。
- 系统管理:用于系统管理任务,如实时时钟(RTC)、电源管理等。
- 消费电子:在便携式设备和消费电子产品中用于连接小型外围设备。
- 工业应用:在一些需要可靠性和稳定性的工业环境中使用。
I2C的工作流程:
- 开始条件:主设备通过将SDA从高电平拉低到低电平,同时SCL为高电平来开始通信。
- 地址和读/写位:主设备发送从设备的7位地址后跟一个读/写位(0表示写,1表示读)。
- 应答位:从设备通过在时钟的下一个脉冲上将SDA拉低来发送应答。
- 数据传输:数据以8位字节传输,每个字节后跟一个应答位。
- 结束条件:主设备通过将SDA从低电平拉高到高电平,同时SCL为高电平来结束通信。
I2C常用引脚:
I2C(Inter-Integrated Circuit)是一种多主机、同步串行通信协议,用于连接微控制器和外围设备或多个设备。I2C通信通常使用以下两种基本的引脚(信号线):
-
SDA (Serial Data) - 串行数据线:这个双向线路用于传输数据。数据通过SDA线在设备之间传输。
-
SCL (Serial Clock) - 串行时钟线:这是一个由主设备控制的单向线路,用于提供时钟信号来同步数据传输。
除了这两种基本的信号线,I2C总线上的设备还可以使用一些可选的引脚或功能:
- VCC - 电源:为I2C设备提供电源。
- GND - 地:提供共同的参考点,确保设备之间的电气连接。
- A0/A1/A2 (Address pins) - 地址引脚:某些设备可能具有额外的地址引脚,允许它们具有多个不同的地址,从而可以在同一总线上识别不同的设备或设备功能。
- SMBA (Slave Mode Button Address) - 从模式按钮地址:在某些I2C设备上,SMBA引脚用于设置设备的地址,特别是在设备用作总线上的总线仲裁器或开关时。
I2C协议还支持总线仲裁机制,允许多个主设备共享同一总线,并且在发生总线冲突时,可以决定哪个主设备获得总线控制权。
在设计I2C系统时,通常需要考虑以下因素:
- 上拉电阻:SDA和SCL线通常需要外部上拉电阻,以确保在没有驱动时线路处于高电平状态。
- 总线长度:I2C总线的长度受到一定的限制,过长的总线可能需要考虑信号衰减和延迟。
- 设备地址:每个设备都需要有一个唯一的地址,以便在总线上被正确识别。
I2C是一种非常灵活和广泛应用的通信协议,适用于低速外围设备的数据传输,如传感器、EEPROM、实时时钟(RTC)等。
5.RS485
RS485是一种串行通信协议,它定义了串行通信的电气特性,特别是电气信号的电压水平正式名称为"Recommended Standard 485",又称EIA485。RS485基于RS422协议,但与RS422不同,RS485是多点通信协议,允许多个设备连接到同一通信线上,通常用于工业和商业环境中。
RS485的主要特点:
-
多点通信:RS485支持多达32个设备(理论上可以更多,但实际应用中受电气性能和协议限制)连接到同一对双绞线上。
-
电气特性:RS485使用差分信号传输,这意味着它使用两根线(A线和B线)来传输信号,其中A线上的电压与B线上的电压之差决定了传输的数据位。
-
抗干扰性:由于使用差分信号,RS485具有很好的抗电磁干扰(EMI)能力,适合在噪声较大的工业环境中使用。
-
长距离通信:RS485可以支持较远的通信距离,可达1200米,这取决于线缆质量和信号速率。
-
数据速率:RS485支持的数据速率范围很广,从300bps到10Mbps不等,具体取决于应用需求和网络配置。
-
总线拓扑:RS485使用总线拓扑结构,所有的设备都连接到同一条双绞线上。
-
终端电阻:RS485网络需要在总线的两端各接一个终端电阻,以减少信号反射。
-
网络管理:RS485网络中的设备可以是主设备或从设备,通信通常由主设备控制。
-
应用广泛:RS485被广泛应用于工业自动化、楼宇自动化、远程监控、串行设备联网等领域。
RS485的工作流程:
-
网络初始化:所有设备连接到双绞线上,并在两端接上终端电阻。
-
设备地址:每个设备都有一个唯一的地址,通信时主设备通过发送地址来选择特定的从设备。
-
数据传输:主设备发起通信,发送数据到选定的从设备,从设备响应请求并发送数据回主设备。
-
监听冲突:由于是多点通信,设备需要监听线上的信号,以避免发送冲突。
-
错误检测:RS485通常不包括内置的错误检测机制,但可以通过软件实现校验和或CRC等错误检测方法。
RS485是一种非常可靠和灵活的通信协议,尤其适合于需要长距离通信和多点设备连接的应用场景。然而,设计和调试RS485网络需要仔细考虑终端电阻、线缆质量和网络拓扑等因素,以确保通信的可靠性。
RS485常用引脚:
-
A 和 B - 数据发送和接收线:A和B是一对差分信号,
- A线:在某些实现中,A线用于发送数据(TX)和接收数据(RX)。在全双工通信中,A线可以同时用于发送和接收。
- B线:与A线类似,B线也用于数据的发送和接收。在某些配置中,A和B线可以作为差分信号线,提高信号的抗干扰能力。
-
GND - 地线(可选):
- 地线为通信设备提供共同的参考电位,确保信号的准确传输。
-
VCC - 电源线(可选):
- 某些RS485收发器模块可能需要外部电源,VCC引脚用于连接电源。
-
DE 或 RE - 数据使能或接收使能(可选):
- 在某些设备中,DE(Data Enable)或RE(Receiver Enable)引脚用于控制数据的发送或接收。
-
TX+ 和 TX- - 发送正负数据线(差分信号,可选):
- 在使用差分信号的实现中,TX+ 和 TX- 用于发送数据,提供更好的抗干扰性能。
-
RX+ 和 RX- - 接收正负数据线(差分信号,可选):
- 与TX+ 和 TX- 相对应,RX+ 和 RX- 用于接收数据。
-
RO - 接收输出(可选):
- 在某些设备中,RO引脚提供接收到的数据信号。
-
DI - 数据输入(可选):
- DI引脚用于输入要发送的数据。
-
RE/DE - 接收使能/数据使能(可选):
- 这个引脚可能用于控制接收器的使能状态或数据的发送。
-
TXEN - 传输使能(可选):
- TXEN引脚可能用于控制数据的发送。
RS485通信依赖于差分信号传输,这意味着数据是通过A线和B线之间的电压差来确定的。差分信号传输有助于减少电磁干扰(EMI)并提高信号的完整性,特别是在较长距离或噪声较大的环境中。
在设计RS485通信系统时,还需要考虑终端电阻、总线拓扑(通常为总线或树形结构)和适当的线缆类型,以确保系统的稳定和可靠运行。
逻辑分析仪、示波器测量RS485信号:
选择A B中的一根线,测量仪器的gnd接到rs485的地,即可进行测量。
6.RS232
RS232是一种传统的串行通信协议,正式名称为"Recommended Standard 232",又称EIA232,它是电子工业联盟(EIA)在1960年发布的一种标准。RS232被广泛用于计算机与外部设备(如调制解调器、打印机、鼠标等)之间的数据通信。
RS232的主要特点:
-
电气特性:RS232使用正负电压来表示二进制数据,+3到+15伏特表示二进制"0"(逻辑"1"),-3到-15伏特表示二进制"1"(逻辑"0")。
-
信号速率:RS232的信号速率(波特率)可以变化,常见的波特率有300、600、1200、2400、4800、9600、19200、38400、57600和115.2Kbps等。
-
连接线:RS232通常使用25针的D-sub连接器(DB25),但实际通信中只使用少数几个引脚,最常用的是2(接收)、3(发送)和7(载波检测)。
-
控制信号:RS232包括控制信号,如载波检测(CD)、数据终端就绪(DTR)、请求发送(RTS)、允许发送(CTS)等,用于管理通信。
-
连接距离:RS232适合短距离通信,通常在15米以内效果最佳,较长距离通信需要使用信号增强器。
-
应用广泛:RS232曾被广泛应用于计算机与外部设备之间的通信,随着USB等技术的发展,其应用逐渐减少。
-
配置灵活:RS232允许用户根据需要配置数据位(通常是7或8位)、停止位(1或2位)和奇偶校验位。
-
软件控制:RS232通信可以通过软件进行控制,操作系统提供了API来管理串行端口。
RS232的工作流程:
-
初始化:设置串行端口参数,如波特率、数据位、停止位和奇偶校验。
-
连接:使用DB25连接器将计算机与外部设备连接。
-
发送数据:计算机通过发送线(引脚2)向外部设备发送数据。
-
接收数据:计算机通过接收线(引脚3)从外部设备接收数据。
-
控制信号:使用控制线(如DTR和CD)来管理通信状态。
-
错误检测:通过奇偶校验和其他机制检测通信错误。
-
结束通信:完成数据传输后,关闭串行端口连接。
尽管RS232在现代计算机系统中的使用已经大大减少,但它在某些特定领域(如串行控制台、某些工业设备等)仍然发挥着作用。此外,RS232的许多概念和技术在现代串行通信中仍然有其影响。
7.TTL
TTL(Transistor-Transistor Logic,晶体管-晶体管逻辑)是一种广泛使用的数字逻辑门电路技术,它使用双极型晶体管来构建逻辑门。TTL技术在20世纪60年代和70年代非常流行,因其高速和可靠性而被广泛应用于计算机和数字系统中。
TTL的主要特点:
-
高速:TTL门电路在早期被认为是高速的,尽管与现代CMOS技术相比速度较慢。
-
低功耗:与早期的其他逻辑门技术相比,TTL具有较低的功耗。
-
温度稳定性:TTL电路设计为在较宽的温度范围内工作。
-
饱和输出:TTL逻辑门的输出在高电平和低电平之间有明显的区分,即输出处于饱和状态。
-
负逻辑:TTL通常使用负逻辑,其中逻辑"0"是高电平,逻辑"1"是低电平。
-
扇出能力:TTL门具有有限的扇出能力,即一个输出可以驱动的输入数量有限。
-
噪声容限:TTL电路具有较高的噪声容限,能够抵抗一定程度的电压波动。
-
兼容性:TTL电路有标准的电压和逻辑电平,使其在不同设备和系统之间具有良好的兼容性。
TTL的应用:
- 计算机硬件:早期的计算机和微处理器使用TTL电路构建算术逻辑单元(ALU)和存储器。
- 数字逻辑电路:TTL用于构建各种数字逻辑电路,如解码器、编码器、多路复用器等。
- 接口电路:TTL用于构建串行通信接口,如RS232,以及并行接口。
- 电子仪器:许多电子测试和测量仪器,如示波器和逻辑分析仪,使用TTL电路。
TTL的类型:
- 标准TTL:最初的TTL系列,提供基本的逻辑门和缓冲器。
- LS-TTL(Low Power Schottky TTL):低功耗版本,使用肖特基二极管提高开关速度。
- HCT-TTL(High Speed CMOS TTL):与CMOS兼容的TTL系列,提供更快的开关速度和更低的功耗。
- LVTTL(Low Voltage TTL):低电压版本,适用于3.3V逻辑系统。
尽管TTL技术已经被更先进的CMOS技术所取代,但TTL电路仍然在某些特定应用中使用,特别是在教育、业余爱好者项目和某些特定的工业应用中。TTL电路的简单性和可靠性使其成为学习和理解数字逻辑原理的一个很好的起点。
不过还是不知道不知道ttl和rs232有什么区别,只知道用过的ttl是四根线,rs232是3根线。不过资料又说ttl和几根线没有关系。
8.串口信号测量
逻辑分析仪:选择RS485的A线及其对应的地进行测量。
使用逻辑分析仪的解析器,信号类型选择UART/RS485/RS232,115200 8数据 1停止位 无奇偶校验 低位在前LSB
对主机发送的指令进行分析如下,绿色代表起始位,红色代表停止位,为了区分前后数据,在停止位的地方空了半格。
得到数据:0x 01 01 00 02 00 01 5C 0A (起始和停止位只是在电信号中起到标记的作用,在分析数据的时候,会首先被舍弃掉)
下面是应答信号:数据的数量是对的,但是内容不对,不知道怎么回事,测出来的应答一直不对,搞了反相什么的还是不对,先不管了。
0x 01 01 00 02 00 01 5C 0A
串口接收到的数据在modbus里的含义是: 01(地址1) 01(功能码) 0002(起始地址) 0001(地址数量) 5C0A(校验码)
stm32数据手册里关于串口收发数据的说明:
注意:时钟只是示意,不是说起始位之后才开启时钟。
引用:
最详细的UART通讯协议分析在这里最详细的 通讯协议 UART协议 分析在这里 串口,RS232,RS485等总线,内部使用的基本都 UART协议 。
文中的定义、概念部分,来自于KIMI模型的回答,没有一一确认是否正确。