<?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 LPUART, I2C Issues when porting KL27 to KL17 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501878#M31429</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Using a FRDM-KL27Z developed LPUART and IIC driver driver code that works great. &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Using KEIL, MDK-Lite Version 5.18 with CMSIS version 4.3.0&lt;/LI&gt;&lt;LI&gt;Using SWD to program/debug.&lt;/LI&gt;&lt;LI&gt;Programming using the PE Micro Multilink Universal FX.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;However, our production intent target MCU is the KL17Z256. &lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Replaced the KL27Z64VLH4 on the FRDM-KL27Z with the KL17Z256LH4.&lt;/LI&gt;&lt;LI&gt;Created new uVision project specifying the KL17Z256 as the target.&lt;/LI&gt;&lt;LI&gt;Copied code changing only the headers.&lt;/LI&gt;&lt;/OL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Result is no working LPUART1 or I2C1 (currently the only modules tested).&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Stripped the code down to initializing the LPTMR and LPUART1.&lt;/LI&gt;&lt;LI&gt;Testing TX in a loop with scope probe.&lt;/LI&gt;&lt;LI&gt;LPTMR works fine.&lt;/LI&gt;&lt;LI&gt;TX is always LOW (no data transferred).&lt;/LI&gt;&lt;LI&gt;LPUART_STAT_TDRE is set, but no data is actually transferred.&lt;/LI&gt;&lt;LI&gt;This exact code (minus the device header and associated CMSIS ) works great.&lt;/LI&gt;&lt;LI&gt;Tested on (3) different KL17Z256LH4 same result.&lt;/LI&gt;&lt;LI&gt;(1) of the KL17Z256LH4 was on our own board never touching the FRDM-27Z.&lt;/LI&gt;&lt;LI&gt;Tried programming using PE Micro and CMSIS-DAP, same result.&lt;/LI&gt;&lt;LI&gt;GPIO toggling on the TX pins works fine.&lt;/LI&gt;&lt;LI&gt;Similar issue with I2C1 as well on KL17 (no data transferred) &lt;BR /&gt;SDA always HIGH, SCL does pull LOW but no CLOCK.&lt;/LI&gt;&lt;LI&gt;Tried different internal clock option (48MHz and 8MHz), currently do not have an external crystal.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Some thoughts on what could be missing?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I feel like maybe a missed register not properly set to default? &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Do not want to use Processor expert.&lt;/LI&gt;&lt;LI&gt;Prefer bare metal CMSIS code base.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// CODE USED (Works on KL27Z after replacing the device header)&lt;/P&gt;&lt;P&gt;#include "MKL17Z4.h"&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; // Device header&lt;/P&gt;&lt;P&gt;void LPTMR_init(void);&lt;/P&gt;&lt;P&gt;void LPTMR_delay(unsigned int length_ms);&lt;/P&gt;&lt;P&gt;int main()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Initialize the LPTMR&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR_init(); &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Clock Configuration&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C1 |= MCG_C1_CLKS(1);&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; // Internal reference clock IRC8M&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C2 |= MCG_C2_IRCS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Fast internal reference clock selected,8MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC&amp;nbsp; = 0x0;&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;&amp;nbsp; // FCRDIV = 8M/1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR_delay(10);&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1 |= SIM_CLKDIV1_OUTDIV1(0) |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Core clock 8M/1&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1_OUTDIV4(0);&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; // Bus clock 8M/1/1 &lt;/P&gt;&lt;P&gt;&amp;nbsp; SMC_PMPROT = SMC_PMPROT_AVLP_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Allow VLPR, VLPW and VLPS &lt;/P&gt;&lt;P&gt;&amp;nbsp; SMC_PMCTRL = SMC_PMCTRL_RUNM(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Normal run&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable Clock Gating on PORTC for LPUART1 TX &lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_PORTC_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set the MUX LPUART1 TX&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC-&amp;gt;PCR[4] = PORT_PCR_MUX(3); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set the clock source&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SOPT2 |= SIM_SOPT2_LPUART1SRC(1); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable LPUART Module&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_LPUART1_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Disable TX and RX while configuring&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL &amp;amp;= ~(LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Baud Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; // 9600 with 8 MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;BAUD = LPUART_BAUD_OSR(0x03)&lt;/P&gt;&lt;P&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; | LPUART_BAUD_SBR(0xD0)&lt;/P&gt;&lt;P&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; | LPUART_BAUD_BOTHEDGE_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Control Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL = 0; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Stat Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;STAT = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable TX and RX &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL |= LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait until space is available in the FIFO &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPUART1-&amp;gt;STAT &amp;amp; LPUART_STAT_TDRE_MASK));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send a test character&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPUART1-&amp;gt;DATA = 0xA5;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Delay 100ms&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPTMR_delay(100); &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void LPTMR_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Turn on clock gate for the LPTMR&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_LPTMR_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set up LPTMR to use 1kHz LPO with no prescaler as its clock source &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;PSR = LPTMR_PSR_PCS(1) | LPTMR_PSR_PBYP_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void LPTMR_delay(unsigned int length_ms)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Clear settings&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR = 0; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Compare value (ms) based on 1 kHz LPO&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CMR = length_ms;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Start the timer &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR |= LPTMR_CSR_TEN_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Wait for counter to reach compare value &lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(LPTMR0-&amp;gt;CSR &amp;amp; LPTMR_CSR_TCF_MASK)); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Disable counter and Clear Timer Compare Flag &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR &amp;amp;= ~LPTMR_CSR_TEN_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337530"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Apr 2016 16:07:18 GMT</pubDate>
    <dc:creator>rbowen</dc:creator>
    <dc:date>2016-04-13T16:07:18Z</dc:date>
    <item>
      <title>LPUART, I2C Issues when porting KL27 to KL17</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501878#M31429</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Using a FRDM-KL27Z developed LPUART and IIC driver driver code that works great. &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Using KEIL, MDK-Lite Version 5.18 with CMSIS version 4.3.0&lt;/LI&gt;&lt;LI&gt;Using SWD to program/debug.&lt;/LI&gt;&lt;LI&gt;Programming using the PE Micro Multilink Universal FX.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;However, our production intent target MCU is the KL17Z256. &lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Replaced the KL27Z64VLH4 on the FRDM-KL27Z with the KL17Z256LH4.&lt;/LI&gt;&lt;LI&gt;Created new uVision project specifying the KL17Z256 as the target.&lt;/LI&gt;&lt;LI&gt;Copied code changing only the headers.&lt;/LI&gt;&lt;/OL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Result is no working LPUART1 or I2C1 (currently the only modules tested).&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Stripped the code down to initializing the LPTMR and LPUART1.&lt;/LI&gt;&lt;LI&gt;Testing TX in a loop with scope probe.&lt;/LI&gt;&lt;LI&gt;LPTMR works fine.&lt;/LI&gt;&lt;LI&gt;TX is always LOW (no data transferred).&lt;/LI&gt;&lt;LI&gt;LPUART_STAT_TDRE is set, but no data is actually transferred.&lt;/LI&gt;&lt;LI&gt;This exact code (minus the device header and associated CMSIS ) works great.&lt;/LI&gt;&lt;LI&gt;Tested on (3) different KL17Z256LH4 same result.&lt;/LI&gt;&lt;LI&gt;(1) of the KL17Z256LH4 was on our own board never touching the FRDM-27Z.&lt;/LI&gt;&lt;LI&gt;Tried programming using PE Micro and CMSIS-DAP, same result.&lt;/LI&gt;&lt;LI&gt;GPIO toggling on the TX pins works fine.&lt;/LI&gt;&lt;LI&gt;Similar issue with I2C1 as well on KL17 (no data transferred) &lt;BR /&gt;SDA always HIGH, SCL does pull LOW but no CLOCK.&lt;/LI&gt;&lt;LI&gt;Tried different internal clock option (48MHz and 8MHz), currently do not have an external crystal.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Some thoughts on what could be missing?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I feel like maybe a missed register not properly set to default? &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Do not want to use Processor expert.&lt;/LI&gt;&lt;LI&gt;Prefer bare metal CMSIS code base.&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// CODE USED (Works on KL27Z after replacing the device header)&lt;/P&gt;&lt;P&gt;#include "MKL17Z4.h"&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; // Device header&lt;/P&gt;&lt;P&gt;void LPTMR_init(void);&lt;/P&gt;&lt;P&gt;void LPTMR_delay(unsigned int length_ms);&lt;/P&gt;&lt;P&gt;int main()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Initialize the LPTMR&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR_init(); &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Clock Configuration&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C1 |= MCG_C1_CLKS(1);&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; // Internal reference clock IRC8M&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C2 |= MCG_C2_IRCS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Fast internal reference clock selected,8MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC&amp;nbsp; = 0x0;&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;&amp;nbsp; // FCRDIV = 8M/1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR_delay(10);&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1 |= SIM_CLKDIV1_OUTDIV1(0) |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Core clock 8M/1&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1_OUTDIV4(0);&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; // Bus clock 8M/1/1 &lt;/P&gt;&lt;P&gt;&amp;nbsp; SMC_PMPROT = SMC_PMPROT_AVLP_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Allow VLPR, VLPW and VLPS &lt;/P&gt;&lt;P&gt;&amp;nbsp; SMC_PMCTRL = SMC_PMCTRL_RUNM(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Normal run&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable Clock Gating on PORTC for LPUART1 TX &lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_PORTC_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set the MUX LPUART1 TX&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC-&amp;gt;PCR[4] = PORT_PCR_MUX(3); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set the clock source&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SOPT2 |= SIM_SOPT2_LPUART1SRC(1); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable LPUART Module&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_LPUART1_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Disable TX and RX while configuring&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL &amp;amp;= ~(LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Baud Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; // 9600 with 8 MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;BAUD = LPUART_BAUD_OSR(0x03)&lt;/P&gt;&lt;P&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; | LPUART_BAUD_SBR(0xD0)&lt;/P&gt;&lt;P&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; | LPUART_BAUD_BOTHEDGE_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Control Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL = 0; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Stat Register Options&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;STAT = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable TX and RX &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPUART1-&amp;gt;CTRL |= LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait until space is available in the FIFO &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPUART1-&amp;gt;STAT &amp;amp; LPUART_STAT_TDRE_MASK));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send a test character&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPUART1-&amp;gt;DATA = 0xA5;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Delay 100ms&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPTMR_delay(100); &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void LPTMR_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Turn on clock gate for the LPTMR&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |= SIM_SCGC5_LPTMR_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Set up LPTMR to use 1kHz LPO with no prescaler as its clock source &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;PSR = LPTMR_PSR_PCS(1) | LPTMR_PSR_PBYP_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void LPTMR_delay(unsigned int length_ms)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Clear settings&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR = 0; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Compare value (ms) based on 1 kHz LPO&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CMR = length_ms;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Start the timer &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR |= LPTMR_CSR_TEN_MASK; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Wait for counter to reach compare value &lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(LPTMR0-&amp;gt;CSR &amp;amp; LPTMR_CSR_TCF_MASK)); &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Disable counter and Clear Timer Compare Flag &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPTMR0-&amp;gt;CSR &amp;amp;= ~LPTMR_CSR_TEN_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337530"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Apr 2016 16:07:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501878#M31429</guid>
      <dc:creator>rbowen</dc:creator>
      <dc:date>2016-04-13T16:07:18Z</dc:date>
    </item>
    <item>
      <title>Re: LPUART, I2C Issues when porting KL27 to KL17</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501879#M31430</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Correction to initial discussion&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;LPUART_STAT_TDRE is set initially, after writing to LPUART1 DATA, LPUART_STAT_TDRE is never set again.&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Apr 2016 16:46:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501879#M31430</guid>
      <dc:creator>rbowen</dc:creator>
      <dc:date>2016-04-13T16:46:21Z</dc:date>
    </item>
    <item>
      <title>Re: LPUART, I2C Issues when porting KL27 to KL17</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501880#M31431</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I2C on the KL27 is broken.&amp;nbsp; When a Repeated Start is issues the KL27 resends the slave address.&amp;nbsp; Some peripherals don't care and others fail to work correctly.&amp;nbsp; Freescale/NXP has yet to issue an errata about this.&amp;nbsp; Search the forum here for the details.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The KL27 also has a errata about the PIT timers not always starting up with a work around.&lt;/P&gt;&lt;P&gt;I'm not convinced the work around works reliably.&amp;nbsp; If you get a complex combination of DMA/DMAMUX/PIT/TPM1/LUART running the part locks up every few hours (PIT did not start up). :-(&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As to the KL17 vs KL27 check the header file against the datasheet.&amp;nbsp; I've been burned by bad header files in the past. &lt;BR /&gt;Has been as bad as using the same name for completely different function.&amp;nbsp; :-(&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Myself I've lost any faith that the KL27 family works correctly and switching to a KL26.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Apr 2016 17:03:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501880#M31431</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2016-04-13T17:03:17Z</dc:date>
    </item>
    <item>
      <title>Re: LPUART, I2C Issues when porting KL27 to KL17</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501881#M31432</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Issue Resolved.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Preformed register to register comparison in the debugger for KL17 to KL27.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the previous posted code, LPUART1 was selected to use the IRC48M clock. Thus, the following is required on the KL17 but was not on the KL27.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// Enable HIRC&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;MCG_MC = MCG_MC_HIRCEN_MASK; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Default register values appear to be different between KL17 and KL27!&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/bobpaddock"&gt;bobpaddock&lt;/A&gt;​ for the heads up on the I2C repeated starts. I also ran into that issue and saw the workarounds posted. I was able to get the repeated start to write the correct data to SDA by adding a few clock cycles after initiating the repeated start. I still have yet to confirm the work around on the KL17, next on list...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Apr 2016 12:59:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART-I2C-Issues-when-porting-KL27-to-KL17/m-p/501881#M31432</guid>
      <dc:creator>rbowen</dc:creator>
      <dc:date>2016-04-14T12:59:46Z</dc:date>
    </item>
  </channel>
</rss>

