STM32-- 通讯-串口通讯、RS485、232、SPI、I2C

基于RS485通信的Modbus通信协议 通信可以分为两个方面:硬件层:RS485解决的是数据传输问题,也就是说如何将一个“0”或“1”传输到另外一端。(保证了数据可以转移到另一端)软件层:modbus是在硬件基础上的传输协议,解决的是数据传输的含义或意义。MCU要想实现RS485通信,必须借助电平转换芯片。 因为MCU是TTL电平信号,RS485是差分信号,如何将单端信号转换成差分信号就需要电平转换芯片。TTL电平在传输信号特性逻辑“0”对应的电气信号为0V,逻辑“1”对应的电气信号为5V。RS485通常有两根差分信号线,A和B,RS485的电平 阅读详情

目录

串行通信与并行通信的比较

串行通信与并行通信的比较

1.同步和异步

同步串口通信(Synchronous Serial Communication)

异步串口通信(Asynchronous Serial Communication)

比较

2.全双工,半双工,单工

全双工(Full Duplex)

半双工(Half Duplex)

单工(Simplex)

比较

3.SPI

SPI的主要特点:

SPI的工作流程:

SPI的配置参数:

SPI常用引脚:

4.I2C

I2C的主要特点:

I2C的应用场景:

I2C的工作流程:

I2C常用引脚:

5.RS485

RS485的主要特点:

RS485的工作流程:

RS485常用引脚:

逻辑分析仪、示波器测量RS485信号:

6.RS232

RS232的主要特点:

RS232的工作流程:

7.TTL

TTL的主要特点:

TTL的应用:

TTL的类型:

8.串口信号测量   

9.属于哪个通信层级


串行通信与并行通信的比较

     串口(串行接口)

  • 数据传输:一次传输一个比特,通过单一的通信线路(或通道)。
  • 应用:常用于连接鼠标、键盘、打印机、调制解调器等设备,以及嵌入式系统中的设备间通信。
  • 标准:包括RS-232、RS-422、RS-485等。


    并口(并行接口)
  • 数据传输:一次可以传输多个比特,通过多个并行线路。
  • 应用:曾广泛用于打印机连接(Centronics接口),以及某些扫描仪和外部存储设备。
  • 标准:包括Centronics、IEEE 1284等。

串行通信与并行通信的比较

  • 传输方式:串行通信是按位顺序传输,而并行通信是多位同时传输。
  • 传输速度:串行通信速度较慢,但随着技术发展,高速串行通信标准已经可以支持非常高的数据传输速率。并行通信理论上可以更快,但实际应用中受到信号同步和干扰的限制。
  • 传输距离:串行通信更适合长距离传输,因为信号不容易失真。并行通信则因为信号同步问题,通常限于较短的距离。
  • 抗干扰性:串行通信因为使用单根线,所以抗干扰性较强。并行通信由于多根线之间可能产生串扰,抗干扰性相对较弱。
  • 成本和复杂性:串行通信的硬件成本和复杂性较低,因为只需要少数几根线。并行通信需要更多的线,增加了成本和复杂性。
  • 现代应用:随着技术的发展,串行通信(尤其是USB)已经取代了并行通信在大多数应用中的地位。

1.同步和异步

同步串口通信(Synchronous Serial Communication)

  1. 数据块传输:同步串口通信通常用于数据块的传输,其中数据被组织成帧或数据包。

  2. 时钟信号:同步通信需要一个时钟信号来同步发送方和接收方的数据传输。这个时钟信号可以是内部的或外部的。

  3. 高速数据传输:由于使用了时钟信号,同步串口可以支持更高的数据传输速率。

  4. 全双工通信:同步串口通常支持全双工通信,即可以同时发送和接收数据。

  5. 应用场景:常用于存储设备(如硬盘驱动器)、音频和视频传输,以及需要高速数据传输的应用。

  6. 硬件支持:同步串口通信通常需要硬件支持,如SPI(串行外设接口)或SDIO(安全数字输入输出)、I2C(Inter-Integrated Circuit集成电路互联)。

异步串口通信(Asynchronous Serial Communication)

  1. 字符传输:异步串口通信通常用于字符级别的传输,每个字符的发送和接收是独立的。

  2. 起始位和停止位:每个字符前后都有起始位和停止位,用于标记字符的开始和结束。

  3. 波特率:使用波特率来定义字符传输的速度,而不是时钟信号。

  4. 半双工或全双工通信:异步串口可以支持半双工或全双工通信,但在同一时间内只能发送或接收。

  5. 应用场景:广泛用于计算机与外部设备(如打印机、调制解调器)之间的通信,以及微控制器之间的通信。

  6. 硬件支持:异步串口通信通常由UART(通用异步收发器)或USART(通用同步/异步收发器)硬件支持。

比较

  • 时钟信号:同步通信需要时钟信号同步数据传输,而异步通信使用波特率和起始/停止位来控制数据传输。
  • 数据传输速率:同步通信通常可以实现更高的数据传输速率。
  • 全双工能力:同步通信更易于实现全双工通信。
  • 硬件要求:同步通信可能需要更复杂的硬件支持。
  • 应用范围:异步通信由于其简单性和灵活性,在许多标准设备和微控制器中更为常见。

