love421

示波器分析解码IIC波形。

测试设备:

1.MCU:STM32G0

2.IIC设备:lis2dh12(ST的三轴加速度计)

3.示波器:普源RIGOL DS1054Z

知识点:

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,则之后的寄存器地址自增,可允许多数据读写。

时序图

在这里插入图片描述

测试

1.黄色:SCL
2.蓝色:SDA
3.读取器件ID,理论上主控向IMU写数据即先发送器件地址(0x32)(R/W位为0),然后发送寄存器地址(0x0F),接着主控向IMU读数据即发送期间地址(0x33)(R/W位为1),接收IMU返回的值(0x33)。
4.示波器解码如下:
在这里插入图片描述
在这里插入图片描述

 评论


Copyright 2020 love421    |    苏ICP备 - 19026298号
载入天数...载入时分秒...    |    字数统计:14.2k    |    访问人数为 人    |    总访问量为
PoweredHexo
ThemeMaterial-X
HostedGitHub
DNSAliyun
PictureBedimgchr
CommentValine
Analytics不蒜子
APlayer网易云
IconFont Awesome

隐藏