《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍

经过近一周的USART学习,我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑,只有掌握了通信技术,单片机才能与外界交互,展现出丰富多彩的功能,变得更加强大和实用。

单片机最基础的“语言”是二进制。可惜,这种语言对我们来说晦涩难懂,不易理解。于是,人类给这种语言“穿上衣服”,一步步进化成了更易于理解的编程语言。然而,有了编程语言后,如何让单片机与外界设备“交流”呢?这时,聪明的人类设计出了类似于“嘴巴”和“耳朵”的接口,专门用来传递和接收信息。这些接口遵循特定的通信协议,使得单片机与外部设备能够准确地互相理解。

为了形象说明这个过程,我们可以用人与人之间的交流作比喻。例如,一个中国人和一个美国人要沟通,但他们互不懂对方的语言。这时需要一个“翻译”来传递信息。同时,为了顺利交流,双方还需要一个规范化的交流方式,比如约定使用普通话和英语之间的转换。对于单片机来说,I²C通信就类似这样的一种语言规范,它定义了如何发言、如何回应以及怎样让双方都能正确理解对方的意思。

I²C通信的形象比喻

  1. 人与人之间的对话
    假设两个人在对话,一个人是主机(Master),另一个是从机(Slave)。

    • 主机发出“我想和你说话”的信号(通过I²C的起始信号)。
    • 从机收到信号后,回应“我听到了,请继续”(通过应答信号ACK)。
    • 接着,主机发送数据,从机接收后再回应。如此往复直到通信完成。
  2. 多人会议中的发言规则
    在一场多人会议中,只有主持人可以安排谁发言(主机控制权)。其他参与者只有在被点名时(通过设备地址)才可以回答或提出问题。

    • 主持人:I²C的主机,负责管理通信过程。
    • 被点名的参与者:I²C的从机,被明确指定后才能参与通信。
    • 发言规则:双方必须按照既定的规矩,不能同时讲话(时钟同步机制)。
  3. 班级点名
    老师(主机)逐一念出学生的名字(设备地址)。听到自己名字的学生(从机)应声“到!”(ACK),然后汇报当天的情况(数据传输)。老师按顺序完成点名,最后宣布点名结束(停止信号)。

实际应用中的例子

  • 传感器数据采集:单片机通过I²C与温度传感器通信,相当于主机问“现在的温度是多少?”,传感器回答“当前温度是25°C”。
  • 存储器读写:单片机向EEPROM存储器写入数据时,像是主机说“记住这个密码1234”,存储器确认“好的,记住了”。
  • 多设备协作:多个设备挂载在同一I²C总线上,就像一群学生听老师点名,每个设备都有唯一的名字(地址),确保不会混淆。

总结

I²C通信就像一套规范的“语言规则”,让单片机能够与各种外设高效协作。通过这些规则,单片机可以实现丰富的功能:采集数据、存储信息、驱动显示等。而I²C之所以强大,是因为它为复杂的通信过程提供了一个简单且灵活的解决方案。像人与人之间的语言交流一样,只要掌握了这些规范,单片机的“世界”也能更加丰富多彩!



话不多说!进入正题,IIC的学习之旅!

进入学习之前,我们问几个常见的问题?

1.什么是IIC通信,IIC通信原理是什么?

什么是I²C通信?

I²C(Inter-Integrated Circuit)通信是一种串行通信协议,由飞利浦(现为NXP)公司发明,主要用于在短距离内连接低速外围设备(如传感器、存储器等)和主控设备(如单片机、微处理器)。I²C以其简单、灵活和高效的特性,广泛应用于嵌入式系统中。

I²C通信使用两根线进行数据传输:

  1. SCL(Serial Clock Line):时钟线,用于同步数据传输。
  2. SDA(Serial Data Line):数据线,用于传输实际的数据。

它支持多个主机(Master)和多个从机(Slave),是一种多主多从总线协议。


I²C通信的原理

1. 主从结构

I²C通信遵循主从结构,包括:

  • 主机(Master):负责生成时钟信号(SCL)并发起通信。
  • 从机(Slave):被动响应主机的请求。