2.全双工,半双工,单工

全双工、半双工和单工是描述通信通道工作方式的术语,它们指的是在通信过程中发送和接收数据的能力。

全双工(Full Duplex)

全双工通信允许数据同时双向传输,即通信的双方可以同时发送和接收信息。这种模式类似于电话通话,两个人可以同时讲话和听对方讲话。

特点:

  • 同时发送和接收:数据可以在两个方向上同时流动。
  • 通信效率:由于数据可以连续不断地双向传输,通信效率较高。
  • 常用技术:以太网(Ethernet)、双工RS-422和RS-485总线等。

半双工(Half Duplex)

半双工通信允许数据双向传输,但在同一时间内只能有一个方向的数据传输。这意味着发送和接收不能同时进行,通信双方需要交替进行发送和接收。

特点:

  • 交替发送和接收:数据可以在两个方向上传输,但不是同时。
  • 通信效率:通信效率可能低于全双工,因为需要时间来切换发送和接收模式。
  • 常用技术:某些类型的无线通信、某些网络协议等。

单工(Simplex)

单工通信只允许数据在一个方向上传输。在这种模式下,只有一个通信方可以发送数据,而另一个通信方只能接收数据。

特点:

  • 单向传输:数据只能从发送方流向接收方。
  • 通信效率:通信效率可能较低,因为没有反馈或确认机制。
  • 常用技术:广播、电视信号传输、某些类型的警报系统等。

比较

  • 全双工:可以想象成一条双向道路,车辆可以同时双向行驶。
  • 半双工:类似于单车道的道路,车辆需要交替行驶,不能同时双向行驶。
  • 单工:类似于一条单向道路,车辆只能朝一个方向行驶。

在实际应用中,选择哪种通信模式取决于通信需求、成本、技术限制和系统设计。例如,电话系统需要全双工通信以实现双向对话,而广播系统则使用单工通信,因为信息只从广播站向听众单向传输。

3.SPI

SPI(Serial Peripheral Interface)是一种广泛使用的同步串行通信协议,用于短距离通信,主要应用于微控制器和它们的外围设备之间。SPI是一种全双工通信协议,它允许数据在两个方向上同时传输。

SPI的主要特点:

  1. 全双工通信:SPI可以在两个方向上同时发送和接收数据,这是通过单独的数据线(MOSI - 主设备发送,从设备接收;MISO - 主设备接收,从设备发送)实现的。

  2. 同步通信:SPI使用一个时钟信号(SCLK或SCK)来同步数据传输,数据在时钟信号的上升沿或下降沿被采样。

  3. 主从架构:SPI通信需要一个主设备来初始化通信,它可以是微控制器或其他类型的设备。主设备控制时钟信号并选择从设备。

  4. 最少三线接口:SPI通信至少需要三条线:主设备发送(MOSI)、主设备接收(MISO)和时钟信号(SCLK)。

  5. 片选(Chip Select):SPI通常使用单独的片选线(CS或[nSS]),主设备可以通过这根线来选择特定的从设备。

  6. 数据速率:SPI的数据传输速率(时钟频率)可以变化,取决于主设备和从设备的速率能力。

  7. 灵活性:SPI协议相对简单,易于实现,支持多种数据格式和传输速率。

  8. 广泛的应用:SPI被广泛应用于各种电子设备,包括传感器、存储器、显示器、音频设备等。

SPI的工作流程:

  1. 初始化:主设备通过片选线选择特定的从设备,并将数据线配置为发送或接收模式。

  2. 发送时钟信号:主设备生成时钟信号,从设备根据这个信号同步数据传输。

  3. 数据传输:主设备通过MOSI线发送数据,同时从设备通过MISO线发送数据给主设备。

  4. 结束通信:主设备停止发送时钟信号,并通过片选线取消选择从设备,结束通信。

SPI的配置参数:

  • 时钟极性(CPOL):时钟信号的空闲状态,可以是高电平或低电平。
  • 时钟相位(CPHA):数据采样的时钟相位,可以是第一个时钟周期的边缘或第二个时钟周期的边缘。
  • 数据顺序:数据传输的顺序,可以是高位在前(MSB First)或低位在前(LSB First)。

SPI是一种非常灵活且高效的通信协议,适用于需要高速数据传输和简化布线的应用场景。然而,由于SPI是同步通信协议,它要求所有设备共享一个时钟信号,这可能会限制其在某些分布式系统中的使用。

SPI常用引脚:

