<?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>nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/59944/nrf9160-current-consumption</link><description>Hi, 
 I use nRF9160 custom board and my application uses USART, ADC, I2c, SPI, RTC and LTE modem. Currently I am trying to reduce sleep current on IDLE state which is 850 uA. 
 I noticed that the drivers pm functions were not invoked. 
 Can anybody give</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 20 Apr 2020 11:29:07 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/59944/nrf9160-current-consumption" /><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/245504?ContentTypeID=1</link><pubDate>Mon, 20 Apr 2020 11:29:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:418f844d-6872-43ce-8aa3-90007fd677b6</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The 200µA could maybe be a GPIO that has internal pull up/down configured, and is being pulled down/up.&lt;/p&gt;
&lt;p&gt;-Amanda H.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/244980?ContentTypeID=1</link><pubDate>Thu, 16 Apr 2020 12:12:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d7106d7d-9acc-433b-8692-8a5e528cea12</guid><dc:creator>Meni</dc:creator><description>&lt;p&gt;In general, I have a couple of threads that most of the time are all blocked by message queue.&lt;br /&gt;At the beginning of each hour, the cpu wakes-up by RTC0 interrupt and one of the threads start sampling an analog input for 30 sec.&lt;br /&gt;at the end of this process I disable all the relevant peripherals (UART2, SPI, I2C, SDADC).&lt;/p&gt;
&lt;p&gt;once a day the cpu sends his calculation to web server and after that I turn off the modem by using lte_lc_power_off() api.&lt;/p&gt;
&lt;p&gt;while all the threads are blocked, the kernel goes to IDLE state. At this time I want to disable the context switch and some peripherals.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I have a HW switch of all my HW components so basically they are all disconnected from power supply.&lt;/p&gt;
&lt;div style="left:-36px;position:absolute;top:-6px;" id="gtx-trans"&gt;
&lt;div class="gtx-trans-icon"&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/244513?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 15:36:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:73bd1b66-a3ba-49b0-b2e6-69f007174a6f</guid><dc:creator>MJD093</dc:creator><description>&lt;p&gt;Ok, I think I need more information about your application.&lt;/p&gt;
&lt;p&gt;Is your main() function looping or can your application fall straight through and work off of work queues and other threads?&lt;/p&gt;
&lt;p&gt;If it doesn&amp;#39;t then this won&amp;#39;t work. This assumes that there are no threads that are ready to run including the main thread and therefore the kernal scheduler is IDLE.&lt;/p&gt;
&lt;p&gt;Your application being IDLE and the kernal scheduler being IDLE are two very different things.&lt;br /&gt;&lt;br /&gt;For the power consumption, have you any figures for how much current drain your device makes from other parts of the device. There could be consumption from other things on your device. Also, to get lower consumption then you need to disable more than just UART0.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/244508?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 15:29:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:91f4e8ab-c886-4a9d-bf7d-2c6adee945da</guid><dc:creator>Meni</dc:creator><description>&lt;p&gt;According to the following link:&lt;br /&gt;&lt;a href="https://docs.zephyrproject.org/latest/reference/power_management/index.html"&gt;docs.zephyrproject.org/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the device becomes idle for at least CONFIG_TICKLESS_IDLE_THRESH ticks, the OS context switch should be disabled.&lt;br /&gt;In this state, I want to disable UART0 debugging port etc&amp;#39;.&lt;/p&gt;
&lt;p&gt;There for I turned on the flags:&lt;br /&gt;CONFIG_TICKLESS_IDLE=y&lt;br /&gt;CONFIG_TICKLESS_IDLE_THRESH=3&lt;br /&gt;CONFIG_SYS_POWER_SLEEP_STATES=y&lt;/p&gt;
&lt;p&gt;In that case the user API&amp;#39;s:&lt;/p&gt;
&lt;p&gt;void sys_pm_notify_power_state_entry(enum power_states state)&lt;br /&gt;void sys_pm_notify_power_state_exit(enum power_states state)&lt;/p&gt;
&lt;p&gt;should be called by the OS, but for some reason it does not happen.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;In any case, even when I disable all peripherals (including UART0) i am getting 200uA&lt;br /&gt;And I can&amp;#39;t find the reason for that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/244487?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 14:13:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:036f3a06-700c-49c2-a56e-efff15f0d9b3</guid><dc:creator>MJD093</dc:creator><description>&lt;p&gt;I&amp;#39;m not sure what you mean? How exactly are you &amp;#39;sleeping&amp;#39; the device?&lt;/p&gt;
&lt;p&gt;The module can go very low (I&amp;#39;ve measured 7uA on the Development Kit) in a low power IDLE state. However, it is your own code that is managing the application, including the IDLE state. I&amp;#39;m not sure why you would need hook functions.&lt;/p&gt;
&lt;p&gt;Your custon FW manages how the device transitions different states, so you wouldn&amp;#39;t hook anything. Just invoke some additonal features in your state transitions to disable/enable some peripherals.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/244483?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 14:03:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b40115a1-0bc4-4bc4-a707-41ab112e6621</guid><dc:creator>Meni</dc:creator><description>&lt;p&gt;Are&amp;nbsp; there any hooks functions that invoke while the device enters and exits from sleep mode?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF9160 current consumption</title><link>https://devzone.nordicsemi.com/thread/243882?ContentTypeID=1</link><pubDate>Tue, 07 Apr 2020 11:48:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fdc7b61d-02ce-4f8e-9518-a295fba8b766</guid><dc:creator>MJD093</dc:creator><description>&lt;p&gt;The simplest way to reduce the current is to disable the unused peripherals that are not necessary when in IDLE.&lt;/p&gt;
&lt;p&gt;What systems are incapable of being used in IDLE should be disabled during runtime using code such as:&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;printk(&amp;quot;Disabling SPI\n&amp;quot;);

NRF_SPIM3_NS-&amp;gt;TASKS_STOP = 1;
NRF_SPIM3_NS-&amp;gt;ENABLE = 0;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Refer to the user manual on peripherasl to see how to do this with the other ones. Be sure to write code that can re-enable them as well as disable.&lt;/p&gt;
&lt;p&gt;For other systems, consider smarter ways to incorperate them. Such as; when IDLE, disable all peripherals and enter low power IDLE. If interrupt pin triggers, re-enable only the perpiherals required to deal with that interupt.&lt;/p&gt;
&lt;p&gt;UART0, serial port should be disabled if it is not being used for debugging to further reduce the power consumption, (this usually drains several hundred uAs).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>