在通信过程中,只有主机可以主动发起操作,从机根据地址匹配和请求类型作出回应。


2. 数据传输过程

I²C通信按以下步骤进行:

(1)起始和停止信号
  • 起始信号(Start Condition):主机在SDA线保持低电平的情况下,将SCL线从高电平拉低到低电平。这表示通信开始。
  • 停止信号(Stop Condition):主机在SDA线保持高电平的情况下,将SCL线从低电平拉高到高电平。这表示通信结束。
(2)地址传输

主机发送从机的7位地址(或10位地址,较少用),紧接着发送一个读/写位(R/W位)

  • R/W位 = 0:表示主机向从机写数据。
  • R/W位 = 1:表示主机向从机读数据。

被选中的从机收到地址后,需返回一个应答信号(ACK)。

(3)数据传输
  • 数据以**字节(8位)**为单位传输,高位先发(MSB)。
  • 每传输一个字节后,接收方需发送一个ACK信号表示成功接收,否则通信终止。
(4)时钟同步

通信双方通过SCL线实现时钟同步。SDA的数据变化必须在SCL为低电平时进行,数据在SCL为高电平时保持稳定。


3. 通信特性
  • 双向通信:主机既可发送数据给从机,也可从从机读取数据。
  • 多主通信:支持多个主机控制总线,但需通过仲裁机制避免冲突。
  • 上拉电阻:SCL和SDA线都需要外接上拉电阻,以确保线路空闲时为高电平状态。

I²C通信的优缺点

优点
  1. 节省硬件资源:仅需两根信号线即可完成通信。
  2. 多设备支持:一个总线可连接多个设备,每个设备通过唯一地址区分。
  3. 协议简单:实现起来方便,适合初学者和小型嵌入式系统。
缺点
  1. 速度较慢:标准模式的通信速率为100kHz,高速模式为400kHz(部分设备支持更高)。
  2. 通信距离有限:通常适合短距离通信(数米以内)。
  3. 数据可靠性受干扰影响:对外界噪声敏感,上拉电阻配置不当可能导致通信失败。

I²C通信的应用场景

  • 传感器:如温湿度传感器、光强传感器等,常通过I²C协议与单片机连接。
  • 存储器:如EEPROM,用于存储配置数据。
  • 显示设备:如LCD/OLED屏幕,接收单片机发送的显示指令。
  • ADC/DAC芯片:模数转换和数模转换设备,用于信号采集和处理。

小结

I²C通信是一种高效的串行通信协议,通过SCL和SDA两根线实现主从设备之间的数据交换。它具有多设备支持、简单易用的特点,但通信速率和距离有限,适合短距离、低速设备之间的连接。在嵌入式系统中,I²C通信是传感器接口、存储器访问等场景的首选方案之一。

2.IIC是如何进行通信的,通信双方是如何交互的

I²C是如何进行通信的?通信双方如何交互?

I²C通信采用主从结构,通过一条时钟线(SCL)和一条数据线(SDA)完成数据交换。主设备负责控制通信流程,而从设备根据主设备的请求进行响应。以下是I²C通信的基本交互过程和原理:


1. 主从设备角色

  • 主设备(Master)

    • 发起通信。
    • 生成时钟信号(SCL)。
    • 发送数据或读取从设备的数据。
  • 从设备(Slave)

    • 被动参与通信。
    • 根据主设备发来的地址判断是否响应。
    • 接收数据或将数据发送给主设备。

2. 通信双方的交互过程

I²C通信遵循以下交互流程:

(1)起始条件和停止条件
  • 起始条件(Start Condition):
    • 主设备在SCL保持高电平时,将SDA从高电平拉低,表示通信开始。
  • 停止条件(Stop Condition):
    • 主设备在SCL保持高电平时,将SDA从低电平拉高,表示通信结束。

起始和停止条件标志着一次通信的开始和结束,是通信流程的基础。


