cc2541 i2c 问题
Hello,
cc2541的i2c配置为master模式与从器件通讯。定时从器件中读取数据。i2c程序会出现运行到i2cMstStrt()函数的
while ((I2CCFG & I2C_SI) == 0);
这句代码时一直没有返回。
i2c的配置与初始化都是使用BLE-CC254x-1.3里面的代码。请问如何解决。
谢谢。
roy
试一下这个帖子里的示例代码 http://e2e.ti.com/support/low_power_rf/f/538/t/172539.aspx
Hi Susan,
连接里面的代码应该是多了作为slave模式的数据读写,而master模式的代码并没多少改变。
其实在while循环哪里没有返回,会是什么原因造成呢?总线的start信号应该不需要slave的响应的,为什么I2C_SI这个标志位不改变呢?是不是i2c的中断被关闭了?
谢谢。
roy
Hi,
问题找到了,原来是i2c没有enable导致的。不明白为什么没有调用过i2c_disable命令,但i2c会无端关闭。现在每次操作前都enable一下就ok。
roy
这个问题我也遇到过,解决方法和你的一样,后来发现手册上是这样写的:
The I2C configuration and state is not retained in power modes PM2 and PM3. It must be reconfigured after coming out of sleep mode
没错,就是这个问题,把宏定义POWER_SAVING注释掉,就可以正常运行,可见是进入睡眠的问题
学习了!
请问如何enable IIC 模块?就是调用 HalI2CInit 函数?还是需要其他函数?我在定时器响应函数里面添加了
HalI2CInit(0x1c,i2cClock_123KHZ);
HalI2CWrite(1,&tx[index]);
HalI2CRead(1,&rx[index]); 但是还是卡在 i2cMstStrt 里面的第一个while那里。
我发现了一点有意思的地方我看driver api.pdf 里面HalI2CInit 是没有参数的,但是我找的这个驱动是有参数的,但是区别应该不大吧?
zhao,
您好,请问你的问题解决了吗?