你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
shadow丶 发表于 2015-6-14 23:06 呃呃 mpu6050 iic的 之前用过 有段时间也是读取全0 后来怎么弄的就记不清 好像是设置的问题。。。 ...
ahaiff 发表于 2015-12-19 14:24 也调了好几天,终于搞定了,用内部I2C MASTER 转发,slv4单字节读写AK88963寄存器,用SLV0接收数据到EXT_SE ...
priestyoyo 发表于 2015-12-23 20:20 看到你说搞定了。我又把板子翻出来调了一晚上。。。我确定一定是我的问题,不知道哪里理解错了。。 我首 ...
ahaiff 发表于 2016-1-14 12:43 8963内部也需要操作,并注意SPI写完要延时,20M的spiy要等待400K的内部I2C操作完成,附上我的源码 ...
ahaiff 发表于 2016-1-14 13:41 SPI透过I2C master 操作8963c的寄存器
-。-哎 用了i2c其实依然读不出
看到你说搞定了。我又把板子翻出来调了一晚上。。。我确定一定是我的问题,不知道哪里理解错了。。
我首先用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);
但是依旧不能读数据。。请教一下你具体是怎么做的
SPI透过I2C master 操作8963c的寄存器
这几天也在捣鼓这个模块,目前正在读取磁力计的数据,学习中...
要是能提供宏定义数据更好...
大侠,今天试了一下,读不出数据,读取I2C的Slv4_done状态时,一直不会置位,可否指点一下?
/* 读 MPU9250 ID 判断是否在线 */
if (MPU9250_ID == MPU9250_Read_Reg())
{
MPU9250_Write_Reg(USER_CTRL, 0x30); /* 使能 MPU9250 SPI 工作模式和 I2C 主机 I/F 模式 */
MPU9250_Write_Reg(PWR_MGMT_1, 0x80); /* 电源管理,复位 MPU9250 */
MPU9250_Write_Reg(SMPLRT_DIV, 0x07,); /* 采样率 1000/(1+7)=125HZ */
MPU9250_Write_Reg(CONFIG, 0x06); /* 低通滤波器 0x06 5Hz */
MPU9250_Write_Reg(GYRO_CONFIG, 0x18,); /* 陀螺仪测量范围 0x18 正负 2000 度 */
MPU9250_Write_Reg(ACCEL_CONFIG, 0x18); /* 加速度计测量范围 0x18 正负 16g */
/* MPU9250-AK8963 磁力计初始化 */
if (!MPU9250_AK8963_Init()) return false;
}
其中MPU9250_AK8963_Init()是参考楼主的,只能读加速度和陀螺仪