SPI(Serial Peripheral Interface)是一种常见的串行通信协议,用于微控制器和它们的外围设备之间的通信。SPI通信协议通常涉及以下四种基本的引脚(接口信号):

  1. MOSI (Master Out Slave In) - 主设备发送,从设备接收:这是主设备用来向从设备发送数据的线路。

  2. MISO (Master In Slave Out) - 主设备接收,从设备发送:这是从设备用来向主设备发送数据的线路。

  3. SCLK (Serial Clock) - 时钟信号:由主设备生成的时钟信号,用于同步数据传输。数据通常在SCLK的上升沿或下降沿采样。

  4. 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的主要特点:

  1. 多主机能力:I2C总线上可以连接多个主设备和从设备,任何一个主设备都可以启动与从设备的通信。

  2. 同步通信:I2C使用一个时钟信号(SCL)来同步数据传输,数据在时钟的上升沿或下降沿被采样。

  3. 地址空间:每个从设备都有一个唯一的地址,主设备通过发送这个地址来选择与之通信的特定从设备。

  4. 数据速率:I2C支持不同的数据速率,包括标准模式(最高100 kbps)、快速模式(最高400 kbps)、快速模式加(最高1 Mbps)和高速模式(最高3.4 Mbps)。

  5. 总线仲裁:当两个主设备尝试同时控制总线时,I2C协议通过仲裁机制来决定哪个主设备保留总线控制权。

  6. 信号线:I2C通信只需要两根线:串行数据线(SDA)和串行时钟线(SCL)。

  7. 应答机制:I2C协议包括一个应答(ACK)机制,从设备在接收到数据后发送一个应答位,以指示数据已被成功接收。

  8. 支持扩展:I2C总线可以通过使用不同的地址位来扩展,以支持更多的从设备。

  9. 简单性:I2C是一种相对简单且成本效益高的通信协议,适用于短距离通信和低速数据传输。

I2C的应用场景:

  • 微控制器:用于微控制器与各种外围设备(如传感器、显示器、EEPROM等)之间的通信。
  • 系统管理:用于系统管理任务,如实时时钟(RTC)、电源管理等。
  • 消费电子:在便携式设备和消费电子产品中用于连接小型外围设备。
  • 工业应用:在一些需要可靠性和稳定性的工业环境中使用。

I2C的工作流程:

  1. 开始条件:主设备通过将SDA从高电平拉低到低电平,同时SCL为高电平来开始通信。
  2. 地址和读/写位:主设备发送从设备的7位地址后跟一个读/写位(0表示写,1表示读)。
  3. 应答位:从设备通过在时钟的下一个脉冲上将SDA拉低来发送应答。
  4. 数据传输:数据以8位字节传输,每个字节后跟一个应答位。
  5. 结束条件:主设备通过将SDA从低电平拉高到高电平,同时SCL为高电平来结束通信。

I2C常用引脚:

I2C(Inter-Integrated Circuit)是一种多主机、同步串行通信协议,用于连接微控制器和外围设备或多个设备。I2C通信通常使用以下两种基本的引脚(信号线):

  1. SDA (Serial Data) - 串行数据线:这个双向线路用于传输数据。数据通过SDA线在设备之间传输。

  2. 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的主要特点:

  1. 多点通信:RS485支持多达32个设备(理论上可以更多,但实际应用中受电气性能和协议限制)连接到同一对双绞线上。

  2. 电气特性:RS485使用差分信号传输,这意味着它使用两根线(A线和B线)来传输信号,其中A线上的电压与B线上的电压之差决定了传输的数据位。

  3. 抗干扰性:由于使用差分信号,RS485具有很好的抗电磁干扰(EMI)能力,适合在噪声较大的工业环境中使用。

  4. 长距离通信:RS485可以支持较远的通信距离,可达1200米,这取决于线缆质量和信号速率。

  5. 数据速率:RS485支持的数据速率范围很广,从300bps到10Mbps不等,具体取决于应用需求和网络配置。

  6. 总线拓扑:RS485使用总线拓扑结构,所有的设备都连接到同一条双绞线上。

  7. 终端电阻:RS485网络需要在总线的两端各接一个终端电阻,以减少信号反射。

  8. 网络管理:RS485网络中的设备可以是主设备或从设备,通信通常由主设备控制。

  9. 应用广泛:RS485被广泛应用于工业自动化、楼宇自动化、远程监控、串行设备联网等领域。

RS485的工作流程:

  1. 网络初始化:所有设备连接到双绞线上,并在两端接上终端电阻。

  2. 设备地址:每个设备都有一个唯一的地址,通信时主设备通过发送地址来选择特定的从设备。

  3. 数据传输:主设备发起通信,发送数据到选定的从设备,从设备响应请求并发送数据回主设备。

  4. 监听冲突:由于是多点通信,设备需要监听线上的信号,以避免发送冲突。

  5. 错误检测:RS485通常不包括内置的错误检测机制,但可以通过软件实现校验和或CRC等错误检测方法。

RS485是一种非常可靠和灵活的通信协议,尤其适合于需要长距离通信和多点设备连接的应用场景。然而,设计和调试RS485网络需要仔细考虑终端电阻、线缆质量和网络拓扑等因素,以确保通信的可靠性。

