I2C总线通信——时序/示波器分析
I2C总线通信——时序/示波器分析
通信概述
- I2C是一种芯片间的双向数据传输协议。
- 只需要2根信号线:SCL:串行时钟线;SDA:串行数据线。
时序分析
这里以TM4C123GXL核心板及DY-Tiva-PB 扩展板和板上的TMP75数字温度传感器之间的I2C通讯为例,如下图:
总体预览
- 理论:
------------------------------------ 图1.针对读取字格式的两线制时序 --------------------------------------------
- 实际:
黄色为SDA,绿色为SCL。
局部分析
Frame 1和Frame 2
在SCL脉冲为1时,读取SDA信号。
通讯开始与结束标志
必须满足下图信号形式:
SDA信号分析
接收设备地址 | 读/写 标识符 | 应答位 | TMP75内的寄存器位 | 应答位 |
---|---|---|---|---|
1001 000 | 0 | 0 | 000000 00 | 0 |
-
接收设备地址:这是I2C联盟分配的地址。
-
读/写 标识位:1为读;0位写。
-
应答位:进行I2C通信时要求每发送8位信号后,接受信号一方必须给出1个应答信号,0表示数据传输正常。
-
TMP75内的寄存器位:前6位000000是固定的,最后两位P1 P0按照表1给出。
-------------------------------------------------- 表1.TMP75的指针地址 --------------------------------------------------
================================ 我是分界线 ==================================
Frame 3和Frame 4
SDA信号分析
接收设备地址 | 读/写 标识符 | 应答位 | 数据位 | 应答位 |
---|---|---|---|---|
1001 000 | 1 | 0 | 0010 1000 | 0 |
-
接收设备地址:这是I2C联盟分配的地址。
-
读/写 标识位:1为读;0位写。
-
应答位:进行I2C通信时要求每发送8位信号后,接受信号一方必须给出1个应答信号,0表示数据传输正常。
-
数据位:通信中真正需要传输的数据内容。
-
可以看到,在同一设备连续传输数据时,传完8位数据后,数据传输并不结束,SCL和SDA都维持在0,等下一个数据位(Frame 5)。
================================ 我是分界线 ==================================
Frame 5
SDA信号分析
数据位 | 应答位 |
---|---|
0000 0000 | 1 |
- 应答位为1,传输出现异常??后面通信结束。
================================ 我是分界线 =================================
我是Jesse-zwj,厦门大学本科生一枚,以上是我的日常学习心得
欢迎大家在评论区留言交流