一、 I2C标准协议流程
1、 I2C协议——规定命令
开始:当SCL为高电平时,SDA从高电平向低电平切换
停止:当SCL为高电平时,SDA从低电平向高电平切换
应答(ACK):发送侧发送完8bit数据后,接收侧需要回复一个信 ,即第9个SCL时,接收侧将SDA拉低,称作ACK
无应答(NACK):发送侧发送完8bit数据后,接收侧需要回复一个信 ,即第9个SCL时,接收侧将SDA拉高(或叫释放SDA),称作NACK。NACK时同时会引起Master发生RESTART或STOP流程
地址命令:I2C的地址是7bit,第8bit是方向位。1代表Read、0代表Write
2、 I2C协议——写流程
1) Master发起START
2) Master发送Slave地址(7bit)和W(0:写动作),等待Slave发送ACK
3) Slave发送ACK
4) Master发送寄存器地址(8bit),等待Slave发送ACK
5) Slave发送ACK
6) Master发送写入寄存器的数据(8bit),等待Slave发送ACK
7) Slave发送ACK
8) 第6步和第7步可以重复多次,即按顺序写多个寄存器。
9) Master发起STOP。
使用逻辑分析仪分析实际通讯波形,对协议加深理解。
将逻辑分析仪通道0接SDA数据,通道1接SCL数据,将逻辑分析仪SDA信 设置成下降沿触发模式,通过发送读写寄存器命令的方式,抓取Master与Slave之间的通讯数据。
1、 将Slave设备(0x31)寄存器(0x20)的值改成0x98。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!