<?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>Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/39645/unable-to-change-vdd-to-1-8v</link><description>Dear all 
 I am currently working with a nRF52840 Dongle, the ble_app_blinky_s140 example. 
 To power some external circuits i have to set VDD to 1.8V. 
 Until now i tried the following approaches. 
 https://devzone.nordicsemi.com/f/nordic-q-a/20528/why</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 01 Nov 2018 14:21:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/39645/unable-to-change-vdd-to-1-8v" /><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/155587?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2018 14:21:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f066a097-b5a2-4cf1-b84f-339e0336a939</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;That&amp;#39;s great! I just wanted to add the warning in case anyone else came over this thread and tried this procedure, without access to a debugger.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/155585?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2018 14:19:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:074c9688-2940-4c06-bb2d-6451f9313c02</guid><dc:creator>Mgiger</dc:creator><description>&lt;p&gt;Hi Jorgen&lt;/p&gt;
&lt;p&gt;Thank you for the follow up. I have also recognized this. But as i now have the connector on the dongle this doesn&amp;#39;t matter for me.&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;Marcel&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/155579?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2018 14:14:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4609f755-c500-4d0f-95fb-dd1192dfcda7</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;&lt;strong&gt;WARNING: If you follow the suggestion from&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/michel_5f00_93"&gt;michel_93&lt;/a&gt;, you will erase the BOOTLOADER address from UICR and you will not be able to flash the Dongle from nRF Connect through the USB port, you will require a debugger connected to the SWD interface.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want to erase the UICR in code to update a value, you should read every register in UICR and write it back after erase to make sure no data is lost. At the very least, you need to write back the BOOTLAODER address located in&amp;nbsp;register&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.nrf52840.ps/uicr.html?cp=2_0_0_3_4_0#register.NRFFW-0-14"&gt;NRFFW[0]&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/155576?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2018 14:11:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d6fb8ec-a921-406e-858c-1d8db9345295</guid><dc:creator>Mgiger</dc:creator><description>&lt;p&gt;Hi Michel&lt;/p&gt;
&lt;p&gt;It worked exactly as described. I have programmed the dongle over the P1 connector on the back with a nrf5280-DK. The VDD_OUT Pin is now on 1.8V as expected.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/155568?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2018 13:41:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a194c428-dede-4584-bb00-f2902b308c3a</guid><dc:creator>michel_93</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have found a solution for this problem by adding the following functions to the main of the blinky example.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;/**
 * @brief Function to erase UICR Registers.
 */


void nvmcErase(void)       
  if (NRF_UICR-&amp;gt;REGOUT0 != UICR_REGOUT0_VOUT_1V8) 
  {
      NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Een &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;        //erase enable
      while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
      NRF_NVMC-&amp;gt;ERASEUICR = NVMC_ERASEUICR_ERASEUICR_Erase &amp;lt;&amp;lt; NVMC_ERASEUICR_ERASEUICR_Pos;   //erase UICR
      while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
      NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Ren &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;  //read only enable
      while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
  }
}


/**
 * @brief Function for configuration of REGOUT0 register.
 */
