TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3200 I2C arbitration lost

尊敬的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);
}

chao D:

回复 JIAN WENG1:

请教,我现在在使用I2C读取PCF8563的数据,同样读出来的也都为0,想知道问题是因为什么,用的引脚是GPIO10和GPIO13,方便內留个联系方式吗,多谢。

zhenyu xu2:

回复 jian weng:

您好!I2C 写MPU6050 一直有问题,数据传输完成中断无法获得~  您能给一段 读写MPU的代码嘛?

hongxin zhu1:

我是使用的CC3200,也遇到了同样的问题,但是我是高速读取I2C外围器件的数据,每秒读取100次,每次程序只能正常运行10多分钟,然后就会出现I2C_MASTER_ERR_ARB_LOST错误,当我把速度降低到每秒读取50次, 程序就会一直正常运行,可是我们的程序要求必须每秒读取100次,请问应该怎么解决?

user5293314:

您好,我初学CC3200和MPU6050,可以告诉我我一下您在连接CC3200和MPU6050时的连接方法吗,有偿,感激不尽!

赞(0)
未经允许不得转载:TI中文支持网 » CC3200 I2C arbitration lost
分享到: 更多 (0)