<?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>Kinetis Microcontrollers中的主题 Re: easiest way to implement lpuart rx code frdm-kl27</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820142#M49636</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Victor, but in this system this is the receive board to the FRDM-KL27 that transmits. All code done in KDS with PEx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mike&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Oct 2018 01:34:33 GMT</pubDate>
    <dc:creator>mikemitchell</dc:creator>
    <dc:date>2018-10-04T01:34:33Z</dc:date>
    <item>
      <title>easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820139#M49633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;simple way to set up lpuart rx receiver for kl27 frdm-kl27&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Oct 2018 14:22:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820139#M49633</guid>
      <dc:creator>mikemitchell</dc:creator>
      <dc:date>2018-10-03T14:22:52Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820140#M49634</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mike&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I expect there will be an example in the MCUXpressor configurator for your board.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Otherwise you can get a LPUART driver for the KL27 from the free open source uTasker project on Github (which is then compatible with all LPUART and UARTs in all Kinetis parts, so needs no porting in the future if you use different chips).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For professional use try the supported uTasker version that includes industrial proven LPUARTs in interrupt and DMA (also for free running reception), along with Modbus ASCII/RTU on any one, plus multiple USB&amp;lt;-&amp;gt;LPUART bridges. Either native operation or FreeRTOS project operation out-of-the-box.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Both support KL27 simulation (including of UARTs in interrupt or DMA mode) for faster project development or analysis of internal workings.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Kinetis: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;BR /&gt;Kinetis KL25, KL26, KL27, KL28, KL82, KL43, KL46&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fhttp%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL25Z.html" rel="nofollow" target="_blank"&gt;http://http://www.utasker.com/kinetis/FRDM-KL25Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTWR-KL25Z48M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-KL25Z48M.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL26Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL26Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTEENSY_LC.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TEENSY_LC.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL27Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL27Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FCapuccino-KL27.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/Capuccino-KL27.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL28Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL28Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL82Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL82Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL43Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL43Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTWR-KL43Z48M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-KL43Z48M.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL46Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL46Z.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTWR-KL46Z48M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-KL46Z48M.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For less questions and faster, cheaper developments: try uTasker for Kinetis&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Oct 2018 16:30:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820140#M49634</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2018-10-03T16:30:51Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820141#M49635</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mike,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can download the MCUXpresso SDK for the FRDM-KL27.&amp;nbsp;The MCUXpresso SDK is a comprehensive software enablement package designed to simplify and accelerate application development with NXP’s LPC and Kinetis microcontrollers and i.MX RT crossover processors based on Arm Cortex-M cores. The MCUXpresso SDK includes production-grade software with integrated RTOS (optional), integrated stacks and middleware, reference software, and more.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Within the SDK you will find the drivers for the lpuart&amp;nbsp;along with examples that show how to implement these drivers.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/73750iC7E2053951E6FA86/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps!&lt;/P&gt;&lt;P&gt;Victor.&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Oct 2018 18:11:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820141#M49635</guid>
      <dc:creator>victorjimenez</dc:creator>
      <dc:date>2018-10-03T18:11:28Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820142#M49636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Victor, but in this system this is the receive board to the FRDM-KL27 that transmits. All code done in KDS with PEx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mike&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Oct 2018 01:34:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820142#M49636</guid>
      <dc:creator>mikemitchell</dc:creator>
      <dc:date>2018-10-04T01:34:33Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820143#M49637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mike,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I recommend you to migrate to our newest software (MCUXpresso SDK) and IDE (MUCUXpresso IDE) that are fully supported and continuously upgrade. Within the SDK you will find examples of both UART and LPUART peripherals. You can use these examples to see the easiest way to set up LPUART Rx.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Victor.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Oct 2018 20:36:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820143#M49637</guid>
      <dc:creator>victorjimenez</dc:creator>
      <dc:date>2018-10-17T20:36:17Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820144#M49638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Victor,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I didn’t realize I was posting question, I thought I was searching the forum til I hit enter. I am a newbie to using C and the project I am working on is an extension of an existing product at work which has all been developed with KDS, therefore I am stuck with it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried loading the lpuart driver examples, but was unable to use Processor Expert with them and unable to find my way through it without. I was looking for example code that would allow me to tailor to my application.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Currently it looks like it is set up in PEx but when it doesn’t work I am not sure where to go with it.  I have 2 FRDM-KL27 boards and have successfully created a Tx driver with modulated output, now trying to set up Rx board to decode the characters I am sending with Tx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you know of an easy route to achieving this I’d greatly appreciate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your time,&lt;/P&gt;&lt;P&gt;Mike Mitchell&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2018 12:25:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820144#M49638</guid>
      <dc:creator>mikemitchell</dc:creator>
      <dc:date>2018-10-18T12:25:24Z</dc:date>
    </item>
    <item>
      <title>Re: easiest way to implement lpuart rx code frdm-kl27</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820145#M49639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mike&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Give it a few days and if you don't have success with modifying the MCUXpresso examples contact me for access to the uTasker project. I can do this with the following code on the FRDM-KL27Z (in KDS):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;QUEUE_HANDLE newSerialID&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
