完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
尊敬的ti工程师:
我将CC3200 与 mpu6050 用I2C相连。 mpu6050 上能另加一个ak8975,可选择性的用一个函数将ak8975加入I2C总线。 我遇到的情况是:我一度通过访问 Who_am_I 成功获得mpu6050 的回馈。接着我不知道修改了什么,或者什么出了错误,我再也的得不到正确的回馈。 错误的WHO_AM_I 回馈如下图: MPU6050 的 slave address是0x68, who_am_i 的register address 是0x75. 正确读取应该是0x34. 我找出错误的类型是:I2C_MASTER_ERR_ARB_LOST (arbitration lost, 失去总线控制??) 在成功读取MPU605 的Who_am_i之后, 我记得我有两个操作,其余的忘记了: 1.尝试将 // Configure PIN_03 for I2C0 I2C_SCL PinTypeI2C(PIN_03, PIN_MODE_5); // Configure PIN_04 for I2C0 I2C_SDA PinTypeI2C(PIN_04, PIN_MODE_5); 中的PIN_MODE_5 改为PIN_MODE_1(因为i2c demo例程中为pin_mode_1, 但是发现不运行后我立即修改回pin_mode_5); 2. 我尝试将ak8975加上I2C 总线,并找到ak8975的who_am_i register 我的问题是, 1.什么原因会导致arbitration lost, 从上图的波形中, 能看出具体是什么原因吗 2. 如何修改 //l另外,我的启动函数如下: void MPU6050_I2C_Init(void)[ // Configure PIN_03 for I2C0 I2C_SCL PinTypeI2C(PIN_03, PIN_MODE_5); // Configure PIN_04 for I2C0 I2C_SDA PinTypeI2C(PIN_04, PIN_MODE_5); MAP_PRCMPeripheralClkEnable(PRCM_I2CA0, PRCM_RUN_MODE_CLK); MAP_PRCMPeripheralReset(PRCM_I2CA0); MAP_I2CMasterInitExpClk(I2CA0_BASE,SYS_CLK,false); // set up the transfer to standard mode MAP_I2CMasterEnable(I2CA0_BASE); MAP_I2CMasterIntEnable(I2CA0_BASE); ] |
|
相关推荐
5个回答
|
|
我找到到了自己的错误。是因为,cc3200 的默认I2C 为Pin 1 和Pin2, 如果想用其他Pin 来做I2C 的话,需要先将Pin 1 和2 设置为GPIO。
我能够正确的读取mpu6050 的ID, 但是不能够获取mpu6050 的数据。 因为写入一直不成功,以至于,我无法写入想要的bit 来唤醒mpu6050。 请问我的initialization启动函数是正确的吗?? 谢谢 |
|
|
|
我找到了我接收数据为0的原因:
1. MPU6050 需要上电时间, 在初始化I2C之后需要,加上一个延迟, for( int i=0; i<10000; i++)[ for( int i=0; i<1000;i+=)[ ] ] 然后再把MPU6050 从休眠状态唤醒 2. 我之前运用 i2c_demo 中的 I2C_IF_Write() 函数来 组成一个写writeRegister 的函数,例如 [ I2C_IF_Write(slaveAddr, regAddr, 1, 0); // 停止位为零, 写入regAddr I2C_IF_Write(slaveAddr,content,1,1); // 停止位为1, 写入寄存器的值 ] 我在逻辑分析仪上看这种代码的发送的读写并没问题,但是,实际上,这种将写寄存器地址和写数据分开的方法,并没有将数据真正的写入寄存器!!!(可能是由于间隔时间过长) 正确的方法是想i2c_demo中一样, 将regAddr 和数据存在一个 array中,然后只使用一个I2C_IF_WRITE()函数,进行连续传输 希望对大家有帮助 |
|
|
|
ncaskd 发表于 2018-5-14 00:24 请教,我现在在使用I2C读取PCF8563的数据,同样读出来的也都为0,想知道问题是因为什么,用的引脚是GPIO10和GPIO13,方便內留个联系方式吗,多谢。 |
|
|
|
黄黄挂怪 发表于 2018-5-14 00:38 您好!I2C 写MPU6050 一直有问题,数据传输完成中断无法获得~ 您能给一段 读写MPU的代码嘛? |
|
|
|
我是使用的CC3200,也遇到了同样的问题,但是我是高速读取I2C外围器件的数据,每秒读取100次,每次程序只能正常运行10多分钟,然后就会出现I2C_MASTER_ERR_ARB_LOST错误,当我把速度降低到每秒读取50次, 程序就会一直正常运行,可是我们的程序要求必须每秒读取100次,请问应该怎么解决?
|
|
|
|
只有小组成员才能发言,加入小组>>
315 浏览 1 评论
518 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
758 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
643 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1115 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
9浏览 28评论
17浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
232浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
191浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
51浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 19:07 , Processed in 0.845024 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号