<?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: I2S Microphone and K22F in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366892#M18917</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Eduardo,&lt;/P&gt;&lt;P&gt;has your issue fixed yet? If not, can you use interrupt mechanism to read the I2S0_RDR0 without FIFO?&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Jan 2015 09:05:27 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2015-01-29T09:05:27Z</dc:date>
    <item>
      <title>I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366886#M18911</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to set up the INMP441 digital I2S microphone with the Kinetis K22F Freedom Board. The microphone data sheet is at:&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://www.invensense.com/mems/microphone/documents/INMP441.pdf" title="http://www.invensense.com/mems/microphone/documents/INMP441.pdf"&gt;http://www.invensense.com/mems/microphone/documents/INMP441.pdf&lt;/A&gt;&lt;/P&gt;




&lt;/BLOCKQUOTE&gt;&lt;P&gt;I have been able to implement the correct settings for the Bit Clock and Frame Sync (64 clocks per frame, 2 words per frame, etc...) through the 5 I2Sx_RCR registers. I am now trying to quickly obtain data from the microphone but have not been successful. Here is my code.&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHIPEN = 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; L = 1;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Pins Init&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC5 |= 0x42B82;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enables PORTC&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR5 |= 0x400;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PTC5 --&amp;gt; I2S0_RXD0 -&amp;gt; DATA (coming from Microphone)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR7 |= 0x400;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PTC7 --&amp;gt; I2S0_RX_FS -&amp;gt; FRAME (Sent to Microphone)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR9 |= 0x400;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PTC9 --&amp;gt; I2S0_RX_BCLK -&amp;gt; BITCLOCK (Sent to Microphone)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Clock Init&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC6 |= 0x8000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Turn on I2S Clock Gate&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SOPT2 |= 0x30000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I2S Clocking Sourced from 48MHz IRC48MCLK&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_MCR |= 0x43000000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Output Enable. Mux IRC48MCLK into Fractional Divider&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR2 |= 0x4000000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MCLK MSEL to BCLK&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_MDR |= 0x1F07C;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set I2S Master Clock to 12.2880MHz&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR2 |= 0x300000D;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DIV is 13 - &amp;gt; 9000kHz Sample Rate. BCD = 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC6 |= 0x8000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Re-Enable I2S Module &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Receive Init&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCSR = 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; //Disable Receive as per Datasheet&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR1 |= 0x1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Sets FIFO Watermark to 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR3 |= 0x10000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable Receive Data Channel&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR4 |= 0x11F19;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Internal Frame Sync. Early Frame Sync. 32 SYWD. FRSZ 2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR5 |= 0x1F1F1F00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //32 Bits per Word. 32 Bits in First Word. Shifted 32.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCSR = 0x2000000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //FIFO Reset&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCSR |= 0x80000100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable and FIFO Enable&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;while(1) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(I2S0_RCSR &amp;amp; 0x10000){&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; pr(&amp;amp;I2S0_RDR0);&amp;nbsp;&amp;nbsp;&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 style="color: #ff0000;"&gt;//Reads content from data register, problem is that is constantly 0&lt;/SPAN&gt;&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; led_red = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;




&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is that the I2S0_RDR0 register is stuck at 0. So evidently I am not getting data from the microphone. Any ideas? (The microphone is indeed sending data on the right channel as confirmed with an oscilloscope)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Jan 2015 01:24:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366886#M18911</guid>
      <dc:creator>eduardoumana</dc:creator>
      <dc:date>2015-01-22T01:24:54Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366887#M18912</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Eduardo,&lt;/P&gt;&lt;P&gt;Regarding your question, I do not think you have the code to poll the status register to check if the I2S has received the data, then read the I2S0_RDR0 register.&lt;/P&gt;&lt;P&gt;how about using the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; wait(0.01);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(I2S0_RCSR&amp;amp;0x10000) //check the FIFO Request Flag&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr(&amp;amp;I2S0_RDR0);&amp;nbsp; //Prints register address and contents&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; led_red = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;I do not debug your code, pls have a try to test the code.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Jan 2015 06:28:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366887#M18912</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2015-01-22T06:28:17Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366888#M18913</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Unfortunately that didn't work. The FIFO request flag is not raised, so the contents of I2S0_RDR0 are never read. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think the issue is the micro controller not "interpreting/receiving" the data because the microphone is indeed sending it. Two possible issues come to mind:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) The data from the microphone should be connected to I2S0_RDX0, right?&lt;/P&gt;&lt;P&gt;2) The data sheet talks about enabling the receive channel to access the FIFO. Am I forgetting to enable a channel, a FIFO or something along those lines? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Jan 2015 22:27:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366888#M18913</guid>
      <dc:creator>eduardoumana</dc:creator>
      <dc:date>2015-01-22T22:27:35Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366889#M18914</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Some updates: The FIFO request flag is going high, so I am able to read I2S0_RDR0. However, the FIFO then overflows. The FIFO error flag rises.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any hints as to how to keep the FIFO from overflowing?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Jan 2015 15:28:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366889#M18914</guid>
      <dc:creator>eduardoumana</dc:creator>
      <dc:date>2015-01-23T15:28:24Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366890#M18915</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Eduardo,&lt;/P&gt;&lt;P&gt;As you know that the RFW bits in I2Sx_RCR1 register specifies the watermark level, for example, if you set RFW bits as 3, once the FRF bit in I2Sx_RCSR register is set, you can read the I2S0_RDR register 4 times to empty the FIFO.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jan 2015 02:56:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366890#M18915</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2015-01-27T02:56:02Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366891#M18916</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The FIFO was overflowing, an error flag was raised and never cleared so the FIFO didn't accept more data. The fix is setting FCONNT and clearing the error:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if(I2S0_RCSR &amp;amp; 0x10000){&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; pr(&amp;amp;I2S0_RDR0);&amp;nbsp; &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; led_red = 0;&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; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (I2S0_RCSR &amp;amp; 0x20000){&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; I2S0_RCSR |= 0x20000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jan 2015 04:25:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366891#M18916</guid>
      <dc:creator>eduardoumana</dc:creator>
      <dc:date>2015-01-27T04:25:53Z</dc:date>
    </item>
    <item>
      <title>Re: I2S Microphone and K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366892#M18917</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Eduardo,&lt;/P&gt;&lt;P&gt;has your issue fixed yet? If not, can you use interrupt mechanism to read the I2S0_RDR0 without FIFO?&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jan 2015 09:05:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/I2S-Microphone-and-K22F/m-p/366892#M18917</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2015-01-29T09:05:27Z</dc:date>
    </item>
  </channel>
</rss>