RS485常用引脚:

  1. A 和 B - 数据发送和接收线:A和B是一对差分信号,

    • A线:在某些实现中,A线用于发送数据(TX)和接收数据(RX)。在全双工通信中,A线可以同时用于发送和接收。
    • B线:与A线类似,B线也用于数据的发送和接收。在某些配置中,A和B线可以作为差分信号线,提高信号的抗干扰能力。
  2. GND - 地线(可选):

    • 地线为通信设备提供共同的参考电位,确保信号的准确传输。
  3. VCC - 电源线(可选):

    • 某些RS485收发器模块可能需要外部电源,VCC引脚用于连接电源。
  4. DE 或 RE - 数据使能或接收使能(可选):

    • 在某些设备中,DE(Data Enable)或RE(Receiver Enable)引脚用于控制数据的发送或接收。
  5. TX+ 和 TX- - 发送正负数据线(差分信号,可选):

    • 在使用差分信号的实现中,TX+ 和 TX- 用于发送数据,提供更好的抗干扰性能。
  6. RX+ 和 RX- - 接收正负数据线(差分信号,可选):

    • 与TX+ 和 TX- 相对应,RX+ 和 RX- 用于接收数据。
  7. RO - 接收输出(可选):

    • 在某些设备中,RO引脚提供接收到的数据信号。
  8. DI - 数据输入(可选):

    • DI引脚用于输入要发送的数据。
  9. RE/DE - 接收使能/数据使能(可选):

    • 这个引脚可能用于控制接收器的使能状态或数据的发送。
  10. TXEN - 传输使能(可选):

    • TXEN引脚可能用于控制数据的发送。

RS485通信依赖于差分信号传输,这意味着数据是通过A线和B线之间的电压差来确定的。差分信号传输有助于减少电磁干扰(EMI)并提高信号的完整性,特别是在较长距离或噪声较大的环境中。

在设计RS485通信系统时,还需要考虑终端电阻、总线拓扑(通常为总线或树形结构)和适当的线缆类型,以确保系统的稳定和可靠运行。

逻辑分析仪、示波器测量RS485信号:

        选择A  B中的一根线,测量仪器的gnd接到rs485的地,即可进行测量。

6.RS232

RS232是一种传统的串行通信协议,正式名称为"Recommended Standard 232",又称EIA232,它是电子工业联盟(EIA)在1960年发布的一种标准。RS232被广泛用于计算机与外部设备(如调制解调器、打印机、鼠标等)之间的数据通信。

RS232的主要特点:

  1. 电气特性:RS232使用正负电压来表示二进制数据,+3到+15伏特表示二进制"0"(逻辑"1"),-3到-15伏特表示二进制"1"(逻辑"0")。

  2. 信号速率:RS232的信号速率(波特率)可以变化,常见的波特率有300、600、1200、2400、4800、9600、19200、38400、57600和115.2Kbps等。

  3. 连接线:RS232通常使用25针的D-sub连接器(DB25),但实际通信中只使用少数几个引脚,最常用的是2(接收)、3(发送)和7(载波检测)。

  4. 控制信号:RS232包括控制信号,如载波检测(CD)、数据终端就绪(DTR)、请求发送(RTS)、允许发送(CTS)等,用于管理通信。

  5. 连接距离:RS232适合短距离通信,通常在15米以内效果最佳,较长距离通信需要使用信号增强器。

  6. 应用广泛:RS232曾被广泛应用于计算机与外部设备之间的通信,随着USB等技术的发展,其应用逐渐减少。

  7. 配置灵活:RS232允许用户根据需要配置数据位(通常是7或8位)、停止位(1或2位)和奇偶校验位。

  8. 软件控制:RS232通信可以通过软件进行控制,操作系统提供了API来管理串行端口。

RS232的工作流程:

  1. 初始化:设置串行端口参数,如波特率、数据位、停止位和奇偶校验。

  2. 连接:使用DB25连接器将计算机与外部设备连接。

  3. 发送数据:计算机通过发送线(引脚2)向外部设备发送数据。

  4. 接收数据:计算机通过接收线(引脚3)从外部设备接收数据。

  5. 控制信号:使用控制线(如DTR和CD)来管理通信状态。

  6. 错误检测:通过奇偶校验和其他机制检测通信错误。

  7. 结束通信:完成数据传输后,关闭串行端口连接。

尽管RS232在现代计算机系统中的使用已经大大减少,但它在某些特定领域(如串行控制台、某些工业设备等)仍然发挥着作用。此外,RS232的许多概念和技术在现代串行通信中仍然有其影响。

7.TTL

TTL(Transistor-Transistor Logic,晶体管-晶体管逻辑)是一种广泛使用的数字逻辑门电路技术,它使用双极型晶体管来构建逻辑门。TTL技术在20世纪60年代和70年代非常流行,因其高速和可靠性而被广泛应用于计算机和数字系统中。

TTL的主要特点:

  1. 高速:TTL门电路在早期被认为是高速的,尽管与现代CMOS技术相比速度较慢。

  2. 低功耗:与早期的其他逻辑门技术相比,TTL具有较低的功耗。

  3. 温度稳定性:TTL电路设计为在较宽的温度范围内工作。

  4. 饱和输出:TTL逻辑门的输出在高电平和低电平之间有明显的区分,即输出处于饱和状态。

  5. 负逻辑:TTL通常使用负逻辑,其中逻辑"0"是高电平,逻辑"1"是低电平。

  6. 扇出能力:TTL门具有有限的扇出能力,即一个输出可以驱动的输入数量有限。

  7. 噪声容限:TTL电路具有较高的噪声容限,能够抵抗一定程度的电压波动。

  8. 兼容性: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数据手册里关于串口收发数据的说明:
