IIC设备的从机地址该如何确定?

2019-07-20 00:34发布

我按照探索者的例程修改,把模块SDA和SCL接在PB8、PB9上,这样就直接用原子的iic模拟时序例程在PB8、9口上还接有其他的IIC设备(MPU6050)

把多个模块接在同一条IIC总线上时,从机的地址该如何确定?是按照说明书上写的0x50吗?

如果我要读取加速度的话,是不是从机地址填0X50,读取的寄存器地址分别写0X34、0X35、0X36就可以了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
woshilaixuexide
1楼-- · 2019-07-20 03:12
  1. u8 IICreadBytes(u8 dev, u8 reg, u8 length, u8 *data)
  2. {
  3.     u8 count = 0;
  4.        
  5.         IIC_Start();
  6.         IIC_Send_Byte(dev<<1);           //发送写命令
  7.         IIC_Wait_Ack();
  8.         IIC_Send_Byte(reg);   //发送地址
  9.         IIC_Wait_Ack();          
  10.         IIC_Start();
  11.         IIC_Send_Byte((dev<<1)+1);  //进入接收模式       
  12.         IIC_Wait_Ack();
  13.        
  14.     for(count=0;count<length;count++)
  15.         {
  16.                  
  17.         if(count!=length-1)
  18.                 data[count]=IIC_Read_Byte(1);  //带ACK的读数据
  19.         else  
  20.                 data[count]=IIC_Read_Byte(0);         //最后一个字节NACK
  21.         }
  22.     IIC_Stop();//产生一个停止条件
  23.     return count;
  24. }
复制代码

这是我读取函数的代码
不同
2楼-- · 2019-07-20 07:14
 精彩回答 2  元偷偷看……
woshilaixuexide
3楼-- · 2019-07-20 12:21
不同 发表于 2019-7-17 12:04
多个相同的设备从机地址一样的,你必须区分开各个设备要不然地址冲突了,比如加片选选择设备,读数据的话先 ...

我在参数里面传入0X50,在函数里面把0X50<<1,然后再+1进入读模式,此时是0xa1对吧?
不同
4楼-- · 2019-07-20 12:49
 精彩回答 2  元偷偷看……

一周热门 更多>