void vddInit(void)
{
  if (NRF_UICR-&amp;gt;REGOUT0 != UICR_REGOUT0_VOUT_1V8) 
  {
	NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Wen &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;    //write enable
	while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
	NRF_UICR-&amp;gt;REGOUT0 = UICR_REGOUT0_VOUT_1V8;                        //configurate REGOUT0
	NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Ren &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;
	while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
        NVIC_SystemReset();                                               // Reset device
  } 
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The first function is to clear the UICR Registers. The second one then writes the UICR with the new values.&lt;/p&gt;
&lt;p&gt;Keep in mind to delete or uncomment the bsp_board_leds_init function in the boards.c file if you use a dongle.&lt;/p&gt;
&lt;p&gt;Also the LEDs will not work properly if you use the dongle with 1.8V.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Michel&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153802?ContentTypeID=1</link><pubDate>Mon, 22 Oct 2018 12:23:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:818877e2-8ad9-46fa-8bc1-6fee904b9fa3</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;There is no way to read the value of the register directly over the USB port, without flashing a firmware that reads the value and transmit it over USB (USB CDC/MDS examples, etc.).&lt;/p&gt;
&lt;p&gt;Yes, the chip can be flashed using SWD interface in case of wrong values.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153788?ContentTypeID=1</link><pubDate>Mon, 22 Oct 2018 11:51:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fbf9058a-070c-47f6-acba-2866ae417902</guid><dc:creator>Mgiger</dc:creator><description>&lt;p&gt;As long as only the right bits in NRF_UICR-&amp;gt;REGOUT0 are erased this should result in the wanted behaviour (0xFFFFFFF0 should set VDD_OUT to 1.8V).&lt;/p&gt;
&lt;p&gt;Is there any way to read out the NRF_UICR-&amp;gt;REGOUT0 through the USB-Port or do i need to solder the P1 Pin Header?&lt;/p&gt;
&lt;p&gt;According to the nrf52840_Dongle_User Guide Chapter 6.7 SWD interface I should be able to connect the dongle to a DK (Debug In) and program it over the same connector.&lt;/p&gt;
&lt;p&gt;I assume this gives me the ability&amp;nbsp; to read out the UICR and to reflash the bootloader (in case the NRF_UICR is already messed up).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Regards Marcel&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153761?ContentTypeID=1</link><pubDate>Mon, 22 Oct 2018 09:17:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:31348dc1-a70a-4ba1-a8ad-5f623d97da39</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;What is the current value of your&amp;nbsp;NRF_UICR-&amp;gt;REGOUT0 register? Note that UICR is flash, and can only be written after erase. You can update the value by clearing bits, but you cannot set bitw without erasing. Erasing UICR can only be done by erasing the whole UICR area. The BOOTLOADER on the Dongle use some registers in UICR so I would not recommend erasing UICR as you risk bricking the device (the bootloader must be reflashed using a J-Link debugger).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153708?ContentTypeID=1</link><pubDate>Sat, 20 Oct 2018 11:47:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0c95f03e-85fe-477b-9616-2667e20c7bf7</guid><dc:creator>Mgiger</dc:creator><description>&lt;p&gt;Hi Jorgen&lt;/p&gt;
&lt;p&gt;Thank you for the quick response. I currently program the dongle via nRF Connect v2.5.0 - Programmer(experimental)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I use the hex File that SES produced (ble_app_blinky_10059_s140.hex) and the precompiled S140 Softdevice Hex File (\nRF5_SDK_15.2.0_9412b96\components\softdevice\s140\hex\s140_nrf52_6.1.0_softdevice.hex)&lt;/p&gt;
&lt;p&gt;If I add your Code right after (or before) the INIT() functions the VDD OUT Pin Voltage remains at 3.3V (3.3V is weird, given that the gpio_outupt_voltage_setup(), called from the leds_init(), should set the VDD OUT to 3.0V)&lt;/p&gt;
&lt;p&gt;i tried the following additions / changes to your code, none of them had the effect i wished:&lt;/p&gt;
&lt;p&gt;- Add NVIC_SystemReset() below &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;pre class="ui-code" data-mode="text"&gt;while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;- Change the &lt;pre class="ui-code" data-mode="text"&gt;gpio_output_voltage_setup(void) &lt;/pre&gt;function to the 1V8&lt;/p&gt;
&lt;p&gt;- Changed 0xFFFFFFF8 to 0xFFFFFFF0 (as in the nrf52840_bitfields.h)&lt;/p&gt;
&lt;p&gt;I really have no clue what else could be wrong.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Nice weekend anyhow&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;Marcel&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153666?ContentTypeID=1</link><pubDate>Fri, 19 Oct 2018 13:45:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a26c1850-ee95-4fa3-84ae-c5c568a5d277</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;In your case, that translates into this code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;if (NRF_UICR-&amp;gt;REGOUT0 != 0xFFFFFFF8) 
{
	NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Wen &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;
	while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
	NRF_UICR-&amp;gt;REGOUT0 = 0xFFFFFFF8;
	NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Ren &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;
	while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to change VDD to 1.8V</title><link>https://devzone.nordicsemi.com/thread/153663?ContentTypeID=1</link><pubDate>Fri, 19 Oct 2018 13:36:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:57fd8a4e-0721-4863-ab00-2bd847e00a67</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;How do you program the application to the Dongle? The DFU process used by nRF Connect might not be able to write the data to the UICR registers. The at keywork in Keil will simply add these values to the given location in the HEX-file.&lt;/p&gt;
&lt;p&gt;I would recommend that you write the UICR registers from the application, as shown in &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/18257/how-to-write-data-to-uicr-customer-registers/70510#70510"&gt;this post&lt;/a&gt;. Remember to reset the device for the new UICR settings to take effect.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Jørgen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>