打开POWER_SAVING与串口同时使用时的冲突解决

在使用CC2541的项目中,启用电源管理(POWER_SAVING)与串口通信存在冲突,导致串口无法正常工作。通过放弃DMA方式,转而采用ISR中断方式解决串口收发问题,但仍存在字符丢失。最终,通过调用HCI_EXT_HaltDuringRfCmd函数,在休眠前后进行ENABLE/DISABLE操作,有效防止了丢字符现象,确保了在保持低功耗的同时,串口通信的稳定性。
摘要由CSDN通过智能技术生成

最近项目里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_VendorSpe
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值