<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Unable to change VBAT0 OSCCTLA/OSCCTLB registers in MCX Microcontrollers</title>
    <link>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2012790#M2171</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;SPAN&gt;XiangJun Rong,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I do call&amp;nbsp;CLOCK_SetupOsc32KClocking() to init the OSC32K, then run-time I need to call&amp;nbsp;VBAT_SetOscConfig() to config the&amp;nbsp;Crystal Load Capacitance.&lt;/P&gt;&lt;P&gt;CLOCK_SetupOsc32KClocking() locks OSCCTLA/OSCCTLB registers after its writing, without any previous unlock.&amp;nbsp;VBAT_SetOscConfig() does not unlock/lock those registers.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think&amp;nbsp;CLOCK_SetupOsc32KClocking() works only because OSCCTLA/OSCTLB start unlocked after the reset. The same for the&amp;nbsp;CLOCK_SetupClk16KClocking() function.&lt;/P&gt;&lt;P&gt;So, after the very first OSCCTLA/OSCCTLB registers lock, how to unlock them for a changing?&lt;/P&gt;&lt;P&gt;Is it right to do the following unlock sequence prior any registers write access?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;/* Unlock */
VBAT0-&amp;gt;OSCLCKA &amp;amp;= ~VBAT_OSCLCKA_LOCK_MASK;
VBAT0-&amp;gt;OSCLCKB |= VBAT_OSCLCKB_LOCK_MASK;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After my registers writing, should I check STATUSA[CONFIG_DET] flag for any VBAT configuration error?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 12 Dec 2024 10:25:32 GMT</pubDate>
    <dc:creator>Vagni</dc:creator>
    <dc:date>2024-12-12T10:25:32Z</dc:date>
    <item>
      <title>Unable to change VBAT0 OSCCTLA/OSCCTLB registers</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2009505#M2135</link>
      <description>&lt;P&gt;On the MCXN547 MCU I need to change run-time and enable the internal capacitor banks on the EXTAL and XTAL pins for tuning the&amp;nbsp;OSC32kHz. But writing to VBAT0 OSCCTLA/OSCCTLB registers seems to not work: I get the same initial value when I read out the registers after writing a new value.&lt;/P&gt;&lt;P&gt;I tried to use the SDK&amp;nbsp;VBAT_SetOscConfig() driver function, but I get the OSCCTLA/OSCCTLB registers unchanged.&lt;/P&gt;&lt;P&gt;Then I tried my own writing sequence:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;/* unlock the OSC32K registers */
VBAT0-&amp;gt;OSCLCKA &amp;amp;= ~VBAT_OSCLCKA_LOCK_MASK;
VBAT0-&amp;gt;OSCLCKB |= VBAT_OSCLCKB_LOCK_MASK;

/* tmp32 is previously set with the new register value */
VBAT0-&amp;gt;OSCCTLA =    tmp32 &amp;amp; 0x000FFFFFUL;
VBAT0-&amp;gt;OSCCTLB = (~tmp32) &amp;amp; 0x000FFFFFUL;

/* Wait for STATUSA[OSC_RDY] to set. */
while ((VBAT0-&amp;gt;STATUSA &amp;amp; VBAT_STATUSA_OSC_RDY_MASK) == 0U)
{
}

/* lock the OSC32K registers */
VBAT0-&amp;gt;OSCLCKA |= VBAT_OSCLCKA_LOCK_MASK;
VBAT0-&amp;gt;OSCLCKB &amp;amp;= ~VBAT_OSCLCKB_LOCK_MASK; &lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code is executed without errors, OSC32K keeps running, but again I&amp;nbsp;get the OSCCTLA/OSCCTLB registers unchanged.&lt;/P&gt;&lt;P&gt;What is the right sequence to change OSCCTLA/OSCCTLB registers?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 07 Dec 2024 16:21:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2009505#M2135</guid>
      <dc:creator>Vagni</dc:creator>
      <dc:date>2024-12-07T16:21:16Z</dc:date>
    </item>
    <item>
      <title>Re: Unable to change VBAT0 OSCCTLA/OSCCTLB registers</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2009959#M2140</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;Pls refer to the section&lt;/P&gt;