(2)地址匹配
  • 主设备在起始条件后,发送从设备的7位地址(或10位地址)。
  • 紧接着发送一个读/写位(R/W位)
    • 0:表示主设备将向从设备写数据。
    • 1:表示主设备将从从设备读数据。
  • 所有从设备监听总线上的地址信息,只有与地址匹配的从设备发送一个应答信号(ACK),表明自己被选中并准备好通信。

(3)数据传输

数据传输以**字节(8位)**为单位,按照以下规则进行:

  • 数据高位在前(MSB)。
  • 每传输一个字节,接收方需发送一个应答信号(ACK)。
    • ACK(应答): 表示成功接收。
    • NACK(非应答): 表示未成功接收或不再需要数据。

数据传输可以是主设备写从设备主设备读从设备,根据R/W位决定传输方向。


(4)时钟同步
  • 主设备生成时钟信号(SCL),所有数据的传输和变化都在时钟的控制下进行。
  • SDA线上的数据在SCL为低电平时发生变化,在SCL为高电平时保持稳定。

这种时钟同步机制确保了通信的时序准确性。


(5)停止条件
  • 通信完成后,主设备发送停止条件,表示当前通信结束,释放总线。
  • 其他从设备可以在总线空闲时等待下一次通信。

3. 举例说明通信过程

场景:主设备向从设备发送数据
  1. 起始信号:主设备发送起始信号。
  2. 发送地址:主设备发送从设备地址和R/W位(写)。
  3. 地址应答:从设备返回ACK,表明被选中。
  4. 数据传输:主设备发送数据字节,每发送一个字节,从设备返回ACK。
  5. 停止信号:主设备发送停止信号,结束通信。
场景:主设备从从设备读取数据
  1. 起始信号:主设备发送起始信号。
  2. 发送地址:主设备发送从设备地址和R/W位(读)。
  3. 地址应答:从设备返回ACK,表明被选中。
  4. 数据传输:从设备发送数据字节,每发送一个字节,主设备返回ACK。
  5. 停止信号:主设备发送停止信号,结束通信。

4. 多主多从通信

I²C支持多主多从通信,但需要通过以下机制确保可靠性:

  • 总线仲裁:当多个主设备同时发起通信时,总线上的低电平优先,胜出的主设备继续通信。
  • 时钟同步:多个主设备生成时钟信号时,最终的SCL信号为所有主设备时钟的逻辑与。

5. 特性总结

  • 主设备发起,主控全局通信流程
  • 从设备响应地址匹配并传输数据
  • 双向通信,支持主设备写数据和读数据两种方式。
  • **应答机制(ACK/NACK)**保证通信的可靠性。

小结

I²C通信通过两根线实现主从设备间的数据传输,利用起始信号、地址匹配、应答信号、数据传输和停止信号的规范交互流程,完成高效的双向通信。主设备负责控制和发起通信,而从设备根据地址匹配做出响应并参与数据交换。这种简单但灵活的交互方式,使I²C成为嵌入式系统中设备互联的主流选择之一。

3.IIC和USART的区别是什么?

以下是I²CUSART的区别对比表格:

特点I²C(Inter-Integrated Circuit)USART(Universal Synchronous/Asynchronous Receiver/Transmitter)
通信方式同步通信支持同步和异步通信
使用的线路两根线:SCL(时钟线)和SDA(数据线)两根线:TX(发送线)和RX(接收线)
主从结构多主多从结构,支持多个主设备和多个从设备主从结构,通常一个主设备与一个从设备通信
通信速度典型速度:100kbps(标准模式),400kbps(高速模式),3.4Mbps(超高速模式)典型速度:可达115200bps,甚至更高(异步模式),同步模式速度取决于时钟速率
地址传输每个从设备有唯一地址,主设备通过地址来选择从设备无设备地址,通信双方通过TX/RX直接传输数据
通信距离短距离(通常适用于PCB内部通信,距离在几米以内)可以支持长距离通信(通过RS-232或RS-485接口可以支持更远的距离)
协议复杂度协议较为复杂,包含时钟同步、地址匹配、数据传输和应答机制等协议简单,主要依赖于发送和接收数据,配置较为直接
数据传输方式串行传输,数据是字节为单位传输,高位在前(MSB)串行传输,数据字节也按顺序传输,但可以是异步方式或同步方式
时钟管理主设备提供时钟信号(SCL线),同步传输异步模式下不需要时钟信号,同步模式下使用时钟信号
多设备支持支持多个设备共享总线(多主多从模式),通过地址区分设备通常只有一个主设备和一个从设备,通过不同的端口连接多个设备(需要额外的硬件支持)
适用场景适用于传感器、存储器、LCD屏、I/O扩展等低速、短距离的设备连接适用于串口通信、无线通信、调试接口等,支持较大范围和较高速度的数据传输

