I2C总线通信——时序/示波器分析

I2C总线通信——时序/示波器分析

通信概述

  • I2C是一种芯片间的双向数据传输协议。
  • 只需要2根信号线:SCL:串行时钟线;SDA:串行数据线。

时序分析

这里以TM4C123GXL核心板及DY-Tiva-PB 扩展板板上的TMP75数字温度传感器之间的I2C通讯为例,如下图:
I2C总线通信——时序/示波器分析

总体预览

  • 理论:
    I2C总线通信——时序/示波器分析 ------------------------------------ 图1.针对读取字格式的两线制时序 --------------------------------------------
  • 实际:
    黄色为SDA,绿色为SCL。
    I2C总线通信——时序/示波器分析

局部分析

Frame 1和Frame 2

I2C总线通信——时序/示波器分析I2C总线通信——时序/示波器分析
在SCL脉冲为1时,读取SDA信号。

通讯开始与结束标志

必须满足下图信号形式:
I2C总线通信——时序/示波器分析

SDA信号分析
接收设备地址 读/写 标识符 应答位 TMP75内的寄存器位 应答位
1001 000 0 0 000000 00 0
  • 接收设备地址:这是I2C联盟分配的地址。

  • 读/写 标识位:1为读;0位写。

  • 应答位:进行I2C通信时要求每发送8位信号后,接受信号一方必须给出1个应答信号,0表示数据传输正常。

  • TMP75内的寄存器位:前6位000000是固定的,最后两位P1 P0按照表1给出。

I2C总线通信——时序/示波器分析
-------------------------------------------------- 表1.TMP75的指针地址 --------------------------------------------------

================================ 我是分界线 ==================================

Frame 3和Frame 4

I2C总线通信——时序/示波器分析
I2C总线通信——时序/示波器分析

SDA信号分析
接收设备地址 读/写 标识符 应答位 数据位 应答位
1001 000 1 0 0010 1000 0
  • 接收设备地址:这是I2C联盟分配的地址。

  • 读/写 标识位:1为读;0位写。

  • 应答位:进行I2C通信时要求每发送8位信号后,接受信号一方必须给出1个应答信号,0表示数据传输正常。

  • 数据位:通信中真正需要传输的数据内容。

  • 可以看到,在同一设备连续传输数据时,传完8位数据后,数据传输并不结束,SCL和SDA都维持在0,等下一个数据位(Frame 5)。

================================ 我是分界线 ==================================

Frame 5

I2C总线通信——时序/示波器分析
I2C总线通信——时序/示波器分析

SDA信号分析
数据位 应答位
0000 0000 1
  • 应答位为1,传输出现异常??后面通信结束。

================================ 我是分界线 =================================

我是Jesse-zwj,厦门大学本科生一枚,以上是我的日常学习心得
欢迎大家在评论区留言交流