Options To Reduce PWM Power Consumption On nRF52811?

We're using PWM on the nRF52811 to generate a 3.2 MHz clock needed by one of our peripherals, using the nrf_drv_pwm library in nRF5 SDK 17.1.0. We're seeing power consumption jump up by about 1.7 mA when PWM is enabled. Questions:

* Does that sound about right for a 3.2 MHz PWM clock, or should we expect lower power consumption?

* Are we correct that a lot of that is due to EasyDMA being automatically enabled in hardware when PWM is enabled.

* Are we correct that there is not a low-power configuration for the PWM peripheral controller?

* Are we correct that it's not possible to use the PWM peripheral controller without EasyDMA?

* Are we correct that the low-power PWM library is not capable of generating frequencies this high?

* Are there any other options available for generating a 3.2 MHz clock from the nRF52811 at lower power consumption?

Parents
  • Hello Nathan,
    Based on the current consumption you report the first question is what clock source are you using for as input for the PWM/peripheral clock. It sounds like you've configured HFXO as source, but you should probably use HFINT instead?
    EasyDMA is the only option, but not causing the current consumption you're seeing.
    Best regards
    Asbjørn
Reply
  • Hello Nathan,
    Based on the current consumption you report the first question is what clock source are you using for as input for the PWM/peripheral clock. It sounds like you've configured HFXO as source, but you should probably use HFINT instead?
    EasyDMA is the only option, but not causing the current consumption you're seeing.
    Best regards
    Asbjørn
Children
  • Asbjørn,

    > It sounds like you've configured HFXO as source, but you should probably use HFINT instead?

    Thank you for your response, but I'm not sure what you are suggesting here, for the following reasons:

    * The nRF52811 PWM controller does not allow the selection of a clock source, to the best of my knowledge

    * In the nRF5 SDK architecture, nrf_drv_clock / nrfx_clock / SoftDevice handles enabling HFXO on-demand for peripherals that require it. We're not using any of those peripherals except BLE, and while the SoftDevice is enabled at this point in our code, BLE isn't initialized yet. So the HFXO should not be running.

    * nrf_drv_clock_hfclk_is_running() returns 0 if we call it immediately prior to measuring PWM power consumption.

    So I think HFXO is definitely not being used as a clock source for PWM in our case.

    EasyDMA is the only option, but not causing the current consumption you're seeing.

    Why do you say that? There are many reports here that simply enabling a peripheral that uses EasyDMA increases power consumption by at least 1 mA, and that's been our experience with the nRF52840 as well. For instance, see EasyDMA current consumption 

Related