小结

  • I²C适用于需要连接多个设备(如传感器、存储器等)的小范围低速通信,通常用于嵌入式系统中的内部设备通信。其优势是可以在同一总线上连接多个设备,但通信速度较慢,距离较短。

  • USART适用于需要进行长距离或高速数据传输的场景,如与PC之间的通信或串口设备。它支持同步和异步通信方式,使用起来更简单,但通常只支持点对点通信。

4.IIC,是全双工,还是半双工,IIC通信条件是什么,

I²C通信是全双工还是半双工?

I²C是一种半双工(Half-Duplex)通信协议。这意味着在I²C通信中,数据只能在同一时刻在两根线(SDA)上进行单向传输——要么数据从主设备发送到从设备,要么从设备发送到主设备,但不能同时进行双向传输。也就是说,在某一时刻,SDA线只能传输数据的一个方向,主设备和从设备轮流发送和接收数据。

I²C通信条件是什么?

I²C通信的正常进行需要满足以下几个基本条件:


1. 硬件连接条件

  • 两根信号线:

    • SDA(数据线): 用于传输数据。
    • SCL(时钟线): 用于同步数据传输。
  • 电源: 设备需要有电源供应(VCC),使设备能够工作。

  • 接地(GND): 所有设备必须共享同一个地线,确保信号的电压参考一致。

  • Pull-up电阻:
    SDA和SCL线通常需要通过上拉电阻连接到电源(VCC)。这些电阻通常是4.7kΩ到10kΩ之间,用来确保信号稳定。


2. 时钟和数据同步

  • 主设备提供时钟信号(SCL):
    • 主设备负责生成时钟信号,控制通信的时序。数据的发送和接收必须与SCL信号同步。
  • 数据传输时序:
    • 数据传输只能在SCL为低电平时发生,而SCL为高电平时,数据必须保持稳定。

3. 地址和应答条件

  • 唯一的设备地址:
    每个从设备必须有一个唯一的地址,主设备在通信时通过该地址来选择目标设备。

  • ACK/NACK信号:

    • ACK(应答): 每传输一个字节,接收方必须在数据接收完后发送ACK信号,表示数据接收成功。
    • NACK(非应答): 如果接收方没有正确接收到数据,或者通信结束时,它会发送NACK信号。

4. 起始和停止条件

  • 起始条件(Start Condition):
    主设备通过拉低SDA线并保持SCL线高电平来发起通信。此时,通信开始。

  • 停止条件(Stop Condition):
    主设备将SDA线从低电平拉高,同时SCL线保持高电平,表示通信结束。


5. 数据传输

  • 字节为单位传输数据:
    数据通过SDA线以字节为单位传输(8位),并且每传输一个字节,接收方需要发送ACK信号。

  • 数据传输方向:

    • 主设备写从设备: 主设备将数据发送到从设备。
    • 主设备读从设备: 主设备从从设备接收数据。

6. 电气条件

  • 高电平和低电平:
    SDA和SCL线上的电压变化通常由设备的电源决定,例如3.3V或5V。主设备和从设备的逻辑电平必须兼容,确保通信信号能正确传输。

  • 总线空闲状态:
    总线处于空闲状态时,SDA和SCL线都保持在高电平(1),表示总线未被占用,等待通信开始。


