打开POWER_SAVING与串口同时使用时的冲突解决
来源:互联网 发布:阿里云的解决方案ppt 编辑:程序博客网 时间:2024/05/24 06:20
最近项目里beacon的调试涉及到电源管理以及串口的使用,瓶颈了许久许久....
宏定义了POWER_SAVING之后,意味着也就打开了相关电源管理功能,在使用DMA进行串口收发时,就会出现串口无法工作的情况。
开始调试的时候,依旧DMA方式使用串口,打开POWER_SAVING,注释掉协议栈中所有和POWER_SAVING相关的代码之后,会发现串口依旧无法使用。
最终放弃了DMA方式,改用ISR方式串口收发,在去年写的博客中已经介绍了相关ISR方式:http://blog.csdn.net/xiaoleiacmer/article/details/41750491
这样在开启POWER_SAVING的时候,串口可以使用,但是会出现收发字符丢失的现象。
原因是在串口收发的时候,RF中断(优先级高)会抢串口中断,并且因为电源管理功能的开启,会使晶振的振频降低。
解决方法:
使用HCI_EXT_HaltDuringRfCmd函数
/******************************************************************************* * @fn HCI_EXT_HaltDuringRfCmd API * * @brief This HCI Extension API is used to enable or disable halting the * CPU during RF. The system defaults to enabled. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param mode - HCI_EXT_HALT_DURING_RF_ENABLE, * HCI_EXT_HALT_DURING_RF_DISABLE * * output parameters * * @param None. * * @return hciStatus_t */extern hciStatus_t HCI_EXT_HaltDuringRfCmd( uint8 mode );这个函数的功能是禁止(DISABLE,)或允许(ENABLE)MCU降低晶振频率。
使用方法: 在休眠中唤醒后DISABLE,休眠前ENABLE
经过这样设置之后,就不会出现丢字符的状况了。
注:在讨论的时候,有人也建议串口发送的时候开启osal_pwrmgr_device(PWRMGR_ALWAYS_ON),结束之后 osal_pwrmgr_device( PWRMGR_BATTERY );
这样更为保险,但是数据量大的时候,功耗就无法估计了~
0 0
- 打开POWER_SAVING与串口同时使用时的冲突解决
- dwr与jquery同时使用出现的冲突解决
- power_saving导致的负载过高[已解决]
- 解决ext与ueditor同时使用,引入js文件冲突问题
- POWER_SAVING有关的函数
- 解决电脑同时使用有线网上内网,无线网上外网的冲突
- Delphi 同时使用 dbgrid ,dbgrideh 的冲突
- Angularjs中使用layDate日期控件解决其与ng-model使用时的冲突
- wince 6410 串口2 com3口与IRcomm冲突 导致com3只能打开 不能读写的问题
- ViewPgaer和PhotoView的关联使用与冲突解决
- Android基础控件ListView的使用与焦点冲突解决
- ScrollView嵌套使用ListView冲突的解决与分析
- 使用datepicker和uploadify的冲突解决(IE双击才能打开附件上传对话框)
- Qt使用第三方串口类qextserialport无法打开串口的可能解决方案(文章中描述的可以解决)
- ViewPager+Fragment使用FragmentPageAdapter时app与v4下FragmentManager冲突的解决
- SVG fill-opacity、stroke-opacity与opacity同时设置时的冲突
- 同时安装oracle与tomcat的冲突问题
- 单片机同时连接另一个单片机与串口的电路设计
- 移动开发-lua 日记 -- 20150514
- cocos2dx Sprite触摸监听
- Apache 本地配置
- 项目实践之json字符串
- Eclipse: Problem: Unable to locate the Javac Compiler in...
- 打开POWER_SAVING与串口同时使用时的冲突解决
- 学习练习--UI界面实现个人所得税计算
- hdu 4658 Integer Partition
- django数据库错误相关问题
- HM测试数据处理遇到的问题
- HDOJ 奇数阶魔方 1998
- 跟周鸿祎学互联网思维 ——《周鸿祎自述|我的互联网方法论》读后感
- CSS3属性笔记(六)
- 杭电acm第1008Elevator(电梯)