This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

What is the power and clock model of peripheral in NRF51?

Hello,

I was puzzled by RM.

I notice POWER control register in peripheral(UART,SPI,TWI) module.

Please answer following questions about the relation between system power and the peripheral power register value.

  1. Will UART be powered when system power off and uart register power on?
  2. Will UART be powered when system power on (constant latency) and UART register power off?
  3. Will UART be powered when system power on (low power) and UART register power off?

====================================================

Will system control logic shutdow power of modules when system in power on (low power) mode?

Alternatively, you can answer next question.

Is there any possible that UART be power off by control logic, when system power on (low power) and UART register power on?

If yes, can registers retention their values?

=====================================================

What does IDLE and RUN mean in RM/PS, is it something about clock gating?

Is IDLE the only low power mode of model?

If yes:

  1. Will module clock be automatically gated in IDLE mode?
  2. How does control logic knows module in IDLE mode?
  3. Can clock automatically on when needed, eg. new byte comes in UART?
  4. Is this schematic transparent to software?

===================================================

What is the relationship between ENABLE and IDLE state?

Is it possible for a module to enter IDLE when ENABLE is true?

For UART,

  1. Will it be IDLE when not enabled?
  2. Will it be RUN once enabled?
  3. Will it be IDLE when not transmitting and not receiving?
  4. Will it be RUN only when transmitting or receiving?

Thanks a lot!

Edit: format, tags.

Parents
  • Ole - Thanks for your comments - Please keep going:

    [b]YOu said "System on, idle In this mode, all peripherals that are enabled when entering sleep stays enabled, and you can wake up on any interrupt. All clocks and regulators that are not required by a running peripheral will be turned off, but all RAM and registers are retained. When the chip comes out of sleep, it continues where it left off.

    With the soft devices, you can enter this sleep mode using sd_app_event_wait(), and if you don't use the softdevice, you can use __WFI().

    The base current consumption in this mode is given in table 23 in the PS as I_ON, 2.3 µA. The current consumption of any running peripheral, and their required clocks and regulators will come on top of this. The block requirements of the different peripherals can be seen in table 24 in section 8.3 in the nRF51822 PS. "[/b]

    1. Further - I cannot seem to get below 1.69Ma current loading w/ the _WFI as per above. The wait is work ing well (per a gpio LED flask between loops) and i see the current drop from about 4.2Ma while active and the lower when it's sleeping. This is still WAY too much current loading for the life we're looking for. Assuming that the RTC requires a clock, what are our options on killing the peripherals. In my case, ADC is disabled, and the ANT is not enabled yet.

    2. Where can one find competent, complete examples of the nrf_wait_for_app_event calls?? The documents leave LOTS to be desired and cause lots of struggles w/ the new-comers to NS. Other makers are flooded with examples and variations of them - NS does not seem to have it there..??

    3. Note that I notice lots of examples referencing the BTE development sets (that are still Corex-0 based?) but are missing from the NRF (ANT sdk) examples? Are they interchangeable, excluding the radio basis'. Why are the examples not global to the SOC's?

    4. I stumbled into getting the nrf_wait_for_app_event working a few days ago (my fault) but cannot seem to get it working again. I had it to ~.00-3Ma at one point but lost it and did not consider that it would be this difficult to get it running again. I've never gotten it to work since.

    tks!

Reply
  • Ole - Thanks for your comments - Please keep going:

    [b]YOu said "System on, idle In this mode, all peripherals that are enabled when entering sleep stays enabled, and you can wake up on any interrupt. All clocks and regulators that are not required by a running peripheral will be turned off, but all RAM and registers are retained. When the chip comes out of sleep, it continues where it left off.

    With the soft devices, you can enter this sleep mode using sd_app_event_wait(), and if you don't use the softdevice, you can use __WFI().

    The base current consumption in this mode is given in table 23 in the PS as I_ON, 2.3 µA. The current consumption of any running peripheral, and their required clocks and regulators will come on top of this. The block requirements of the different peripherals can be seen in table 24 in section 8.3 in the nRF51822 PS. "[/b]

    1. Further - I cannot seem to get below 1.69Ma current loading w/ the _WFI as per above. The wait is work ing well (per a gpio LED flask between loops) and i see the current drop from about 4.2Ma while active and the lower when it's sleeping. This is still WAY too much current loading for the life we're looking for. Assuming that the RTC requires a clock, what are our options on killing the peripherals. In my case, ADC is disabled, and the ANT is not enabled yet.

    2. Where can one find competent, complete examples of the nrf_wait_for_app_event calls?? The documents leave LOTS to be desired and cause lots of struggles w/ the new-comers to NS. Other makers are flooded with examples and variations of them - NS does not seem to have it there..??

    3. Note that I notice lots of examples referencing the BTE development sets (that are still Corex-0 based?) but are missing from the NRF (ANT sdk) examples? Are they interchangeable, excluding the radio basis'. Why are the examples not global to the SOC's?

    4. I stumbled into getting the nrf_wait_for_app_event working a few days ago (my fault) but cannot seem to get it working again. I had it to ~.00-3Ma at one point but lost it and did not consider that it would be this difficult to get it running again. I've never gotten it to work since.

    tks!

Children
  • Since this is mostly unrelated questions, it would have been great if you could post them separately instead of hi-jacking this question. I'll try to answer them briefly here, but if you have follow-up-questions, please submit a new question.

    1., 4. See this question: https://devzone.nordicsemi.com/index.php/why-does-my-nrf51822-consume-1-ma-in-sleep

    1. There are several examples in the SDK, including ones that use low-power modes. If there is anything in particular you're missing, please see if there are any interesting questions here on the Developer Zone, or submit a new one, and we'll try to help you.

    2. Since the radio API of BLE and ANT are very different, it's not easy to share code between them. However, all the hardware examples are equal, since they interface with the hardware directly instead of the softdevice API. All of those examples should be in the Board/nrf6310 folder. Even if you have the Evaluation Kit (pca10001), these examples should still be useful, but you may have to change the pinout to use them successfully.

Related