CC2540 or CC2541进入PM3深度休眠的条件
来源:互联网 发布:php中end方法 编辑:程序博客网 时间:2024/06/07 15:25
一、CC2540 or CC2541进入PM3深度休眠的条件
①osal_timeout = 0;
②llTimeout = 0;
只要同时满足上面两个条件,BLE就会自己进入PM3模式,此时,所有内部电路都关闭,只有外部中断和复位电路可以工作,因此,功耗最低,且可通过外部中断对其唤醒。当中的一个不为0,都将进入PM2模式。
下面肯定会有人问上面这两个条件是什么,osal_timeout就是各层的定时事件的某个事件的超时时间,llTimeout是link layer最底层,也就是RF控制器层的定时事件的超时时间。只要其中的一个不等于0,就说明有定时事件存在,需要定时来处理这些事件,因此就需要定时来唤醒芯片来执行这些事件,所以芯片就不能进入PM3(PM3只能是外部中断唤醒),只能进入PM2模式。
所以,也就是说,要想进入PM3模式,就必须清空所有的定时事件,当不存在任何的定时事件时,即osal_timeoout和llTimeout都会为0,这样就直接导致进入PM3模式。清理定时事件,就是深度休眠的前处理。如此,使得整个BLE有良好的鲁棒性。下面从代码的角度来剖析BLE的休眠机制。
二、BLE的休眠函数
下面就是休眠处理函数的源码,里面timeout就是要设置休眠定时器的时间,这个值来自于osal_timeout或者是llTimeout,那个值小,就说明那个事件更紧急,则由小的来赋给timeout设置休眠定时器,执行定时任务。当timeout = 0时,说明没有定时任务了,就可进入PM3深度休眠了。
llTimeout是通过LL_TimeToNextRfEvent( &sleepTimer, &llTimeout )来得到底层的定时事件,LL_TimeToNextRfEvent( &sleepTimer, &llTimeout )函数是link layer的不开源的代码,因此看不到里面的细节,但是可以肯定的是,llTimeout是和RF定时控制事件相关。一般蓝牙广播、连接、初始化,此llTImeout的值就不会为零,当没有广播、断开连接可以使得llTImeout为零。
网上看的
①osal_timeout = 0;
②llTimeout = 0;
只要同时满足上面两个条件,BLE就会自己进入PM3模式,此时,所有内部电路都关闭,只有外部中断和复位电路可以工作,因此,功耗最低,且可通过外部中断对其唤醒。当中的一个不为0,都将进入PM2模式。
下面肯定会有人问上面这两个条件是什么,osal_timeout就是各层的定时事件的某个事件的超时时间,llTimeout是link layer最底层,也就是RF控制器层的定时事件的超时时间。只要其中的一个不等于0,就说明有定时事件存在,需要定时来处理这些事件,因此就需要定时来唤醒芯片来执行这些事件,所以芯片就不能进入PM3(PM3只能是外部中断唤醒),只能进入PM2模式。
所以,也就是说,要想进入PM3模式,就必须清空所有的定时事件,当不存在任何的定时事件时,即osal_timeoout和llTimeout都会为0,这样就直接导致进入PM3模式。清理定时事件,就是深度休眠的前处理。如此,使得整个BLE有良好的鲁棒性。下面从代码的角度来剖析BLE的休眠机制。
二、BLE的休眠函数
下面就是休眠处理函数的源码,里面timeout就是要设置休眠定时器的时间,这个值来自于osal_timeout或者是llTimeout,那个值小,就说明那个事件更紧急,则由小的来赋给timeout设置休眠定时器,执行定时任务。当timeout = 0时,说明没有定时任务了,就可进入PM3深度休眠了。
llTimeout是通过LL_TimeToNextRfEvent( &sleepTimer, &llTimeout )来得到底层的定时事件,LL_TimeToNextRfEvent( &sleepTimer, &llTimeout )函数是link layer的不开源的代码,因此看不到里面的细节,但是可以肯定的是,llTimeout是和RF定时控制事件相关。一般蓝牙广播、连接、初始化,此llTImeout的值就不会为零,当没有广播、断开连接可以使得llTImeout为零。
网上看的
0 0
- CC2540 or CC2541进入PM3深度休眠的条件
- CC2540/CC2541进入PM3深度休眠的条件及其休眠机制的剖析
- CC2540与CC2541的区别
- CC2540和CC2541的区别
- cc2540 PM3模式
- 【BLE】CC2541与CC2540的区别
- CC254x简介-CC2541/CC2540
- CC254x简介-CC2541/CC2540
- CC254x(cc2540/cc2541)的微信AirSync调试笔记
- CC2540 与 CC2541 区别 1
- CC2541程序向CC2540移植
- CC2530/CC2540/CC2541常用寄存器
- cc2540/cc2541 OAD与SNV
- CC2540一主多从的限制条件
- PM3
- 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现
- cc2540 cc2541 开发板资料更新日志
- CC254x/CC2540/CC2541库函数速查
- 如何修改WAMP中mysql默认空密码
- 解决Linux和SecureCRT上UTF-8汉字乱码问题
- 关于多线程线程池的一些整理
- UILabel的自适应问题
- activity启动模式详解
- CC2540 or CC2541进入PM3深度休眠的条件
- 说一说golang的协程
- Android中使用log4j
- spring 定时任务执行两次 解决方案
- LayoutParams
- Centos 安装Consolas字体
- Swift集合类型(数组和字典)
- 如何将ios应用从appstore转到企业版本
- Swift流程控制