&lt;DIV style="background-color: #ffffff; padding: 0px 0px 0px 2px;"&gt;
&lt;DIV style="color: #000000; background-color: #ffffff; font-family: 'Consolas'; font-size: 10pt; white-space: pre;"&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/**&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; * @brief Initialize the OSC 32K.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; * @&lt;/SPAN&gt;&lt;SPAN&gt;param&lt;/SPAN&gt;&lt;SPAN&gt; id : OSC 32 kHz output clock to specified modules&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; * @return returns success or fail status.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;status_t&lt;/SPAN&gt; &lt;SPAN&gt;CLOCK_SetupOsc32KClocking&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;&lt;SPAN&gt; id)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* Enable LDO */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; SCG0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;LDOCSR&lt;/SPAN&gt;&lt;SPAN&gt; |= SCG_LDOCSR_LDOEN_MASK | SCG_LDOCSR_VOUT_OK_MASK;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCCTLA&lt;/SPAN&gt;&lt;SPAN&gt; =&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; (VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCCTLA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp; ~(VBAT_OSCCTLA_MODE_EN_MASK | VBAT_OSCCTLA_CAP_SEL_EN_MASK | VBAT_OSCCTLA_OSC_EN_MASK)) |&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT_OSCCTLA_MODE_EN(0x2) | VBAT_OSCCTLA_OSC_EN_MASK | VBAT_OSCCTLA_OSC_EN_MASK;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCCTLB&lt;/SPAN&gt;&lt;SPAN&gt; = VBAT_OSCCTLB_INVERSE(0xDFF7E);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* Wait for STATUSA[OSC_RDY] to set. */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; ((VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;STATUSA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp; VBAT_STATUSA_OSC_RDY_MASK) == 0U)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCLCKA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;VBAT_OSCLCKA_LOCK_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCLCKB&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;= ~&lt;/SPAN&gt;&lt;SPAN&gt;VBAT_OSCLCKA_LOCK_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; VBAT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OSCCLKE&lt;/SPAN&gt;&lt;SPAN&gt; |= VBAT_OSCCLKE_CLKE(id);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* De-initializes the SCG ROSC */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; SCG0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ROSCCSR&lt;/SPAN&gt;&lt;SPAN&gt; = SCG_ROSCCSR_ROSCERR_MASK;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* Unlock ROSCCSR */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; SCG0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ROSCCSR&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;= ~SCG_ROSCCSR_LK_MASK;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* Enable SOSC clock monitor and Enable ROSC */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; SCG0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ROSCCSR&lt;/SPAN&gt;&lt;SPAN&gt; |= SCG_ROSCCSR_ROSCCM_MASK;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;/* Wait for ROSC clock to be valid. */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; ((SCG0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ROSCCSR&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp; SCG_ROSCCSR_ROSCVLD_MASK) == 0U)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt; s_Xtal32_Freq = 32768U;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;kStatus_Success&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0;"&gt;Hope it can help you&lt;/P&gt;
&lt;P style="margin: 0;"&gt;BR&lt;/P&gt;
&lt;P style="margin: 0;"&gt;XiangJun Rong&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 09 Dec 2024 09:28:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2009959#M2140</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2024-12-09T09:28:17Z</dc:date>
    </item>
    <item>
      <title>Re: Unable to change VBAT0 OSCCTLA/OSCCTLB registers</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2012790#M2171</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;SPAN&gt;XiangJun Rong,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I do call&amp;nbsp;CLOCK_SetupOsc32KClocking() to init the OSC32K, then run-time I need to call&amp;nbsp;VBAT_SetOscConfig() to config the&amp;nbsp;Crystal Load Capacitance.&lt;/P&gt;&lt;P&gt;CLOCK_SetupOsc32KClocking() locks OSCCTLA/OSCCTLB registers after its writing, without any previous unlock.&amp;nbsp;VBAT_SetOscConfig() does not unlock/lock those registers.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think&amp;nbsp;CLOCK_SetupOsc32KClocking() works only because OSCCTLA/OSCTLB start unlocked after the reset. The same for the&amp;nbsp;CLOCK_SetupClk16KClocking() function.&lt;/P&gt;&lt;P&gt;So, after the very first OSCCTLA/OSCCTLB registers lock, how to unlock them for a changing?&lt;/P&gt;&lt;P&gt;Is it right to do the following unlock sequence prior any registers write access?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;/* Unlock */
VBAT0-&amp;gt;OSCLCKA &amp;amp;= ~VBAT_OSCLCKA_LOCK_MASK;
VBAT0-&amp;gt;OSCLCKB |= VBAT_OSCLCKB_LOCK_MASK;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After my registers writing, should I check STATUSA[CONFIG_DET] flag for any VBAT configuration error?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2024 10:25:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2012790#M2171</guid>
      <dc:creator>Vagni</dc:creator>
      <dc:date>2024-12-12T10:25:32Z</dc:date>
    </item>
    <item>
      <title>Re: Unable to change VBAT0 OSCCTLA/OSCCTLB registers</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2012918#M2173</link>
      <description>&lt;P&gt;From the MCXN Reference Manual&amp;nbsp; I see VBAT registers &lt;U&gt;can be locked until the next power-on reset (POR)&lt;/U&gt;. Only after a POR the VBAT registers are unlocked. If the VBAT registers are locked, they cannot be unlocked writing the LOCK bit in the xxxLCKA/xxxLCKB registers.&lt;/P&gt;&lt;P&gt;You can write&amp;nbsp;the LOCK bit in the xxxLCKA/xxxLCKB registers only for locking.&lt;/P&gt;&lt;P&gt;The SDK VBAT driver functions lock the VBAT registers, so the VBAT registers cannot be changed&amp;nbsp;afterwards.&lt;/P&gt;&lt;P&gt;Then, I remarked the OSCCTLA/OSCCTLB registers locking in the CLOCK_SetupOsc32KClocking()&amp;nbsp; function and now every call to&amp;nbsp;&lt;SPAN&gt;VBAT_SetOscConfig() can successfully change the&amp;nbsp;Crystal Load Capacitance.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2024 13:49:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/Unable-to-change-VBAT0-OSCCTLA-OSCCTLB-registers/m-p/2012918#M2173</guid>
      <dc:creator>Vagni</dc:creator>
      <dc:date>2024-12-12T13:49:43Z</dc:date>
    </item>
  </channel>
</rss>

