CC2541使用硬件IIC读取三轴加速度数据时错误
问题:采用CC2541的硬件I2C读取数据失败,在执行 i2cMstStrt 这个函数时候,一直在I2C_STRT循环等待,求解
非常感谢
1、I2C 不能工作在PM2及PM3模式下,所以请确认power_saving模式已关闭,或者在调试时直接把这个宏关掉
2、另外建议你多研究一下sensorTag这个例程
3、希望你早日解决问题,并分享一下你解决问题的方法,谢谢!
1、在程序进行时候如何关闭power_saving模式,直接把这个宏关掉,程序功耗就高了。
2、有没有函数可以直接调用让芯片暂时处于PM1,IIC数据发完后进入PM2
学习了
用I2C时,提前打开下面设置
osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
用完I2C后设置成这样
osal_pwrmgr_device( PWRMGR_BATTERY );
这个函数的原型如下,你可以好好研究一下TI的例程,上面都有操作的,如有不会,可以与我交流,祝你工作愉快,谢谢!
mark xu1 你好,
按照你的说法,我已经在程序加上osal_pwrmgr_device( PWRMGR_ALWAYS_ON );语句,但是没有任何效果,程序还会在上面所说的地方进行死循环。
我把
#if defined( POWER_SAVING )
else // Complete pass through all task events with no activity?
{
osal_pwrmgr_powerconserve(); // Put the processor/system into sleep
}
#endif
上面这段代码注销掉,IIC可以正确读出三轴传感器的数据,初步可以排除应用程序的问题
mark xu1 你好:
我通过在读取传感器数据前切换电源模式,如下代码
osal_pwrmgr_device( PWRMGR_ALWAYS_ON );//切换电源模式
BMA250_Get_ACC_XYZ(BMA250_SendDatax,BMA250_SendDatay,BMA250_SendDataz,GetDataCount);//读取传感器数值
此时传感器可以正确读出数值,不会在I2C死循环
但如果我在读取完成后切换到BATTERY模式,如下代码
osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
BMA250_Get_ACC_XYZ(BMA250_SendDatax,BMA250_SendDatay,BMA250_SendDataz,GetDataCount);
osal_pwrmgr_device( PWRMGR_BATTERY );
程序就还会在I2C处死循环
那么问题是我在程序哪里切换BATTERY模式,谢谢
看完帖子 ,初步判定是你读取加速度传感器时,没有对加速度传感器上电导致的。加速度传感器供电电压应保证在3.3V左右,才能保证IIC通讯。死循环时,你可以用万用表测量一下电压。
估计你循环读取加速度数据,没有管理好上电和掉电的时序。
请问你解决了这个问题了吗,我使用硬件iic时也是一直卡在启动这个地方,启动不起来,注释了低功耗也不行的