7. 通信协议支持

  • 多主机支持:
    I²C支持多个主设备,可以在总线中多个主设备之间切换控制权。每个主设备通过仲裁机制确保只有一个主设备可以在同一时间控制总线。

  • 多从设备支持:
    通过地址区分,不同的从设备共享同一总线,主设备可以选择与不同的从设备进行通信。


小结

I²C是一种半双工通信协议,它通过两根线(SDA和SCL)完成数据的传输,并依赖主设备控制时钟信号和通信的时序。通信的基本条件包括合适的硬件连接、时钟和数据同步、设备地址和应答机制等。同时,I²C协议支持多主机和多从设备的通信模式,能够实现灵活的设备间数据传输。

5.IIC使用过程中应该注意是什么?

在使用I²C通信协议时,有几个关键注意事项需要特别关注,以确保系统的稳定性和数据传输的可靠性。以下是I²C使用过程中应注意的事项

1. 确保地址唯一性

  • 设备地址冲突: 每个I²C总线上的从设备都需要有唯一的设备地址。如果两个从设备拥有相同的地址,主设备就无法正确识别并与它们进行通信。因此,在设计I²C设备时,务必确保每个从设备的地址不重复。

  • 地址选择: 有些设备允许通过配置引脚来设置设备的地址(例如通过跳线或焊接引脚),确保这些引脚设置正确且不会导致地址冲突。


2. 使用适当的上拉电阻

  • 上拉电阻的重要性: I²C通信使用SDA和SCL线,必须通过上拉电阻(通常为4.7kΩ到10kΩ)将它们连接到电源。上拉电阻确保了信号线在没有驱动的情况下能够保持在正确的逻辑电平。

  • 电阻值选择: 过低的电阻值可能会导致总线上的电流过大,而过高的电阻值可能导致信号传输不稳定。因此,选取合适的电阻值非常重要,通常需要根据总线长度、数据传输速率和电源电压来确定。


3. 时钟速度选择

  • 时钟频率: I²C的时钟频率可以从标准模式(100kbps)到高速模式(400kbps)甚至更高(例如3.4Mbps),选择时钟频率时应考虑以下因素:
    • 总线长度: 较长的I²C总线容易出现信号衰减,较高的时钟频率可能导致信号错误。因此,在长距离的I²C通信中,时钟频率应适当降低。
    • 设备性能: 并非所有I²C从设备都能支持高速模式,因此需要检查所有设备的时钟频率能力。

4. 总线长度和拓扑结构

  • 总线长度限制: I²C适用于较短的距离(通常为几米以内)。超过一定长度后,信号质量会降低,导致通信错误。需要根据I²C总线的长度来考虑是否需要缓冲器或信号驱动器。

  • 总线拓扑: I²C采用主从结构,所有设备都共享同一总线。应避免连接过多设备(从设备),避免导致总线过载,影响数据传输的稳定性。


5. 电源干扰和信号完整性

  • 电源噪声: 电源的不稳定或噪声可能影响I²C通信的可靠性,尤其是在高频率传输时。应确保供电电源稳定,并避免与其他高功率设备共用电源。

  • 信号完整性: 确保SDA和SCL线的布局尽量简短且避免交叉干扰,避免信号在传播过程中产生反射或丢失。


6. 起始/停止条件和冲突管理

  • 正确生成起始和停止条件: 起始条件和停止条件是I²C通信中至关重要的控制信号,主设备需要正确生成这些条件以发起或结束通信。需要特别注意总线上的状态切换。

  • 总线冲突: I²C是一个多主机系统,多个主设备在总线中竞争时,可能发生冲突。I²C采用仲裁机制来解决这种冲突,但这可能会导致数据丢失或通信延迟。因此,在设计时要确保合理的主设备选择和仲裁策略。


7. 数据传输错误处理

  • ACK/NACK信号: 在数据传输过程中,每个字节的传输都需要确认(ACK)。如果从设备没有正确接收到数据,它会发送NACK信号,主设备应根据NACK信号来判断是否需要重传数据。

  • 超时和重试机制: 如果在设定时间内没有收到响应,主设备应该能够识别并采取重试机制。通常,硬件和软件都要处理超时和数据丢失的情况。


