微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541使用硬件IIC读取三轴加速度数据时错误

CC2541使用硬件IIC读取三轴加速度数据时错误

时间:10-02 整理:3721RD 点击:

问题:采用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时也是一直卡在启动这个地方,启动不起来,注释了低功耗也不行的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top