最近在看CC1310的例程,当看到Task_sleep()这个函数时有几点不明,请各位TI工程师以及各位论坛前辈帮忙看一下,谢谢
1.调用Task_sleep()睡眠后,睡眠是指的是进入到standby模式吗?这个模式下CC1310的耗电量是怎么样的呢?
2.Task_sleep()是针对整个工程来说的,还是某个任务来说的。比如说,我在一个工程文件中建立了两个任务(task),其中一个task调用Task_sleep()进入睡眠模式后,另外一个task在同时是进入睡眠模式还是正常工作呢?
3.Task_sleep()是可以通过pin interrupt来唤醒的吧?
希望TI工程师以及各位论坛前辈能够帮忙解答一下,十分感谢^_^
Yue TANG:
Task_sleep 只是这个任务放弃执行。而不是进入到了低功耗状态。
关于低功耗参考附件,TI-RTOS会去管理低功耗,这应该和你以往自己管理低功耗有差别。
参考下WOR的例子。
Shengpeng Li:
回复 Yue TANG:
HI, TY
您好,我看CC1310的pinStandby例程时,发现里面就是调用Task_sleep()函数进入睡眠,而在对应的readme中描述,该例程的功能是周期性的进入standby模式。而据我所知,CC1310的standby模式是比较节电的。那么我可以这样理解吗,当我在任务中(单任务)调用Task_sleep(5000000/Clock_tickPeriod),也就是挂起任务5s,那么在这5s中CC1310的功耗会很低吗?求解,谢谢
Yue TANG:
回复 Shengpeng Li:
实际调用睡眠管理是在Idle task中。 单纯调用task_sleep通常是不会进入低功耗的,他只是放弃了当前任务的执行。所有睡眠开始于下面这个结构,
里面的PowerCC26XX_standbyPolicy,你可以跟一下这个函数,最终会调用Power_sleep()函数。 这两个函数会判断一系列的条件(哪些条件参考我之前
的附件),最终决定是否进入低功耗状态。这两个函数,可以在TIRTOS的安装包里面找到.
const PowerCC26XX_Config PowerCC26XX_config = {
.policyInitFxn = NULL, .policyFxn = &PowerCC26XX_standbyPolicy, .calibrateFxn = &PowerCC26XX_calibrate, .enablePolicy = TRUE, .calibrateRCOSC_LF = TRUE, .calibrateRCOSC_HF = TRUE,};
Shengpeng Li:
回复 Yue TANG:
TY您好,您说的这两个函数我之前已经在您发的Power_Management中看到了,也就是说在配置完相关参数后,调用PowerCC26XX_standbyPolicy()后,TI-RTOS会自动管理低功耗模式对吗?那么如果是这样的话,开发者怎么知道自己的程序什么时候能够进入到低功耗模式呢,怎么计算功率呢?谢谢,期待您的解答
Yue TANG:
回复 Shengpeng Li:
1. 对,自动管理低功耗。
2. 条件符合就进入低功耗,这个开发者可以通过Power Management API 来控制啊
3.功耗的计算方法,可参考类似芯片如下Link
http://www.ti.com/lit/an/swra478a/swra478a.pdf
下面这个TI-design也可以去了解下,这个是基于CC1310的超低功耗的实现
http://www.ti.com/tool/TIDA-00489?keyMatch=cc1310&tisearch=tidesigns
Shengpeng Li:
回复 Yue TANG:
TY您好, 那我想问一下
1.PowerCC26XX_standbyPolicy()这个函数是需要在程序运行时不停的调用来不停的判断进入某种低功耗模式吧?
2.想要调用PowerCC26XX_standbyPolicy()是需要更改如下吧
const PowerCC26XX_Config PowerCC26XX_config = {
.policyInitFxn = NULL,.policyFxn = &PowerCC26XX_standbyPolicy,.calibrateFxn = &PowerCC26XX_noCalibrate,.enablePolicy = TRUE,.calibrateRCOSC_LF = FALSE,.calibrateRCOSC_HF = FALSE,};
3.想要调用PowerCC26XX_standbyPolicy()还需要更改什么配置呢?
真心希望得到您的解答,谢谢
Yue TANG:
回复 Shengpeng Li:
1. 这个函数是不需要你调用的,这个函数是TI-RTOS的一部分,不改不调。你能调用的API如下:
Power Management APIs Used by ApplicationsApplications can optionally call the following APIs. These APIs are not required, but are available to theapplication developer.• Power_enablePolicy() and Power_disablePolicy() controls when the policy is active at runtime.• Power_setPolicy() chooses a different power policy at runtime.• Power_setConstraint() and Power_releaseConstraint() set and release constraints for specificpower transitions (in addition to constraints drivers are already managing).• Power_setPerformanceLevel() scales the device performance level between available operatingpoints.• Power_registerNotify() registers an application callback function to be triggered upon specificpower transition events.• Power_shutdown() puts the device in its lowest-power state, which requires a full application rebootto power up again.
2. 你是说红色的吗? 参考WOR的例子
const PowerCC26XX_Config PowerCC26XX_config = { .policyInitFxn = NULL, .policyFxn = &PowerCC26XX_standbyPolicy, .calibrateFxn = &PowerCC26XX_calibrate, .enablePolicy = TRUE, .calibrateRCOSC_LF = TRUE, .calibrateRCOSC_HF = TRUE,}
3. 看文档啊,同学. 那个文档里每个API的作用都有说明啊。
Yue TANG:
回复 Shengpeng Li:
文档里还给了如何让driver支持power managerment.
Shengpeng Li:
回复 Yue TANG:
您好,实在是打扰了,如果我在程序中调用Power_enablePolicy() ,是不是就已经开启低功耗策略了,TI-RTOS会自动管理低功耗模式啊?因为我现在最大的困惑就是CC1310想要进入低功耗模式的话会不会像CC2530一样需要修改一些配置文件。我如果在CC1310程序中直接调用Power_enablePolicy() 是不是就会自动进行低功耗管理,谢谢