IIC协议
IIC也有叫I2C,是半双工的,不能同时收发,有SDA和CLK两条线,一条总线上可以挂载多个从设备,要求从设备地址不同。
IIC地址的确定
下面以BOSH的Gsensor的BMA253为例,来讲解IIC。
- 从BMA253的datasheet可知,通过IO接GND还是VDD可以得到不同的IIC地址,我实际是连接到GND,所以地址是0x18;
- 确定读写地址,主机在读从机设备数据时要发送读地址,写数据要发送写地址,有下图,地址是7bits地址码(7~6) + 1bit (0)读写位,BMA253 0代表写,1表示读; 确定写地址是:BMA253_WRITE 0x30,读地址:BMA253_READ 0x31;
IIC读写数据
IIC时序
具体IIC时序要求参考:https://blog.youkuaiyun.com/drivermonkey/article/details/7695547?utm_source=blogxgwz5
注意有4us和4.7us两个时间
参考代码
参考代码读取BMA253的chip id,在写BMA253的寄存器进行芯片初始化;
参考代码不介绍硬件的IO设置,比如设置IO输入输出等;
if (BMA253_RD_Reg(BMA2x2_CHIP_ID_ADDR) == 0xFA)
{
BMA253_WR_Reg(