注意:时钟只是示意,不是说起始位之后才开启时钟。

9.属于哪个通信层级

这些通信协议和标准在OSI模型中的位置和作用如下:

  • 物理层:

    • 串口(UART)
    • RS485
    • SPI
    • CAN
  • 数据链路层:

    • 串口(UART,有限的错误检测)
    • SPI
    • CAN(包含帧结构和错误处理)
    • Modbus(主要为数据链路层协议,但也包含应用层部分)
  • 应用层:

    • Modbus(包含命令集和数据格式)

10.半件通信和板内通信

“板间”和“板内”是指电子电路中不同的信号传输方式。理解和区分这两者对于设计和调试电子系统至关重要。

板内信号传输

定义:

  • **板内(On-board)**信号传输是指信号在同一块电路板(PCB)上的传输。

特点:

  1. 距离较短:信号传输的距离通常只有几厘米到几十厘米。
  2. 速度较快:由于距离短,信号传输延迟较小。
  3. 噪声干扰较小:信号路径较短,易于控制电磁干扰和信号完整性问题。
  4. 传输介质:主要通过电路板上的铜线、焊盘和过孔进行传输。

应用:

  • 板上的各种元器件之间的连接,如微控制器、传感器、存储器等。
  • 在设计PCB时,需要注意布线的阻抗匹配和电源分配。

板间信号传输

定义:

  • **板间(Inter-board)**信号传输是指信号在不同的电路板之间传输。

特点:

  1. 距离较长:信号传输的距离通常从几厘米到几米不等。
  2. 速度较慢:由于距离较长,信号传输延迟较大,且可能需要使用专门的驱动和接收电路来维持信号完整性。
  3. 噪声干扰较大:由于距离较长,容易受到电磁干扰,需要使用屏蔽、差分对等技术来降低干扰。
  4. 传输介质:主要通过电缆、连接器、光纤等进行传输。

应用:

  • 在多板系统中,如计算机主板与扩展卡、不同模块间的通信。
  • 使用专用的连接器和电缆,如平板线缆、同轴电缆等。

区分板内和板间信号传输的方法

  1. 物理位置:

    • 板内信号传输:信号路径完全在一块电路板上。
    • 板间信号传输:信号从一块电路板通过连接器、电缆等传输到另一块电路板。
  2. 传输介质:

    • 板内信号传输:使用PCB上的铜线、焊盘和过孔。
    • 板间信号传输:使用连接器、电缆、光纤等。
  3. 设计考虑:

    • 板内信号传输:主要关注PCB布线、阻抗匹配、电源分配等。
    • 板间信号传输:需要考虑连接器、电缆的选择,屏蔽和信号完整性处理等。
  4. 电气特性:

    • 板内信号传输:由于距离短,传输延迟和信号衰减较小。
    • 板间信号传输:由于距离长,传输延迟和信号衰减较大,需要使用驱动电路和接收电路。

示例

板内传输示例:

  • 在一块电路板上,微控制器通过PCB布线与传感器和LED连接。

板间传输示例:

  • 一块主板通过平板线缆与另一块扩展板连接,主板上的微控制器通过连接器和电缆与扩展板上的传感器通信。

实际应用中的考虑

  • 高速信号传输:对于高速信号,板内和板间传输都需要特别注意信号完整性,可能需要使用差分信号对和屏蔽技术。
  • 电源分配:在多板系统中,电源分配也是一个重要问题,需要确保每块电路板都能得到稳定的电源供应。

通过了解和区分板内和板间信号传输,可以在设计和调试电子系统时做出更好的决策,确保系统的可靠性和性能

I2C用于板间通信的可行性

优点:

  1. 简单性:I2C协议简单,使用两条线(SCL和SDA)即可实现通信。
  2. 多主多从架构:支持多主多从,便于扩展。
  3. 常见:许多传感器和设备都支持I2C,便于集成。

缺点和限制:

  1. 距离限制:I2C通常设计用于短距离通信,典型的传输距离在几厘米到几十厘米之间。用于板间通信时,传输距离可能受到限制。
  2. 速度限制:标准I2C速度为100kHz和400kHz,高速模式可达3.4MHz,但长距离传输可能会增加信号衰减和干扰。
  3. 信号完整性:长距离传输会导致信号衰减和干扰,可能需要使用屏蔽电缆和驱动电路来维持信号完整性。
  4. 电容负载:I2C总线上的电容负载应尽量低,长距离和多设备连接会增加电容负载,影响通信可靠性。

提高板间I2C通信可靠性的方法

  1. 降低速率:降低I2C通信速率以提高长距离传输的稳定性。例如,从400kHz降到100kHz。
  2. 使用驱动电路:使用I2C总线驱动器或缓冲器,如P82B715、P82B96等,这些驱动器可以增强信号,允许更长的传输距离。
  3. 屏蔽电缆:使用屏蔽电缆来减少电磁干扰,提高信号质量。
  4. 差分信号:如果距离较长,考虑将I2C信号转换为差分信号进行传输,再在接收端还原,类似于RS-485技术。
  5. 减少负载:尽量减少总线上的设备数量,以降低电容负载。
  6. 适当的拉电阻:使用适当的上拉电阻值,以确保信号的上升时间和下降时间在规范范围内。