8. 电气噪声和干扰的隔离

  • 隔离措施: 由于I²C总线通常采用较低的电压(如3.3V或5V),因此可能容易受到电气噪声的干扰,尤其是在长距离传输或高频率时。需要通过适当的电气隔离器和滤波器来减少噪声影响。

9. 多设备通信

  • 多从设备支持: 在I²C总线上连接多个设备时,每个从设备都必须正确地响应其地址。如果出现设备不响应、地址冲突或电源问题,可能会导致整个通信链路的中断。

  • 设备响应能力: 从设备的响应能力必须经过验证,确保它们能够正确处理主设备的请求,并按预期发送ACK或NACK信号。


10. 热插拔和总线管理

  • 热插拔问题: I²C设备的热插拔可能导致总线冲突或数据错误。设计时应避免频繁的设备插拔,必要时可在硬件中增加防护措施。

  • 总线管理: 在系统中部署I²C时,需要考虑适当的总线管理策略,确保主设备和从设备能够高效、安全地交换数据,避免通信阻塞。


小结

使用I²C协议时,要特别关注地址管理、时钟频率、总线布局和电气特性等因素。合理选择硬件和配置,能够保证I²C通信的稳定性和可靠性,避免通信冲突和信号干扰。在实际应用中,必须考虑到这些细节,以便实现高效且无错误的通信。

6.IIC适合用到哪些地方?也就说有哪些应用场景?

I²C (Inter-Integrated Circuit) 是一种常用的串行通信协议,适合用于多个设备之间的短距离数据传输。它通常用于嵌入式系统和微控制器之间的通信。由于其简洁的硬件需求和灵活的多设备支持,I²C协议广泛应用于许多领域和场景。以下是一些典型的I²C应用场景

1. 嵌入式系统中的传感器数据采集

I²C广泛应用于从各种传感器(如温度、湿度、压力、光照等传感器)中采集数据,并将数据传输到主控制器。由于I²C支持多个从设备,主控制器可以同时与多个传感器进行通信,简化了硬件设计。

  • 应用实例:
    • 温湿度传感器(如DHT11、DHT22)
    • 加速度计和陀螺仪(如MPU6050、LSM303)
    • 环境监测传感器(如气体传感器、二氧化碳传感器)

2. 实时时钟(RTC)模块

I²C常用于连接实时时钟模块,这类模块可以为嵌入式系统提供准确的时间和日期。由于I²C总线的低功耗和简便的通信方式,RTC模块特别适合低功耗设备或需要准确时间戳的系统。

  • 应用实例:
    • DS1307、DS3231等RTC模块,用于家庭自动化系统、物联网设备等。

3. EEPROM(电可擦除可编程只读存储器)

I²C是一种常见的通信协议,用于连接EEPROM芯片,以存储配置信息、设备状态或用户数据。I²C总线能够简化存储设备的连接,减少引脚数量。

  • 应用实例:
    • 24C02、24C64、24C256等I²C EEPROM芯片,用于存储配置文件、用户数据或系统状态。

4. 显示屏模块(LCD/OLED显示)

I²C广泛用于连接低功耗的显示模块,特别是LCD和OLED显示屏,这些模块通常需要最少的引脚连接。通过I²C总线,主控器可以方便地控制显示内容,并且可以轻松连接多个显示模块。

  • 应用实例:
    • 1602 LCD显示模块(使用I²C扩展板)
    • OLED显示屏(如SSD1306,使用I²C通信)

5. 电机控制与驱动

I²C常用于控制电机驱动模块,例如在机器人、自动化控制系统中,通过I²C控制伺服电机或步进电机。I²C协议能够有效地控制电机驱动芯片,并为多个电机提供控制接口。

  • 应用实例:
    • 步进电机驱动芯片(如A4988)
    • 伺服电机控制器(如PCA9685,采用I²C控制多个伺服电机)

6. 电池管理系统(BMS)

