<?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 SPI issue on KL26Z when reading L3GD20 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-issue-on-KL26Z-when-reading-L3GD20/m-p/408672#M22975</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, we're working with KL26Z and trying to read Gyro L3GD20 by SPI protocol. When configuring as spi0_init(); L3GD20_init(); and reading with spi_read(L3G_OUT); signal observed in MISO doesn't change (See image from SCLK: orange and MISO: blue). That's why we think maybe we're missing something as a flag from KL26Z. Maybe someone can give us a clue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Omar&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void spi0_init (void){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /*A comunicação SPI0 se dá pela PORTA C */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp; *CHIP SELECT (SPIO_PCS0) : PTC4&lt;/P&gt;&lt;P&gt;&amp;nbsp; *CLOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_SCK)&amp;nbsp; : PTC5&lt;/P&gt;&lt;P&gt;&amp;nbsp; *MOSI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_MOSI) : PTC6&lt;/P&gt;&lt;P&gt;&amp;nbsp; *MISO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_MISO) : PTC7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;&lt;/P&gt;&lt;P&gt;SIM_SCGC4 |= SIM_SCGC4_SPI0_MASK;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR4 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR5 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR6 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR7 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Inicialização da SPI em Master Mode 16-bit e FIFO = 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C1 |= (SPI_C1_MSTR_MASK | SPI_C1_SSOE_MASK );//Set SPI0 to Master &amp;amp; SS pin to auto SS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_BR |= (SPI_BR_SPPR(0x02) | SPI_BR_SPR(0x08));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set baud rate prescale divisor to 3 &amp;amp; set baud rate divisor to 64 for baud rate of 15625 hz&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable SPI0&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C2 |= (SPI_C2_MODFEN_MASK|SPI_C2_SPIMODE_MASK); //Master SS pin acts as slave select output&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C1 |= (SPI_C1_SPE_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 SPI module &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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void spi_write (unsigned char ADDR_REGISTER ,unsigned char DATA_REGISTER)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Fluxo : Envia o endereço do registrador; Envia o dado. &lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(SPI0_S &amp;amp; SPI_S_SPTEF_MASK));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_DH =&amp;nbsp; 0x00| ADDR_REGISTER; // RW\ = 0; MS\ = 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_DL =&amp;nbsp; DATA_REGISTER;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;char spi_read (unsigned char L3G_OUT){&lt;/P&gt;&lt;P&gt; /*&lt;/P&gt;&lt;P&gt; * Fluxo : Envia o endereço do registrador a ser lido; Lê o dado (é enviado para o buffer SPI0_DL). &lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(0x80|L3G_OUT&amp;nbsp; /*RW\ = 1 MS\ = 0*/,&amp;nbsp; 0xFF&amp;nbsp;&amp;nbsp; /*dado falso (ignorado)*/ );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(SPI0_S &amp;amp; SPI_S_SPRF_MASK));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return SPI0_DL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_S &amp;amp;= ~SPI_S_SPRF_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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void L3GD20_init (void){&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG1, 0x0F);&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG2, 0x00);&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG4, 0x30);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 31 Aug 2015 18:35:17 GMT</pubDate>
    <dc:creator>omarvallecasas</dc:creator>
    <dc:date>2015-08-31T18:35:17Z</dc:date>
    <item>
      <title>SPI issue on KL26Z when reading L3GD20</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-issue-on-KL26Z-when-reading-L3GD20/m-p/408672#M22975</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, we're working with KL26Z and trying to read Gyro L3GD20 by SPI protocol. When configuring as spi0_init(); L3GD20_init(); and reading with spi_read(L3G_OUT); signal observed in MISO doesn't change (See image from SCLK: orange and MISO: blue). That's why we think maybe we're missing something as a flag from KL26Z. Maybe someone can give us a clue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Omar&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void spi0_init (void){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /*A comunicação SPI0 se dá pela PORTA C */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp; *CHIP SELECT (SPIO_PCS0) : PTC4&lt;/P&gt;&lt;P&gt;&amp;nbsp; *CLOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_SCK)&amp;nbsp; : PTC5&lt;/P&gt;&lt;P&gt;&amp;nbsp; *MOSI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_MOSI) : PTC6&lt;/P&gt;&lt;P&gt;&amp;nbsp; *MISO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPI0_MISO) : PTC7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;&lt;/P&gt;&lt;P&gt;SIM_SCGC4 |= SIM_SCGC4_SPI0_MASK;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR4 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR5 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR6 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTC_PCR7 |= PORT_PCR_MUX(0x2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Inicialização da SPI em Master Mode 16-bit e FIFO = 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C1 |= (SPI_C1_MSTR_MASK | SPI_C1_SSOE_MASK );//Set SPI0 to Master &amp;amp; SS pin to auto SS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_BR |= (SPI_BR_SPPR(0x02) | SPI_BR_SPR(0x08));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set baud rate prescale divisor to 3 &amp;amp; set baud rate divisor to 64 for baud rate of 15625 hz&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable SPI0&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C2 |= (SPI_C2_MODFEN_MASK|SPI_C2_SPIMODE_MASK); //Master SS pin acts as slave select output&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_C1 |= (SPI_C1_SPE_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 SPI module &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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void spi_write (unsigned char ADDR_REGISTER ,unsigned char DATA_REGISTER)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Fluxo : Envia o endereço do registrador; Envia o dado. &lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(SPI0_S &amp;amp; SPI_S_SPTEF_MASK));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_DH =&amp;nbsp; 0x00| ADDR_REGISTER; // RW\ = 0; MS\ = 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_DL =&amp;nbsp; DATA_REGISTER;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;char spi_read (unsigned char L3G_OUT){&lt;/P&gt;&lt;P&gt; /*&lt;/P&gt;&lt;P&gt; * Fluxo : Envia o endereço do registrador a ser lido; Lê o dado (é enviado para o buffer SPI0_DL). &lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(0x80|L3G_OUT&amp;nbsp; /*RW\ = 1 MS\ = 0*/,&amp;nbsp; 0xFF&amp;nbsp;&amp;nbsp; /*dado falso (ignorado)*/ );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (!(SPI0_S &amp;amp; SPI_S_SPRF_MASK));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return SPI0_DL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SPI0_S &amp;amp;= ~SPI_S_SPRF_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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void L3GD20_init (void){&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG1, 0x0F);&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG2, 0x00);&lt;/P&gt;&lt;P&gt;&amp;nbsp; spi_write(L3GX_CTRL_REG4, 0x30);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 31 Aug 2015 18:35:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-issue-on-KL26Z-when-reading-L3GD20/m-p/408672#M22975</guid>
      <dc:creator>omarvallecasas</dc:creator>
      <dc:date>2015-08-31T18:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: SPI issue on KL26Z when reading L3GD20</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-issue-on-KL26Z-when-reading-L3GD20/m-p/408673#M22976</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would recommend to refer attached KL25 SPI example code.&lt;/P&gt;&lt;P&gt;KL26 is using the same SPI module with KL25.&lt;/P&gt;&lt;P&gt;Wish it helps.&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>Wed, 02 Sep 2015 05:17:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SPI-issue-on-KL26Z-when-reading-L3GD20/m-p/408673#M22976</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2015-09-02T05:17:50Z</dc:date>
    </item>
  </channel>
</rss>