实例应用

假设有两个电路板,一个主板和一个扩展板,需要通过I2C进行通信。以下是一些实用建议:

硬件连接
  1. 使用屏蔽电缆:

    • 选择屏蔽双绞线来连接SCL和SDA信号,并接地屏蔽层。
  2. 增加I2C驱动器:

    • 在主板和扩展板之间增加I2C总线驱动器,例如P82B715,这可以增强信号传输距离。

SPI(Serial Peripheral Interface)协议由于其高速和全双工通信特点,是一种广泛用于短距离数据传输的标准。虽然它主要设计用于板内通信,但在特定情况下,SPI也可以用于板间通信。以下是一些关键点和建议,确保SPI用于板间通信的可行性和可靠性。

SPI用于板间通信的可行性

优点:

  1. 高速通信:SPI支持高达几十MHz的传输速率,适合高速数据传输。
  2. 全双工通信:SPI支持同时发送和接收数据。
  3. 简单性:SPI协议简单,使用四条线(MOSI、MISO、SCLK和CS)即可实现通信。

缺点和限制:

  1. 距离限制:SPI通常设计用于短距离通信,长距离传输会导致信号衰减和干扰。
  2. 多从设备管理:SPI需要独立的片选信号管理多个从设备,这在板间通信时需要额外的线缆。

提高板间SPI通信可靠性的方法

  1. 降低速率:降低SPI时钟速率以提高长距离传输的稳定性。例如,从几十MHz降到几MHz。
  2. 使用驱动电路:使用SPI驱动器或缓冲器来增强信号,允许更长的传输距离。
  3. 屏蔽电缆:使用屏蔽电缆来减少电磁干扰,提高信号质量。
  4. 差分信号:如果距离较长,考虑将SPI信号转换为差分信号进行传输,再在接收端还原,类似于RS-485技术。
  5. 适当的终端匹配:在信号线上添加终端电阻匹配,以减少反射和噪声。

实例应用

假设有两个电路板,一个主板和一个扩展板,需要通过SPI进行通信。以下是一些实用建议:

硬件连接
  1. 使用屏蔽电缆:

    • 选择屏蔽双绞线来连接MOSI、MISO、SCLK和CS信号,并接地屏蔽层。
  2. 增加SPI驱动器:

    • 在主板和扩展板之间增加SPI总线驱动器,这可以增强信号传输距离。

USART、SPI、I2C三种常用通信协议的异同优劣

协议USARTSPII2C
总线TXD、RXD、GNDCSN、MISO、MOSI、GNDVCC、GND、SCL、SDA
同步/异步异步同步同步
全/半双工全双工全双工半双工
传输速度较低高中
场景板内/板间板内/板间(板间距离需要短,速度需要低)板内
模式一对一一对多一对多/多对多
多从机实现不可多从机使用CSN寻址地址


引用:

最详细的UART通讯协议分析在这里最详细的 通讯协议 UART协议 分析在这里 串口,RS232,RS485等总线,内部使用的基本都 UART协议 。

STM32 - UART、IIC、SPI通信协议

https://www.cnblogs.com/Jimmy1988/p/17207174.html#1%E6%9D%BF%E5%86%85%E9%80%9A%E4%BF%A1

文中的定义、概念部分,来自于KIMI模型的回答,没有一一确认是否正确。

文章所有资料仅作参考。

《QT+PCL 第一章》:点云读取显示 点云读取显示一、核心代码二、QT设置三、效果展示 一、核心代码 二、QT设置 三、效果展示 阅读详情

相关推荐

SEW MDX61B 变频器调试说明

可手动自由更改时间和地址,时间一般不更改,IP地址使用网络适配器地址(Network adapter),点击进入即可。进入网络适配器(Network adapter)后,选择适配器建议地址,点击OK,更改IP地址后点击OK。点击加载配置文件(Load a configuration),加载已保存的应用模块配置文件, 或者点击“next”,开始重新配置AMA0801模块。满足安全回路后,控制模式选为寻参模式(Reference mode),选中开始(start),即可将机械零点设置为电气零点。

xdpcxq的专栏 4316

I2C协议简介

I2C通信协议是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛的使用在系统内多个集成电路(IC)间的通讯。

weixin_54366081的博客 2876

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 369

IIC协议精讲(适合了解过的)

iic协议讲解

weixin_45401375的博客 1356

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1207

卷积操作复杂度公式推导

复杂度Hout⋅Wout⋅Cout⋅Cin⋅k2\text{复杂度} = H_{\text{out}} \cdot W_{\text{out}} \cdot C_{\text{out}} \cdot C_{\text{in}} \cdot k^2复杂度Hout​⋅Wout​⋅Cout​⋅Cin​⋅k2该公式反映了卷积核作用于每个像素时的局部操作和跨通道的计算需求。卷积计算复杂度与输入尺寸线性相关。

qq_41037856的博客 1308

IIC外设 架构分析