在电池管理系统中,I²C用于与多个电池监控和管理芯片通信。这些芯片提供电池电量、充电状态、温度等数据,帮助主控制器进行电池管理。

  • 应用实例:
    • 电池监控IC(如BQ25120A、MAX17043)

7. 无线通信模块

I²C常用于嵌入式系统与无线通信模块(如Wi-Fi模块、蓝牙模块等)之间的通信。尽管这些模块有时也支持其他通信协议(如UART、SPI),但I²C由于其简单性,仍然是一个很好的选择,特别是在需要连接多个设备时。

  • 应用实例:
    • ESP8266、ESP32(Wi-Fi模块)通过I²C连接微控制器进行通信。

8. 音频和视频处理

I²C用于音频和视频处理中的设备控制,例如音频编解码器、视频解码器、显示屏背光等。通过I²C,主控制器可以调整音频或视频设备的参数,如音量、亮度、对比度等。

  • 应用实例:
    • 音频编解码器(如WM8978)
    • 显示屏背光调节

9. 主机与多个外设的通信

I²C可以轻松地将多个外设连接到主控制器,并允许主设备通过总线控制所有设备。由于I²C是多主机多从设备模式,它非常适合在复杂的嵌入式系统中建立不同模块之间的通信链路。

  • 应用实例:
    • 家居自动化系统中的传感器、开关、灯光控制
    • 工业自动化中的设备监控和数据采集系统

10. 工业自动化和机器人

I²C协议的低功耗和多设备支持使其非常适合用于工业自动化机器人控制系统中,尤其是在传感器、执行器和其他外部设备的连接方面。

  • 应用实例:
    • 温度和湿度传感器
    • 运动控制系统中的传感器和执行器

总结

I²C通信协议具有低成本、简单的硬件连接和灵活的多设备支持,适合用于各种需要多个设备之间通信的场景。其广泛应用于嵌入式系统、传感器数据采集、显示控制、存储模块、无线通信、音视频处理、工业自动化和机器人等领域。

下一节,我们正式步入IIC的学习之旅!!!!跟着Whappy小编的步伐!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue通过file控件上传文件到Node服务器

功能: 1.多文件同时上传、2.拖动上传、3.实时上传进度条、4.中断上传和删除文件、5.原生file控件的美化 搁置的功能: 上传文件夹、大文件切片上传、以及其他限制条件未处理 Node服务器的前置准备: 新建文件夹: file_upload_serve初始化npm: npm …

【AI图像生成网站Golang】图床上传与图像生成API搭建

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 五、图床上传与图像生成API搭建 在项目中,我们通过整合 Go 和 FastAPI 实现了图像的上传和生成功能。本…

如何使用 Docker Compose 安装 WireGuard UI

简介 wireguard是什么?维基百科是这样描述的: WireGuard是一种实现加密虚拟专用网络(VPN) 的通信协议和免费开源软件,其设计目标是易于使用,高速性能和低攻击面。它旨在比IPsec和OpenVPN这两种常见的隧道协议具有更好的性能和更…

IM项目-----客户端网络通讯流程

文章目录 前言数据中心类数据持久化网络通信类http客户端websocket客户端 前言 对即时通信系统客户端部分的网络通讯流程的总结。 数据中心类 通过model/datacenter.h 中的DataCenter 类来管理所有客⼾端需要的数据.这是⼀个单例类. 这里管理一份数据有两个作用,1…

软件测试—— Selenium 常用函数(一)

前一篇文章:软件测试 —— 自动化基础-CSDN博客 目录 前言 一、窗口 1.屏幕截图 2.切换窗口 3.窗口设置大小 4.关闭窗口 二、等待 1.等待意义 2.强制等待 3.隐式等待 4.显式等待 总结 前言 在前一篇文章中,我们介绍了自动化的一些基础知识&a…

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议: webSocket协议: 1.2WebSocket协议: 1.3客户端(浏览器)实现 1.3.2 WebSocket对象的相关事宜: 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

【图像分割】SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers

SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers 论文链接:http://arxiv.org/abs/2105.15203 代码链接:https://github.com/NVlabs/SegFormer 一、摘要 文中提出了SegFormer,一个简单、高效且强大的…

