OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 23408|回复: 9

沉下去了,再来一贴,求教关于nrf51822低功耗睡眠模式的软件应用。

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-12-29
在线时间
0 小时
发表于 2014-12-30 11:36:05 | 显示全部楼层 |阅读模式
5金钱
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>nrf51822芯片datasheet原文,说是系统可以设置在</span></span></span><span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>System OFF MODE</span></span></span><span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>,此模式下CPU停止,外设运行,RAM数据保存,是最省电的睡眠,系统可以被GPIO的detect信号唤醒而后重启,原文如下:&nbsp;<br />
</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>System OFF is the deepest power saving mode the system can enter. In this mode, the system’s core&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>functionality is powered down and all ongoing tasks are terminated. The only mechanism that is functional&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>and responsive in this mode is the reset mechanism.&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>One or more blocks of the RAM can be retained in System OFF mode depending on the settings in the&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>RAMON register.&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>The system can be woken up from system OFF mode either from the DETECT signal generated by the GPIO&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>peripheral, or from a reset. When the system wakes up from OFF mode, a system reset is performed.&nbsp;</span></span></span><br />
<br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>库函sd_power_system_off()的函数说明是:Puts the chip in System OFF mode. 我用这个函数点灯基本确定CPU是睡下去了,但是GPIO中断没有唤醒起来。<br />
<br />
芯片GPIO关于DETECT信号有这样的说明,如下:&nbsp;</span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span></span></span></span><br />
<span style="background-color:#FFFFFF;"><span style="background-color:#D1D9E2;"><span>ORT is an event that can be generated from multiple input pins using the GPIO DETECT signal. The event<br />
will be generated on the rising edge of the DETECT signal. See section 13.1 on page 55 for more information<br />
about the DETECT signal.<br />
This feature is always enabled although the peripheral itself appears to be IDLE, that is, no clocks or other<br />
power intensive infrastructure have to be requested to keep this feature enabled. This feature can therefore<br />
be used to wake-up the CPU from a WFI or WFE type sleep in System ON with all peripherals and the CPU<br />
idle, that is, lowest power consumption in System ON mode.<br />
<br />
我个人觉得,detect信号就是一个高低电平,GPIO原文也说这个DETECT信号可以将CPU从睡眠模式唤醒,但是实际却还是没有唤醒。希望有搞这一块的朋友帮一起看看,或者加QQ312382027讨论一下。谢谢哈</span></span></span>

最佳答案

