【cubeide】IIC通信
记录自:Bili--keysking
二,逻辑----(之前刚看江蟹科技时候看的云里雾里的,现在写过spi后,理过时间顺序后再看就感觉情绪明了了):
上图中,
一:基本规律就是——数据发送和结束时候会---时钟scl高电平时,改变数据线(拉低再拉高)
其他时刻都是——在scl低时候变sda来展示数据。
二:有了一其实就好说了,1主机先发送从机地址找到从机,2从机听到了就发ack信号回应一下(scl低时候,拉低sda),3然后sda数据线的控制权就给从机了,4从机发一个byte,主机就ack一下(scl=0时候拉低sda(省略号前面的))5循环发送字节,6发送完后主机就在一:scl高时候,终于改下sda
三,开始写代码
注意aht20的地址0x71的原因(本身芯片是7位地址0x38来着,不是八位,所以在右边加0补充成八位成为0x70,对于i2c的话,如果是要读取从机数据,那么加的这位就得是1,所以是0x71--------------hal库自动完成了,不需要我们手动发71,我们发70就行,自动会加1)
四,采集数据时候要---把返回的给拼接起来!!!!要移位拼接
从低位开始补,所以先把第三字节右移靠到最低位
五,