裸机IIC协议-模拟IO驱动

本文介绍了如何通过模拟IO驱动实现裸机IIC协议,以BOSCH的BMA253传感器为例。详细讲解了IIC地址的确定,读写数据的时序,并提供了参考代码。注意了IIC时序中的关键时间间隔,以及在读写操作中对ACK超时处理的必要性。
摘要由CSDN通过智能技术生成

IIC协议

IIC也有叫I2C,是半双工的,不能同时收发,有SDA和CLK两条线,一条总线上可以挂载多个从设备,要求从设备地址不同。

IIC地址的确定

下面以BOSH的Gsensor的BMA253为例,来讲解IIC。

  1. 从BMA253的datasheet可知,通过IO接GND还是VDD可以得到不同的IIC地址,我实际是连接到GND,所以地址是0x18
    BMA253的IIC地址确认
  2. 确定读写地址,主机在读从机设备数据时要发送读地址,写数据要发送写地址,有下图,地址是7bits地址码(7~6) + 1bit (0)读写位,BMA253 0代表写,1表示读; 确定写地址是:BMA253_WRITE 0x30,读地址:BMA253_READ 0x31BMA253读写地址确认

IIC读写数据

IIC时序

具体IIC时序要求参考:https://blog.csdn.net/drivermonkey/article/details/7695547?utm_source=blogxgwz5

注意有4us和4.7us两个时间
IIC时序

参考代码

参考代码读取BMA253的chip id,在写BMA253的寄存器进行芯片初始化;
参考代码不介绍硬件的IO设置,比如设置IO输入输出等;

if (BMA253_RD_Reg(BMA2x2_CHIP_ID_ADDR) == 0xFA)
{
   
    BMA253_WR_Reg(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值