有没有人用过mpu9250 或者mpu6500 + 地磁 想问下设置mpu6500为i2c master来通过辅助i2c通道读取地磁传感器数据的方法 最近被他搞得头都大了。。依然都不出数据 尝试过初始化时候把Register 106 – User Control寄存器的I2C_MST_EN I2C_IF_DIS I2C_MST_RST设置为1 MPU_USER_CTRL寄存器的I2C_MST_EN_BIT I2C_IF_DIS_BIT I2C_MST_RESET_BIT拉高,之后读取 地磁模块的ID: uint8_t slv0addr; spi_writedata(MPU_I2C_SLV0_ADDR,0x80); spi_writedata(MPU_I2C_SLV0_REG,0x00); spi_writedata(MPU_I2C_SLV0_CTRL,0x81); slv0addr = spi_readdata(0x63); 读不出来,都是0,有哪位仁兄调过的可以分享下经验么? |
SPI透过I2C master 操作8963c的寄存器
看到你说搞定了。我又把板子翻出来调了一晚上。。。我确定一定是我的问题,不知道哪里理解错了。。
我首先用slv0 写入CNTL1寄存器,让它工作在连续模式1,代码是这样的
spi_writedata(MPU_I2C_SLV0_ADDR,0x0c); //write I2C address
spi_writedata(MPU_I2C_SLV0_DO,0x12); //CNTL1 配置为连续模式1
spi_writedata(MPU_I2C_SLV0_REG,AK8963_CNTL1);
spi_writedata(MPU_I2C_SLV0_CTRL,0x81);
Delay(10);
然后 开始用slv1读 HXL开始的6个字节数据
uint8_t data;
spi_writedata(MPU_I2C_SLV1_ADDR,0x8c); //write I2C address
spi_writedata(MPU_I2C_SLV1_REG,AK8963_HXL);
spi_writedata(MPU_I2C_SLV1_CTRL,0x86);
data= spi_readdata(MPU_EXT_SENS_DATA_00);
但是依旧不能读数据。。请教一下你具体是怎么做的
对于这个贴主的Master,相当的佩服。但这不是同一个问题。依然谢谢你的热心
是要告诉你,先读whoami,看看你的SPI是不是能用。
可以用,加速度计和陀螺仪的数据都能读出来
可以用,加速度计和陀螺仪的数据都能读出来
-。-哎 用了i2c其实依然读不出