start 数据位 写1时:两个总线SCL 和SDA 配合产生 起始信号。SMBA:i2c 协议的外设也可以用 SMBus协议通信。通过 时钟控制逻辑中 控制SCL线的 (控制通信速度)PCLK1 = APB1 的时钟 (默认为36M Hz)可通过才数据位 检测总线上是否有数据正在通信。配置为0时: 将低电平为高电平的2倍。时钟控制寄存器(CCR)

qq_63376551的博客 1490

给STM32F4装上耳朵:用麦克风模块和Keil MDK实现你的第一个语音指令(附完整代码)

本文详细介绍了如何使用STM32F4开发板和麦克风模块实现简单的语音指令识别系统。通过Keil MDK开发环境配置、ADC音频采样、语音活动检测和模板匹配算法,开发者可以快速构建响应'开灯'、'关灯'等基础指令的语音交互方案。文章包含完整代码实现和调试技巧,特别适合STM32初学者入门语音识别领域。

weixin_29171087的博客 436

STM32——stm32 I2C通信代码配置(2)(学习笔记)

STM32——I2C通信配置I2C的系统框架1、通讯引脚2、时钟控制逻辑3、数据控制逻辑4、整体控制逻辑I2C代码配置 既上一篇文章对I2C的理论分析、讲解。基本原理已经大致了解了。本文就以I2C在stm32上的系统框架图的分析、讲解和对I2C的代码配置。 基于平台:STM32F407ZG 参考资料:STM32f4参考手册、STM32f4数据手册 I2C的系统框架 本文对I2C系统框架图分解成四部分: ●通讯引脚 ●时钟控制逻辑 ●数据控制逻辑 ●整体控制逻辑 1、通讯引脚 在框架图中我们看到主要有三个

weixin_51914919的博客 1万+

【技术解析】华为智算中心:昇腾AI算力与无损网络如何驱动大模型训练

本文深入解析了华为智算中心如何通过昇腾AI算力与超融合以太无损网络的协同,驱动千亿参数大模型的高效训练。昇腾NPU提供专用计算引擎,而基于RoCE的无损网络则通过PFC、ECN等技术确保万卡集群间的高带宽、零丢包通信,实现算力利用率最大化,解决大规模AI训练的核心瓶颈。

weixin_29311017的博客 200

