CC2540/2541从PM2被唤醒后驱动I/O口有问题,请问从PM2转换到PM1模式中间的延时怎么处理-目的是保证外部32MHZ晶体工作稳定
TI同事,
在使用CC2540/2541时遇到了如下问题,不知如何处理,请指示!
1,作为从机的“SimpleBLEPeripheral“上电后进入执行“osal_pwrmgr_device( PWRMGR_BATTERY ); ”, 从机进入PM2省电模式(电流立马降到0.5MA左右,很好),此时蓝牙通讯功能正常--我有LCD监控显示。
2,手机发送命令给作为从机的“SimpleBLEPeripheral“,LCD显示“SimpleBLEPeripheral“接收命令正确。 此时执行“osal_pwrmgr_device( PWRMGR_ALWAYS_ON );”命令将从机从PM2省电模式唤醒到PM1正常工作模式 。
3,从机“SimpleBLEPeripheral“执行某I/O口的LED开/关动作。
4, 执行“osal_pwrmgr_device( PWRMGR_BATTERY ); ”命令,从机进入PM2省电模式。
上面流程产生的现象是:
步骤3处的 LED变成闪烁(而且亮度不够)状态了 --本应该是常亮/常灭的。
如果去掉上面的步骤4,则步骤3处的 LED是常亮/常灭的,符合设计要求。但这没进入PM2省电,省不到电。
请问上面碰到的情况我应该怎么处理好? 有没可能在上面步骤3和4之间加个延时之类?
norman,
这个,3到4,肯定会进入PM2或者PM3,这样IO就会被关闭,没电平输出了,自然会变成一闪一闪。。。
如果你要用IO输出长亮,就不能让系统进入PM2或者3.
刚才的实验步骤及结果如下:
1,去掉步骤4,
2,在步骤3处添加了一个定时中断,中断时间为时间n(譬如1秒,目的是保证该动作已经完成),
3,在定时中断里面执行“osal_pwrmgr_device( PWRMGR_BATTERY ); ”命令,从机进入PM2省电模式。
目前看起来这个方法是可以的,但不知道是否最佳解决方法。
norman,
就这样吧,应该没有其他更好办法,尽量少让LED长亮。
TI同事,
谢谢回复!
再请问,系统进入PM2后,不用到的管脚系统内部已经进行了低功耗处理(譬如设置为输入/输出,内部上拉/下拉电阻设置)还是需要用户自己再进行处理?
如果用户自己处理,那么没用到的管脚即I/O口,该设成输入/输出,上拉/下拉(内部/外部)?