松原市网站建设_网站建设公司_UI设计师_seo优化
2025/12/18 0:21:55 网站建设 项目流程

I2C(Inter-Integrated Circuit)总线是由飞利浦半导体(现恩智浦半导体)于 1982 年研发的两线式串行通信标准,其发明源于当时电子设备的通信痛点,后续凭借独特优势逐步成为电子领域的重要通信协议。其两根通信线为SCL和SDA

  • I2C电路规范
  1. 所有I2C设备的SCL通信线连在一起,SDA连在一起
  2. 设备的SCL和SDA均要配置成开漏输出模式
  3. SCL和SDA个添加一个上来电阻,组值一般为4.7kΩ
  4. 开漏输出和上拉电阻的共同作用实现了“线与的功能”,此设计主要是为了解决多机通信互相干扰的问题
  • 开漏输出模式原理图

当输出1时,三极管断开,引脚浮空

当输出0时,三极管闭合,引脚接地

  • I2C的时序结构
  1. 起始条件:SCL高电平期间,SDA从高电平切换到低电平

终止条件:SCL高电平期间,SDA从低电平切换到高电平

如上图所示,虚线框内即为重要部分左侧示意图记为S(START),右侧示意图记为P(PAUSE)

  1. 发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环该过程8次即可发送一个字节。

虚线框处为重要部分,记为S:(SEND BYTE)

SCL在B7高电平阶段即为读取数据阶段,需要注意的是示意图中SDA处两条线并非同时存在,在一个时间节点只有存在一个进程,示意图表示的是两种不同的情况,由低电平转为高电平即为发送1,由高电平转为低电平即为发送0

2.接收一个字节:SCL低电平期间,从机将数据位一次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次即可接收一个字节(主机在接收之前,需要释放SDA)

将该部分记为R(RECIEVE BYTE)

示意图表示的是两种不同的情况,由低电平转为高电平即为接收1,由高电平转为低电平即为接收0

3. 发送应答:在接收一个字节后,主机在在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

接收应答:在发送一个字节后,主机在在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

左侧部分为发送应答原理,记为SA(SEND ANSWER)

右侧部分为接收应答原理,记为RA(RECIEVE ANSWER)

了解了以上时序结构,我们就可以把他们当做不同的模块,通过这些模块以不同方式组合,就构成了数据帧

在通信协议(包括I2C)中,数据帧是指按固定格式组织的,用于依次完整数据传输的最小单元,简单说就是通信双方 “约定好的数据包格式”—— 发送方按这个格式打包数据,接收方按同一个格式解析数据,才能保证通信准确无误。

  • 数据帧
  • 1.发送一帧数据

完成任务:向谁发送什么

其中SLAVE ADDRESS为从机,W表示写

S表示发送信号,RA表示接受信号后给出应答。类似于点名时点名者点名,被点名者答到

2.接收一帧数据

完成任务:向谁接受什么

其中从机后的R表示读

紫色的R表示接收信号,SA表示接受信号后给出应答。类似于点名时被点名者答到后,点名者收到信息对其进行回应表示已经收到被点名者的信息。

3.先发送再接收数据帧(复合格式)

完成任务:向谁收指定的什么

发送和接收配合使用,才能达到I2C通信的目的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询