查看完整内容[请看2#楼]

不太正確喔!system off mode 除了core停止,peripheral也是停止的,功能幾乎等同關機,RAM可以設定是否保存(需耗費額外電力),喚醒除了power on reset,其他方式要在NRF_POWER register進行設定喚醒源(RESETREAS) 而 sd_app_evt_wait功能等同m0裡的WFE__,core停止,peripheral可以單獨運行,差別在enable softdevice時使用 sd_app_evt_wait,disable softdevice時使用W ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-10-31
在线时间
1 小时
发表于 2014-12-30 11:36:06 | 显示全部楼层
<p>
        不太正確喔!system&nbsp;off&nbsp;mode&nbsp;除了core停止,peripheral也是停止的,功能幾乎等同關機,RAM可以設定是否保存(需耗費額外電力),喚醒除了power&nbsp;on&nbsp;reset,其他方式要在NRF_POWER&nbsp;register進行設定喚醒源(RESETREAS) <br />
<br />
而&nbsp;sd_app_evt_wait功能等同m0裡的WFE__,core停止,peripheral可以單獨運行,差別在enable&nbsp;softdevice時使用&nbsp;sd_app_evt_wait,disable&nbsp;softdevice時使用WFE__
</p>
<p>
        <br />
</p>
<p>
        補充一下你看得GPIO DETECT 內容是使用GPIOTE的port event觸發 WFI or WFE用的!跟喚醒system off 不同
</p>
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-12-29
在线时间
0 小时
 楼主| 发表于 2014-12-30 11:42:12 | 显示全部楼层
此外,蓝牙好几个Demo应用软件中有个power_manage()的应用,小弟看了这是调用库函数
<table class="memname">
        <tbody>
                <tr>
                        <td class="memname">
                                sd_app_evt_wait
                        </td>
                        <td>
                                (
                        </td>
                        <td class="paramtype">
                                <br />
                        </td>
                        <td class="paramname">
                        </td>
                        <td>
                                )
                        </td>
                        <td>
                        </td>
                </tr>
        </tbody>
</table>
,关于这个函数nordic官网SDK提供的API手册说明如下:<br />
<div class="memproto">
        <table class="memname">
                <tbody>
                        <tr>
                                <td class="memname">
                                        uint32_t sd_app_evt_wait
                                </td>
                                <td>
                                        (
                                </td>
                                <td class="paramtype">
                                        void&nbsp;
                                </td>
                                <td class="paramname">
                                </td>
                                <td>
                                        )
                                </td>
                                <td>
                                </td>
                        </tr>
                </tbody>
        </table>
</div>
<div class="memdoc">
        <p>
                Waits for an application event.
        </p>
        <p>
                An application event is either an application interrupt or a pended
interrupt when the interrupt is disabled. When the interrupt is enabled
it will be taken immediately since this function will wait in thread
mode, then the execution will return in the application's main thread.
When an interrupt is disabled and gets pended it will return to the
application's thread main. The application must ensure that the pended
flag is cleared using <a class="el" href="file://D:/Keil/ARM/Device/Nordic/Documentation/s110/html/a00937.html#gace23c47a54b76d98a52b80ce1e3a4516">sd_nvic_ClearPendingIRQ</a> in order to sleep using this function. This is only necessary for
disabled interrupts, as the interrupt handler will clear the pending
flag automatically for enabled interrupts.
        </p>
        <p>
                In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0 System Control Register (SCR).
        </p>
See AlsoCMSIS_SCBNoteIf an application interrupt
has happened since the last time sd_app_evt_wait was called this
function will return immediately and not go to sleep. This is to avoid
race conditions that can occur when a flag is updated in the interrupt
handler and processed in the main loop.PostconditionAn application interrupt has happened or a interrupt pending flag is set.Return values
        <table class="retval">
                <tbody>
                        <tr>
                                <td class="paramname">
                                        <a class="el" href="file://D:/Keil/ARM/Device/Nordic/Documentation/s110/html/a00751.html#ga7e6367efeaac363d8cf024940b4ec123">NRF_SUCCESS</a>
                                </td>
                                <td>
                                </td>
                        </tr>
                </tbody>
        </table>
<br />
小弟英文水平有限,看了几遍也没看明白这个函数到底有什么作用?如何用? 哪位大哥大姐大神,百忙中能抽点空,帮看看讨论讨论,拜谢哪。<br />
</div>
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-12-30 22:43:13 | 显示全部楼层
帮顶.....
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-8-21
在线时间
0 小时
发表于 2015-8-21 12:27:46 | 显示全部楼层
回复【4楼】earthworm:
<br>---------------------------------
<br>这位大神说的非常正确,请问还在弄这款MCU芯片吗,以后希望多多指教呀!!
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-10-31
在线时间
1 小时
发表于 2015-11-13 21:08:28 | 显示全部楼层
回复【5楼】梦幻世界wjl:
<br>---------------------------------
<br>哪裡!聞道有先後,目前持續研究中,下周要去聽nrf52的發表啦,大家切磋切磋囉
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-8-21
在线时间
0 小时
发表于 2015-11-17 10:42:15 | 显示全部楼层
回复【6楼】earthworm:
<br>---------------------------------
<br>在哪里更新了呀,给个链接呗,我时常去膜拜下,哈哈
回复

使用道具 举报

3

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-8-30
在线时间
7 小时
发表于 2017-3-17 11:54:58 | 显示全部楼层
回复

使用道具 举报

3

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-8-30
在线时间
7 小时
发表于 2017-3-17 11:56:24 | 显示全部楼层
少年,给个链接你,希望能帮到你http://www.trtos.com/web/wp/?p=792   
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2017-6-14 10:40:27 | 显示全部楼层
我这也是唤醒不了, 例程就是这样的。 请问你是怎么解决的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表