CC2541+I2C元件 ,怎么才能进入省电模式呢?
CC2541+MPU6050 ,怎么才能进入省电模式呢??
我的做法是 #define POWER_SAVING, 调用省电函数,但无效(电流仍很大),
然后尝试屏蔽了HAL_UART, 但是这样MPU工作了3秒就停止了.
该怎么做呢? (MPU6050 使用I2C方式连接)
1、HAL_UART 如果打开的话,程序会一直在扫描串口,系统是进不了PM2模式的,所以比较耗电,如果打开串口,又想进入PM3模式,需要自己动手在底层写点代码
2、如果用的是自己带的I2C,在数据手册I2C单节,写的很明确,I2C在PM2及PM3模式下是不工作的,承接第一条,如果你关闭了串口,系统会进入PM3,而进入的PM3模式,I2C就不工作了
3、关于如何合理 的用I2C的问题,论坛以前有讨论,也有大神写过变通的函数,你可以搜索一下
4、希望可以帮到你,祝你好运!
你好,
建议你使用CC2640,CC2640自带的sensor control engine可以在你主核在sleep模式下继续工作,这样就保障了低功耗模式下IIC从设备继续运行。

@mark_xu ,你好, 感谢你的回复, 已申请加群. 但问题仍未解决;
目前打开定义 POWER_SAVING ++ HAL_I2C=TRUE ++ HAL_I2C_MASTER
1. 其实我的程序中没有使用到UART功能, 只使用到I2C元件(MPU6050) .所以屏蔽了HAL_UART, 但是MPU6050工作了几秒后整个程序就死机了.应该是卡在I2C那里.
2. 如果我打开了UART宏定义, I2C_MPU6050就工作正常,按键进入Sleep_Mode万能表显示电流居高不下(10MA). 我屏蔽 HalUARTPoll(); 的话,mpu6050工作不正常.也是运行几秒就死机
请问要在哪里 修改uart, 使得 既可以使用I2C 又可以进入Sleep Mode. (睡眠模式下,I2C怎么暂停???)
3.搜索了论坛,没有找到 合理使用I2C......能提供链接吗?
@mark_xu ,你好,感谢你的答复, 但是问题还未解决 (Q群已申请);
1. 其实程序中我没有用到UART通讯, 所以我才屏蔽HAL_UART=TRUE, 但是这样mpu6050初始化几秒后,整个程序就卡死不运作了.
2.定义了HAL_UART,MPU6050可以正常运作, 但是进入不了低功耗PM2, 还有10ma.
3. 定义HAL_UART 后 ,修改底层代码屏蔽了 HalUARTPoll(); 电流还是差不多10ma...
@kqian0327, 你好;
电路中有I2C元件(MPU6050),我现在的问题是 进入不了Sleep Mode, 如果有办法进入Sleep Mode, I2C暂停运行也没关系的
求助!! 无人回复...
当屏蔽了 POWER_SAVING , I2C就工作正常.......
难道没有办法使用CC2541做 MPU6050 省电的商业应用吗???
还是又自己来解决吧,
确认了一点, 去掉HAL_UART 也是可以实现I2C运作的,并进入省电模式;
1. #define POWER_SAVING.
2. 在操作MPU6050_DMP 数据读取前要调用一下 HalI2CEnable( ); //省电模式下不知道为啥 I2C被被 禁能
3. 操作完MPU6050_DMP操作后 HalI2CDisable( ); //不然电流仍在10ma
4. MPU6050 的INT引脚要悬空不接.
5. 目前电流还有0.6ma , 虽然不理想 但比当初12ma好很多了.....仍在优化中
PS: MPU6050操作函数有: dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more); 获取位置,加速度等数据