HarmonyOS知识点

HarmonyOS应用模型Stage&FA 、ArkTS、ArkUI Stage模型: Module - UIAbility - Page - component 装饰器Entry、Component、CustomDialog、State、关键字struct、函数build() 系统组件(Text Column Row Scroll)、自定义组件 、组件复用、…

速盾:CDN是否支持屏蔽IP?

CDN(内容分发网络)是一种用于提高网站性能和可靠性的技术,通过将内容分发到距离终端用户更近的节点,减少了数据传输的延迟并提高了用户体验。在CDN中,屏蔽IP是一项重要的功能,可以帮助网站屏蔽无效或恶意请…

Linux修改/etc/hosts不起作用(ping: xxx: Name or service not known)的解决方法——开启NSCD

​ 问题描述 起因是我在实验室云资源池的一台虚拟机(CentOS 8.5)上的/etc/hosts文件中为Fabric网络节点的域名指定了IP: IP可以ping通,但是ping域名时提示ping: xxx: Name or service not known。 问题本身应该是Linux通用的&a…

OpenTelemetry 赋能DevOps流程的可观测性革命

原作者:天颇 原出处:微信公众号 乘云数字DATABUFF 原文地址:https://mp.weixin.qq.com/s/D_f31EBtLu7Rr0gahuF-bw 引言 在当今快节奏的软件开发和运维环境中,DevOps 已经成为主流,它通过整合开发和运维流程&#xff0…

学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着

ArcGIS水文分析实战教程(7)细说流域提取_汇流域栅格-CSDN博客 ArcGIS水文分析实战教程(6)河流提取与河网分级_arcgis的dem河流分级-CSDN博客 ArcGIS水文分析实战教程(5)细说流向与流量-CSDN博客 ArcGIS …

windows 和 linux检查操作系统基本信息

windows检查操作系统基本信息 systeminfolinux检查操作系统基本信息 获取系统位数 getconf LONG_BIT查询操作系统release信息 lsb_release -a查询系统信息 cat /etc/issue查询系统名称 uname -a

gitHub常用操作

gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork,fork下来:将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址(fork…

使用SaaS化的Aurora应用快速搭建私人ChatGPT助手

使用SaaS化的Aurora应用快速搭建私人ChatGPT助手 简介: Aurora是一个带UI且免费的GPT私人聊天助手,可切换GPT-3.5,4,4o等常用版本。用户可通过部署Aurora,快速打造自己专属的AI助手。阿里云计算巢已将Aurora打包为SaaS…

Android开发实战班 -网络编程 - Retrofit 网络请求 + OkHttp 使用详解

在现代 Android 应用开发中,网络编程是必不可少的一部分。Retrofit 是 Square 公司推出的一款类型安全的 HTTP 客户端库,简化了与 RESTful API 的交互。Retrofit 基于 OkHttp,并提供了简洁的接口定义和强大的功能,如异步请求、请求…

ASFSSA-VMD多策略改进的麻雀搜索算法优化变分模态分解

ASFSSA-VMD多策略改进的麻雀搜索算法优化变分模态分解 目录 ASFSSA-VMD多策略改进的麻雀搜索算法优化变分模态分解效果分析基本介绍程序设计参考资料效果分析 基本介绍 (创新独家)ASFSSA-VMD多策略改进的麻雀搜索算法优化变分模 态分解ASFSSA-VMD:优化VMD分解层数K和惩罚因子a…

Unity脚本基础规则

Unity脚本基础规则 如何在Unity中创建一个脚本文件? 在Project窗口中的Assets目录下,选择合适的文件夹,右键,选择第一个Create,在新出现的一栏中选择C# Script,此时文件夹内会出现C#脚本图标,…

【新华妙笔-注册/登录安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

Dart:字符串

字符串:单双引号 String c hello \c\; // hello c,单引号中使用单引号,需要转义\ String d "hello c"; // hello c,双引号中使用单引号,不需要转义 String e "hello \“c\”"; // hell…