问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何使用示波器抓取IIC波形?

创作时间:
作者:
@小白创作中心

如何使用示波器抓取IIC波形?

引用
CSDN
1.
https://blog.csdn.net/weixin_44828721/article/details/138539797

一、IIC总线工作原理

IIC(Inter-Integrated Circuit)总线是一种串行通信协议,主要用于连接微控制器和各种外围设备。其工作原理如下:

  1. 主机首先发出开始信号,接着发送1字节的数据,其中高7位的地址码和最低1位的方向位组成,方向位表示主机和从机间的传输方向。0表示主机向从机写数据,1表示主机向从机读数据。
  2. 系统中的所有从机将自己的地址和主机发送到总线的地址进行比较,如果从机地址与总线地址相同,那从机与主机进行数据交互。
  3. 根据方向位,主机从从机接收数据或向从机发送数据。
  4. 当数据发送完成后,主机发送一个停止信号,释放IIC总线。
  5. 所有的从机等待下一次的开始信号。

二、IIC的通信过程

三、IIC的寻址方式

IIC总线的寻址方式主要包括以下几个方面:

  • 器件地址:包含从设备的地址(7位),以及主机读写标识(1位)
  • 从设备地址:包含4位固定的地址(厂家决定),以及3位可编程地址(编程者决定)
  • 主机读写标识:又称呼为方向位,X代表读(收数据),Y代表写(发数据)

具体细节如下:

  1. 开始信号:SCL在高电平期间,SDA由高变低即为开始信号;
  2. 停止信号:SCL在高电平期间,SDA由低变高即为停止信号;
  3. 应答信号ACK:八位数据位发送完之后,第九个时钟即是ACK,0表示有ack,1表示nack;
  4. 发送八位数据位的时候,电平变化总是发生在低电平期间,SCL为高电平器件不可以变动,只有开始信号和停止信号是在SCL为高器件变动;
  5. 空闲态:SCL和SDA都为高;
  6. 在切换数据的传输方向时,可以不必先产生停止条件再开始下次传输,而是直接再一次产生开始条件。I2C总线在已经处于忙的状态下,再一次直接产生起始条件的情况被称为重复起始条件。例如:访问某一具有I2C总线接口的E2PROM存储器时,主机先向存储器输入存储单元的地址信息(发送数据),然后再读取其中的存储内容(接收数据);
  7. 启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R/W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;
  8. START信号之后,主机的从设备地址发送出去。当从设备的ACK返回后,一个八位的子地址被发送出去,其低七位表示的是实际的寄存器地址,最高位表示的是是否地址自增。如果高位为1,则之后的寄存器地址自增,可允许多数据读写。

寻址原理图如下所示:

四、测试操作

为了验证IIC总线的通信过程,我们可以使用示波器来观察其波形。以下是具体的测试步骤:

  • 硬件准备:使用MDO34示波器,并确保已经连通IIC的硬件设备。
  • 测试场景:分别对寄存器0xA1写入不同的数据(0x11、0x23、0x55),并观察其波形变化。

下面是具体的测试结果:

  1. 当寄存器0xA1写入0x11时:
  • 示波器设置为触发模式,然后在软件中点击写入,示波器会得到如下波形:
  • 示波器设置为触发模式,再进行读取,可得到:
  1. 当寄存器0xA1写入0x23时:
  • 示波器设置为触发模式,然后在软件中点击写入,示波器会得到如下波形:
  • 示波器设置为触发模式,再进行读取,可得到:
  1. 当寄存器0xA1写入0x55时:
  • 示波器设置为触发模式,然后在软件中点击写入,示波器会得到如下波形:
  • 示波器设置为触发模式,再进行读取,可得到:

五、总结

通过示波器观察IIC数据协议,可以更直观地理解其通信过程和波形特征,这对于硬件开发和故障排查具有重要意义。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号