<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52832 power problem</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/20551/nrf52832-power-problem</link><description>Hello, 
 I am working on a custom PCB with a nRF52832 and I&amp;#39;ve been unable to get the ON IDLE power under 480uA. Here are the basics regarding the setup 
 
 nRF52832 Rev 1 
 SDK 12.1.0 
 Soft Device 132, revision 3.0.0 
 FreeRTOS port from SDK w</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 20 Mar 2017 20:54:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/20551/nrf52832-power-problem" /><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80128?ContentTypeID=1</link><pubDate>Mon, 20 Mar 2017 20:54:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:32ddd112-62de-469a-b723-a5045c1be61b</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Well, I finally have the board down to 18uA. It was like a plane crash: A series of issues some of which we touched on in the comments above. I picked this one to make an answer because the FPU was part of the problem. I also had a number of places where I cleared an interrupt and needed to read the register back before sleeping, and it seems to work a lot better calling the sd_app_event_wait() function in the FreeRTOS suppressTicksAndSleep function. And of course the PAN-89 work around.&lt;/p&gt;
&lt;p&gt;Thanks both of you for the suggestions!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80121?ContentTypeID=1</link><pubDate>Mon, 20 Mar 2017 14:45:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f12cc3ea-c589-4fe1-b3fe-dfe00b425fd6</guid><dc:creator>butch</dc:creator><description>&lt;p&gt;Re the FPU.  I think there is code in nrf52_startup.c that enables it if the compiler thinks it is used.  I think the compiler thinks the FPU is used if you specify certain compiler flags such as -mfpu=hard  (For GCC compiler, it may be different for other compilers, and I could be wrong.)  I simply commented the enabling code out and changed my compiler flags.  And the current consumption of the fpu may not be a problem per se but that unhandled floating point exceptions may prevent sleep.  Re GPIO, I have been wondering whether a GPIO out (even in the LOW state) during sleep consumes much current.  I can&amp;#39;t find a definitive answer in the Nordic documentation.  I would guess it would not consume much power, since there would be no clocked switching (?) but I don&amp;#39;t understand the output &amp;#39;buffer&amp;#39; circuit.  To work the problem, I added assert()&amp;#39;s on various IO regs for peripherals.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80120?ContentTypeID=1</link><pubDate>Mon, 20 Mar 2017 12:34:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7eca4ebb-0cdf-48d1-9a16-114fd21c6b62</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Good suggestions @butch and @Turbo J. I have already implemented the work around for PAN-89 even though I am not using the EASYDMA. I am working on trying the FPU this morning and will work in making sure the sleep is actually sleeping. At one point during my testing I was using a GPIO keeping it low while sleeping and high after waking up and it showed that the sleep was effective. But since I&amp;#39;m going to be adding the FPU stuff to the same code, I&amp;#39;ll verify again that the device is actually sleeping when I think it is.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80126?ContentTypeID=1</link><pubDate>Sun, 19 Mar 2017 21:34:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7d307c19-7a50-491e-b4f8-3ff7bdc776c1</guid><dc:creator>Turbo J</dc:creator><description>&lt;p&gt;Have you checked &lt;a href="http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.Rev1.errata%2Fanomaly_832_89.html&amp;amp;cp=2_2_1_0_1_26"&gt;Errata 89&lt;/a&gt; in the errata sheet?
See also: &lt;a href="https://devzone.nordicsemi.com/question/91727/nrf52-twi-excess-current-consumption/?answer=92200#post-id-92200"&gt;this answer&lt;/a&gt; to a similar problem.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80125?ContentTypeID=1</link><pubDate>Sun, 19 Mar 2017 16:23:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6ca62663-133b-4b62-ad6d-c17b78c90e7f</guid><dc:creator>butch</dc:creator><description>&lt;p&gt;Another idea.  The nrf52 ARM has a write cache.  To insure that a write to an IO reg takes effect, you need to read from memory (typically the same IO reg).  And since the CPU clock (64Mhz) and IO bus clock (16Mhz) are different, it may take four instruction cycles before the peripheral sees the write.  I am not sure that WEV flushes the write cache.  So it is conceivable there is a race if you disabled a peripheral by writing to an IO reg just before sleeping, the peripheral might not be disabled before the power manager decides what clocks are necessary during sleep.  Although your code to sleep is different than what I usually see (SEV; WEV; WEV) and might not suffer this race.  Anyway, when power consumption is high during sleep, one should consider whether the sleep is actually effective.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80124?ContentTypeID=1</link><pubDate>Sat, 18 Mar 2017 14:51:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8f749894-828d-4f24-bb59-148f10bfae2b</guid><dc:creator>John</dc:creator><description>&lt;p&gt;I&amp;#39;ll have to look into the FPU on Monday, thanks for the suggestion. I&amp;#39;ll check the errata over the weekend.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80127?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2017 20:37:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:656b425c-8064-4f18-9d6b-a9339b36c867</guid><dc:creator>butch</dc:creator><description>&lt;p&gt;FPU disabled?  I think it could easily be enabled without your knowing it.   Isn&amp;#39;t there an errata on that?   I&amp;#39;ll elaborate if necessary.  (But I don&amp;#39;t have my notes with me.  I have fought a similar problem without success; I reverted to an nrf51 design as an expedient.   Unexpected power usage is not uncommon, be sure to search this forum.)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80123?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2017 15:58:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9cd2dd0a-af72-45f3-9022-a20e60c5f52e</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Thanks for responding! We have had the same experience in programming and/or debugging a board and seeing the power go up until you power cycle or pin reset the device, and remove the debugger. I&amp;#39;ve been careful in this case to do that in my testing.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve tried getting to IDLE ON mode in two ways. Both are implementented in the FreeRTOS suppressTicskAndSleep which is part of the FreeRTOS tickless idle functionality. The first was to call via assembly instructions like this:&lt;/p&gt;
&lt;p&gt;do{
__WFE();
} while (0 == (NVIC-&amp;gt;ISPR[0] | NVIC-&amp;gt;ISPR[1]));&lt;/p&gt;
&lt;p&gt;The second was to call sd_app_evt_wait(); after enabling interrupts.&lt;/p&gt;
&lt;p&gt;Same result both ways unfortunately.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 power problem</title><link>https://devzone.nordicsemi.com/thread/80122?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2017 15:30:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ecd3d836-3f40-46cf-91e3-1dda04bc11d5</guid><dc:creator>butch</dc:creator><description>&lt;p&gt;Just some ideas... Usual problem is board is in DEBUG mode.  How are you getting to sleep i.e. IDLE ON, are you calling a SD function?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>