<?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>nRF51 Dongle to Taiyo Yuden EBAGJNZXX eval board</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/45751/nrf51-dongle-to-taiyo-yuden-ebagjnzxx-eval-board</link><description>I have a working/functioning project running on the nRF51 dongle that I want to develop for production. To save a step in FCC certification I am developing on an FCC approved module from Taiyo Yuden, EBAGJNZXX. 
 The dongle has a 16MHz crystal and the</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 08 Apr 2019 08:09:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/45751/nrf51-dongle-to-taiyo-yuden-ebagjnzxx-eval-board" /><item><title>RE: nRF51 Dongle to Taiyo Yuden EBAGJNZXX eval board</title><link>https://devzone.nordicsemi.com/thread/180656?ContentTypeID=1</link><pubDate>Mon, 08 Apr 2019 08:09:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e0ad67e0-ddaa-4929-94e5-75ab8797d135</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PAN #78 workaround should be implemented where you are calling nvic_systemreset/sd_nvic_systemreset in your code. E.g., in the app_error_handler and when your reset into DFU mode if you have implemented DFU support.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Yes,&amp;nbsp;&lt;span&gt;__SYSTEM_CLOCK&amp;nbsp; must be 16, so you should revert the change you made earlier. Also, setting&amp;nbsp;CLOCK_CONFIG_XTAL_FREQ&amp;nbsp; to &amp;#39;0&amp;#39; is not required since UICR.XTALFREQ&amp;nbsp;changes the reset value for CLOCK.XTALFREQ to 32 Mhz.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF51 Dongle to Taiyo Yuden EBAGJNZXX eval board</title><link>https://devzone.nordicsemi.com/thread/180593?ContentTypeID=1</link><pubDate>Sat, 06 Apr 2019 13:30:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c4220ac1-be44-431b-a7a2-3b5165fc8503</guid><dc:creator>william-krs</dc:creator><description>&lt;p&gt;Hi Vidar,&lt;/p&gt;
&lt;p&gt;I had addeded the UICR.XTALFREQ register update to system_nrf51.c, I also added PAN #78 code to system_nrf51.c after the UICR.XTALFREQ, is this the correct implementation of PAN #78 as it doesn&amp;#39;t state where to put it? see below:&lt;/p&gt;
&lt;p&gt;void SystemInit(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If desired, switch off the unused RAM to lower consumption by the use of RAMON register.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It can also be done in the application main() function. */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Prepare the peripherals for use as indicated by the PAN 26 &amp;quot;System: Manual setup is required&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to enable the use of peripherals&amp;quot; found at Product Anomaly document for your device found at&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="https://www.nordicsemi.com/"&gt;https://www.nordicsemi.com/&lt;/a&gt;. The side effect of executing these instructions in the devices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; that do not need it is that the new peripherals in the second generation devices (LPCOMP for&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; example) will not be available. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // added WILLY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (*(uint32_t *)0x10001008 == 0xFFFFFFFF) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Wen &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(uint32_t *)0x10001008 = 0xFFFFFF00;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_NVMC-&amp;gt;CONFIG = NVMC_CONFIG_WEN_Ren &amp;lt;&amp;lt; NVMC_CONFIG_WEN_Pos; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (NRF_NVMC-&amp;gt;READY == NVMC_READY_READY_Busy){}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SystemReset();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (true){} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_CLOCK-&amp;gt;TASKS_HFCLKSTOP = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (NRF_CLOCK-&amp;gt;HFCLKSTAT &amp;amp; (CLOCK_HFCLKSTAT_SRC_Xtal &amp;lt;&amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOCK_HFCLKSTAT_SRC_Pos));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SystemReset();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_manual_peripheral_setup_needed())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(uint32_t volatile *)0x40000504 = 0xC007FFDF;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(uint32_t volatile *)0x40006C18 = 0x00008000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable PROTENSET registers under debug, as indicated by PAN 59 &amp;quot;MPU: Reset value of DISABLEINDEBUG&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; register is incorrect&amp;quot; found at Product Anomaly document for your device found at&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="https://www.nordicsemi.com/"&gt;https://www.nordicsemi.com/&lt;/a&gt;. There is no side effect of using these instruction if not needed. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_disabled_in_debug_needed())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_MPU-&amp;gt;DISABLEINDEBUG = MPU_DISABLEINDEBUG_DISABLEINDEBUG_Disabled &amp;lt;&amp;lt; MPU_DISABLEINDEBUG_DISABLEINDEBUG_Pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Execute the following code to eliminate excessive current in sleep mode with RAM retention in nRF51802 devices,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as indicated by PAN 76 &amp;quot;System: Excessive current in sleep mode with retention&amp;quot; found at Product Anomaly document&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for your device found at &lt;a href="https://www.nordicsemi.com/"&gt;https://www.nordicsemi.com/&lt;/a&gt;. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_peripheral_domain_setup_needed()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (*(uint32_t volatile *)0x4006EC00 != 1){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(uint32_t volatile *)0x4006EC00 = 0x9375;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (*(uint32_t volatile *)0x4006EC00 != 1){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(uint32_t volatile *)0x4006EC14 = 0xC0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also from your comments does that mean that setting the __SYSTEM_CLOCK to 32MHz was incorrect, and that CLOCK_CONFIG_XTAL_FREQ 0 was also not required?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks for your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF51 Dongle to Taiyo Yuden EBAGJNZXX eval board</title><link>https://devzone.nordicsemi.com/thread/180427?ContentTypeID=1</link><pubDate>Fri, 05 Apr 2019 07:55:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b7a9603d-90b9-4675-9f38-c4261f9c516e</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The 32MHz clock signal is divided by two internally on the chip. In other words, the system clock&amp;nbsp;will always be 16 MHz (&lt;span&gt;__SYSTEM_CLOCK)&lt;/span&gt;.&amp;nbsp; However, for the clock source to be divided by two you need to set the non-volatile UICR.XTALFREQ register to 0x00 (see chapter 8 of the nRF51 RM).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s also important that you implement the&amp;nbsp;workaround for PAN #78 (&lt;a href="https://www.nordicsemi.com/-/media/DocLib/Other/Errata/nRF51822panv33.pdf?la=en"&gt;link&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>