PWM_INTERRUPT_SETUP pwm_setup&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;char&lt;/SPAN&gt; ucInputBuffer&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;128&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
QUEUE_TRANSFER inputLength&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Configure and open LPUART&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
TTYTABLE tInterfaceParameters&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// table for passing information to driver&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Channel &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// set UPUART channel for serial use&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;ucSpeed &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; SERIAL_BAUD_115200&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;SPAN class="comment token"&gt;// baud rate&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Config &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CHAR_8 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; NO_PARITY &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; ONE_STOP &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; USE_XON_OFF &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; CHAR_MODE &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; UART_INVERT_TX&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Rx_tx_sizes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;RxQueueSize &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;64&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;SPAN class="comment token"&gt;// input buffer size&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Rx_tx_sizes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;TxQueueSize &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;512&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;SPAN class="comment token"&gt;// output buffer size&lt;/SPAN&gt;
tInterfaceParameters&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Task_to_wake &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; OWN_TASK&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// wake self when messages have been received&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//tInterfaceParameters.ucDMAConfig = UART_TX_DMA;&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;&amp;nbsp; // enable to run in DMA mode rather than interupt driven mode&lt;/SPAN&gt;
SerialID &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;fnOpen&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;TYPE_TTY&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; FOR_I_O&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ptrInterfaceParameters&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// open the channel with defined configurations (initially inactive)&lt;/SPAN&gt;
&lt;SPAN class="token function"&gt;fnDriver&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SerialID&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;TX_ON &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; RX_ON&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// enable rx and tx&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Configure a 1MHz PWM signal on the LPUART0 Tx output&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;int_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; PWM_INTERRUPT&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_mode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;PWM_SYS_CLK &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; PWM_PRESCALER_16 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; PWM_EDGE_ALIGNED&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// clock PWM timer from the system clock with /16 pre-scaler&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;int_handler &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// no user interrupt call-back on PWM cycle&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_frequency &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;PWM_FREQUENCY&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1000000&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;16&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// generate 1MHz on PWM output&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_reference &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;_TIMER_2 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// use TPM2 channel 0&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_mode &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;PWM_OPTION_MODULATE_LPUART0&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;SPAN class="comment token"&gt;// modulate LPUART0 output with the PWM signal (possible on TPM1-CH0 or TPM2-CH0)&lt;/SPAN&gt;
pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_value &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_PWM_TENTH_PERCENT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;706&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; pwm_setup&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;pwm_frequency&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// 70.6% PWM (low/high) on different channel&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Send a message&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&lt;SPAN class="token function"&gt;fnWrite&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SerialID&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Hello, World!!"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;14&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Receive messages and echo them back&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;inputLength &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;fnRead&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SerialID&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ucInputBuffer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ucInputBuffer&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// while there is reception&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;fnWrite&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SerialID&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ucInputBuffer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; inputLength&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&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;&amp;nbsp; &lt;SPAN class="comment token"&gt;// echo reception back&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This configures the LPUART (change the channel to 1 to 2 for LPUART1 or UART2 instead of LPUART0) with the specified settings. Note that I invert the LPUART output for modulation mode (option). To use DMA the optional UART_TX_DMA is set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then a TPM is configured to modulate the LPUART Tx at 1MHz (70%) - TPM2 channel 0. The frequency, mark-space-ratio or other TPM/channels can be configured by changing the values (or other LPUARTs modulated).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then I show sending data out, plus receiving data (and echoing it back).&lt;/P&gt;&lt;P&gt;That is all that is needed so I don't think that it can be done much simpler (with this flexibility).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also attach a FRDM-KL27Z binary that shows this in operation on LPUART0 (the one connected to the VCOM). If you type something in it will echo it (and the modulated signal can be measured on J26). In addition I put a USB-CDC interface on the USB with a command line menu to allow debugging and various other monitoring/tests. In the uTasker project adding the USB-CDC command line interface costs just three lines of code effort for the programmer:&lt;BR /&gt;&lt;STRONG&gt;#define USB_INTERFACE&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;#define USB_DEVICE_SUPPORT&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;#define USE_USB_CDC&lt;/STRONG&gt;&lt;BR /&gt;(and optionally #define USB_CDC_COUNT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 [1..6 possible] for multiple USB-CDC connections at the same time).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A further advantage is that if you want to do the same thing on other Kinetis parts or boards you don't need to set up different projects and use different libraries and interfaces - you can just select the board (eg. &lt;STRONG&gt;FRDM_K64F&lt;/STRONG&gt; instead of &lt;STRONG&gt;FRDM_KL27Z&lt;/STRONG&gt;) and it already works there instead.&lt;BR /&gt;I don't think it can be much simpler than this....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Oct 2018 01:01:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/easiest-way-to-implement-lpuart-rx-code-frdm-kl27/m-p/820145#M49639</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2018-10-19T01:01:38Z</dc:date>
    </item>
  </channel>
</rss>

