<?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 Beekit Kinetis uart.c error in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428705#M24754</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've been writing a function for a MK21D256 project that uses uart1 (or uart2) in two different baudrate/parity configurations.&lt;/P&gt;&lt;P&gt;The uart is initially configured at 38400/noparity, then later switches to 9600/evenparity. All good so far.&lt;/P&gt;&lt;P&gt;Then I switch back to 38400/noparity, but the baud rate is set incorrectly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The error lies in function &lt;/P&gt;&lt;P&gt;UartErr_t UartSetConfig( &lt;SPAN style="line-height: 1.5;"&gt;uint8_t UartNumber,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="line-height: 1.5;"&gt;UartConfig_t* pConfig );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;in the section that calculates and sets uartregs-&amp;gt;BDH and uartregs-&amp;gt;BDL.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;Here is the fix.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#if (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH = (uint8_t)((mUartSBR &amp;gt;&amp;gt; 8) &amp;amp; gUART_BDH_MASK_c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this code works&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDL = (uint8_t) (mUartSBR &amp;amp; gUART_BDL_MASK_c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //---------------------&lt;/P&gt;&lt;P&gt;#else // (1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // when BDH is written the value is buffered and only applied when BDL is written&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the two writes to BDH here mess that requirement up ie the 0x00 does not get written, so the previous value is not zeroed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH |= (uint8_t)((mUartSBR &amp;gt;&amp;gt; 8) &amp;amp; gUART_BDH_MASK_c);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDL = (uint8_t) (mUartSBR &amp;amp; gUART_BDL_MASK_c);&lt;/P&gt;&lt;P&gt;#endif // (1)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That took quite a while to find - i.e. I assumed that the Freescale code was sacrosanct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 May 2015 13:50:08 GMT</pubDate>
    <dc:creator>john5</dc:creator>
    <dc:date>2015-05-13T13:50:08Z</dc:date>
    <item>
      <title>Beekit Kinetis uart.c error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428705#M24754</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've been writing a function for a MK21D256 project that uses uart1 (or uart2) in two different baudrate/parity configurations.&lt;/P&gt;&lt;P&gt;The uart is initially configured at 38400/noparity, then later switches to 9600/evenparity. All good so far.&lt;/P&gt;&lt;P&gt;Then I switch back to 38400/noparity, but the baud rate is set incorrectly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The error lies in function &lt;/P&gt;&lt;P&gt;UartErr_t UartSetConfig( &lt;SPAN style="line-height: 1.5;"&gt;uint8_t UartNumber,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="line-height: 1.5;"&gt;UartConfig_t* pConfig );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;in the section that calculates and sets uartregs-&amp;gt;BDH and uartregs-&amp;gt;BDL.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;Here is the fix.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#if (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH = (uint8_t)((mUartSBR &amp;gt;&amp;gt; 8) &amp;amp; gUART_BDH_MASK_c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this code works&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDL = (uint8_t) (mUartSBR &amp;amp; gUART_BDL_MASK_c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //---------------------&lt;/P&gt;&lt;P&gt;#else // (1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // when BDH is written the value is buffered and only applied when BDL is written&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the two writes to BDH here mess that requirement up ie the 0x00 does not get written, so the previous value is not zeroed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDH |= (uint8_t)((mUartSBR &amp;gt;&amp;gt; 8) &amp;amp; gUART_BDH_MASK_c);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mUartModule[UartNumber].UartRegs-&amp;gt;BDL = (uint8_t) (mUartSBR &amp;amp; gUART_BDL_MASK_c);&lt;/P&gt;&lt;P&gt;#endif // (1)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That took quite a while to find - i.e. I assumed that the Freescale code was sacrosanct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 May 2015 13:50:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428705#M24754</guid>
      <dc:creator>john5</dc:creator>
      <dc:date>2015-05-13T13:50:08Z</dc:date>
    </item>
    <item>
      <title>Re: Beekit Kinetis uart.c error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428706#M24755</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi John,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The original code without clear the previous value and just add the register bits, which cause the issue.&lt;/P&gt;&lt;P&gt;I will forward this info to related team. Thank you for the info.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 May 2015 03:29:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428706#M24755</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2015-05-14T03:29:06Z</dc:date>
    </item>
    <item>
      <title>Re: Beekit Kinetis uart.c error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428707#M24756</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hui Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, have discovered an error in uart.h relating to using 8 bit data, with parity. The error was discovered in 3.0.1 and is still in projects generated using 3.0,2 :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    /* Data bits mask */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    #define gUART_DATA_BITS_BIT_c               (0x8u)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That should be&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    /* Data bits mask */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    #define gUART_DATA_BITS_BIT_c               (0x10u)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thats the UARTX_C1.M bit setting, It currently incorrectly sets the UARTX_C1.WAKE bit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 02:05:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Beekit-Kinetis-uart-c-error/m-p/428707#M24756</guid>
      <dc:creator>john5</dc:creator>
      <dc:date>2015-05-15T02:05:05Z</dc:date>
    </item>
  </channel>
</rss>