华为OD机试 - 音乐小说内容重复识别 - 并查集(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题。

学Java,找哪吒 159

【干货】深度解析I2C原理,建议收藏!

I2C全拼Inter Integrated Circuit,简称IIC或I2C,是由Philips公司开发的两线时串行总线,用于SOC与外设的连接通讯,它只需要两根线就能实现I2C的通讯,采用主从模式,主的一方可以读写数据,而从的一方只能等待被读写。从的一方没有主动权。

dpwkj的博客 4235

零基础学写《扫雷》游戏(Qt扫雷源码)

扫雷游戏是在windows系统中自带的游戏,他的游戏玩法其实很简单,20世纪初期电脑上没有啥游戏可以玩,所以扫雷游戏也算是当时是最常火爆的一个电脑游戏。以下文章详细介绍扫雷游戏的实现。实现语言为C++。

啊渊的专栏 1万+

RS232、RS485、SPI、IIC 4种嵌入式经典通信总线协议

UART、RS232、RS485、IIC、SPI是最常用的5种通信总线协议,广泛应用于项目开发之中,可以说只要是智能终端产品,都会使用到它!智能时代,它不仅是嵌入式物联网、智能硬件开发的必备技能,也是进一步学习TCP/IP等复杂通信协议的基础。从本质上来说,RS232,RS485都是依附于UART,只不过是在电气层或者物理层上的规定不同,目的是为了提高抗干扰能力,提高传输距离和传输的速度。SPI,IIC则是独立的总线协议,但两者之间也有相同之处,我们可以将两放在一起相互比较学习,体会这两种协议之间优缺点。

wa_chao_的博客 2940

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[STM32 - 野火] - - - 固件库学习笔记 - - -八.IIC

A0 ~ A2:地址输入。像上图中,A0~A2都接到GND,故为000WP:Write Protect,写保护。(此引脚为高电平则无法写入数据)NC:No Connect 空引脚。

优快云_PBB的博客 1800

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IIC基础回顾——硬件I2C

文章目录前言I2C控制器设计思路源码分析main.ci2c.ceeprom.c运行结果源码 前言 使用硬件I2C是,不用编写协议时序细节,通过寄存器配置好MCU的I²C控制器,I²C控制器便可控制引脚自动输出I²C时序。这里还是基于STM32F103_MIN开发板,以读写EEPROM(ATC2402)为例,进行回顾和分析。 I2C控制器 STM32F103系列的I2C控制器,可作为通信主机或从机,因此有4中工作模式可选择:主机发送模式、主机接收模式,从机发送模式、从机接收模式。 传输速度上,支持标准模式

m0_56145255的博客 6257

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

详解I2C原理

点击蓝字关注我们关注、星标公众号,精彩内容每日送达 来源:网络素材1. 什么是I2C?I2C全拼Inter Integrated Circuit,简称IIC或I2C,是由Philips公司开发的两线时串行总线,用于SOC与外设的连接通讯,它只需要两根线就能实现I2C的通讯,采用主从模式,主的一方可以读写数据,而从的一方只能等待被读写。从的一方没有主动权。I2C是双向通讯的,由两根线完成,分别是:S...

HackEle的博客 1086

学习记录 i2c协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 学习记录stm32f407和imx6ull两种板子中i2c的实现 一、I2C协议 I2C(Inter_Integraated Circuit)无需 USART、CAN 等协议所需的外部收发设备。多用于多个集成电路(IC之间的通讯。 该总线为半双工协议,相比于spi(spi总线的主机地址固定)i2c是多主机总线,且i2c可在通讯过程中改变主机。 SCL:串行时钟线 SDA:双向串行数据线 每个连接到i2c的设备拥有一个地址,并

Artzeey的博客 2023

【STM32自学笔记-I2C】

STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担。STM32 的 I2C 外设可用作通讯的主机及从机,支持 100Kbit/s 和 400Kbit/s 的速率,支持 7 位、 10位设备地址,支持 DMA 数据传输,并具有数据校验功能。它的 I2C 外设还支持 SMBus2.0 协议,SMBus 协议与 I2C 类似,主要应用于笔记本电脑的电池管理中。

qq_64510811的博客 619

详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

前言 针对GPIO、I2C、SPI的讲解,对这些通讯方式有个大致框架,对日后的开发会有帮助,了解因为所以然。 一. GPIO 1. 什么是GPIO? GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展器,GPIO口是由引脚,功能寄存器组成,不同的架构中的GPIO封装不同,所使用的引脚数与寄存器数不同,具体可以参考芯片手册里的GPIO篇。 GPIO的作用是用来控制连接在此GPIO口上的外设,我们一般通过观察原理图找到当前板子的GPIO口引出在

17岁boy的博客 8万+

I2C协议基础以及SMBUS和PMBUS基础介绍

     I2C(Inter−Integrated Circuit)I^2C(Inter-Integrated\ Circuit)I2C(Inter−Integrated Circuit)协议也是我们经常在单片机开发中用到的很常见的协议,按字面翻译就是“集成间的电路”,之前主要用来在同一块电路板上模块之间的通信。协议是由飞利浦公司(PhilipsPhilipsPhilips)在80年代发明设计,2006年飞利浦公司的半导体事业部从飞利浦拆

caoleiwe的博客 2431

STM32基础篇:I2C通信协议

在STM32内部有两个I2C模块(即I2C1、I2C2),挂在APB1总线上。每个I2C模块有三个引脚,分别为:SCL、SDA、SMBA;本文不涉及SMBA引脚的讲述。复用功能Remap=0Remap=1I2C1_SCLPB6PB8I2C1_SDAPB7PB9I2C1_SMBAPB5I2C2_SCLPB10I2C2_SDAPB11I2C2_SMBAPB12。

qq_74114817的博客 1724

SMBus(System Management Bus,系统管理总线)介绍

“SMBA总线”应为SMBus(System Management Bus,系统管理总线),这是一种基于I2C协议发展而来的、主要用于系统管理和电源管理的低速率通信总线。

mftang的博客 724

为了成功上岸之通信(总线)接口总结[未完待续]

为了成功上岸之通信(总线)接口总结各种通信接口的简单对比表同步方式与异步方式的主要区别UARTUART的简介UART接口的引脚UART的传输格式UART数据传输格式SPISPI的简介SPI接口的引脚SPI的工作原理SPI的四种工作方式下图为四种工作模式的时序图 各种通信接口的简单对比表 同步方式与异步方式的主要区别 是否传输时钟信号。 只要是通讯前双方需要设定相同波特率的,都是异步传输方式。 异步传输(Asynchronous Transmission): 每次异步传输的信息都以一个起始位开头,它通

weixin_44006670的博客 1440

五种总线协议(UART、RS232、RS485、IIC、SPI)

在异步通讯中,不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据。半双工通信:可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替进行,其实也可以理解成一种可以切换方向的单工通信,同一时刻必须只能一个方向传输,只需一根数据线。全双工通信:在同一时刻,两个设备之间可以同时收发数据,全双工方式无需进行方向的切换,这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线。根据通讯的数据同步方式,又分为同步和异步两种。

weixin_48867130的博客 4625

STM32 硬件I2C外设

文章目录I2C 框图通信引脚时钟控制数据控制整体控制STM32的通讯过程固件库编程结构体初始化结构体固件库函数EEPROM电路图读写说明字写入 I2C 框图 通信引脚 输入的引脚有三个,SDA 数据传输引脚,SCL 时钟引脚, SMBA用于SMBUS警告,在 I2C 中并未用到。这些引脚实际对应的硬件引脚可以在 数据手册 的引脚定义中查到。这里小结如下: 引脚 I2C1 I2C2 SCL PB6 / PB8(重映射) PB10 SDA PB7 / PB9(重映射) PB11 时钟控

乱学一气 4286
上一篇: IAR9.30安装和注册相关
下一篇: 网络-- 个人网页 github pages + jekyll个人网页
code_snow
博客等级 码龄8年 316粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值