<?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: Cannot get I2S RX DMA working on a rev 2 K10 (MK10DX256VMD10) in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371997#M19355</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your suggestions. Unfortunately, they did not bring any change - still I get only zeroes. The DMA is actually writing zeroes to the buffer, so I am unsure if this is a matter of DMA issue or a I2S set-up issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, thank you for the example. I'll look deeper into it, since it seams to be similar to what I try to accomplish.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt; Micael&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 03 Nov 2014 19:23:32 GMT</pubDate>
    <dc:creator>vespaman</dc:creator>
    <dc:date>2014-11-03T19:23:32Z</dc:date>
    <item>
      <title>Cannot get I2S RX DMA working on a rev 2 K10 (MK10DX256VMD10)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371995#M19353</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am stuck. I have a I2S mono microphone (left channel) which I want to read 32/24 bits from. Clock is up, and scope gives the data I would expect.&lt;/P&gt;&lt;P&gt;But, I only get '0' in my dma rx buffer when my DMA FULL interrupt arrives.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TX works just fine, but I have been fighting with RX for a long time now. I think that part of my problem is that there are no real examples, and those that I can find are for the older chip revision.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I instead of dma request, let I2S rx generate an interrupt, I can read out data which looks alright (at least not 0) from I2S0_RDR0, so I think it is the DMA setup that I am having issues with.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;buf_rx in dma setup is 32-bit aligned.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I2S rx setup:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR1 = 2;&amp;nbsp; // Water mark&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR2 = I2S_RCR2_SYNC(0) | // Asynch mode&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; I2S_RCR2_MSEL(1) |&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; I2S_RCR2_DIV(5) |&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; I2S_RCR2_BCP_MASK |&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; I2S_RCR2_BCD_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR3 = 1&amp;lt;&amp;lt;16; // Enable Channel 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR4 = I2S_RCR4_FRSZ(I2S_CONFIG_WORDS_IN_A_FRAME-1) |&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; I2S_RCR4_SYWD(31) |&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; I2S_RCR4_MF_MASK |&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; I2S_RCR4_FSP_MASK |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Frame active low&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; I2S_RCR4_FSD_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Frame generated internally. (Output)&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCR5 = I2S_RCR5_WNW(31) |&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S_RCR5_W0W(31) |&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; I2S_RCR5_FBT(31);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable RX&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2S0_RCSR = I2S_RCSR_RE_MASK |&amp;nbsp; // enable rx&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; I2S_RCSR_BCE_MASK | // enable bit clock&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; I2S_RCSR_FRDE_MASK; // enable DMA requests&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;DMA setup:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;void hal_dma_init_for_i2s_rx(unsigned int buf_rx, unsigned int block_n_sample)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_TCD tcd;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(14);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CR |= DMA_CR_EMLM_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CSR(2) = DMA_CSR_INTMAJOR_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_irq(2);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.channel&amp;nbsp;&amp;nbsp; = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.nbytes&amp;nbsp;&amp;nbsp;&amp;nbsp; = 4; // Reading from a 32 bit register&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.attr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ATTR_SSIZE(DMA_SIZE_32_BIT) | DMA_ATTR_DSIZE(DMA_SIZE_32_BIT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.saddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (unsigned int) &amp;amp;I2S0_RDR0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.soff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0; // Do not increment&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.slast&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.dadd&amp;nbsp;&amp;nbsp;&amp;nbsp; = buf_rx; // Destination&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.doff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.dlast_sga = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.citer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = block_n_sample*2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcd.biter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = block_n_sample*2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _dma_init(&amp;amp;tcd);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable DMA channel&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_SERQ = DMA_SERQ_SERQ(2);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 02 Nov 2014 18:30:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371995#M19353</guid>
      <dc:creator>vespaman</dc:creator>
      <dc:date>2014-11-02T18:30:42Z</dc:date>
    </item>
    <item>
      <title>Re: Cannot get I2S RX DMA working on a rev 2 K10 (MK10DX256VMD10)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371996#M19354</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Micael,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I check your eDMA setting, there with some place need be modified:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DMA_CSR(2) = DMA_CSR_INTMAJOR_MASK;&lt;/P&gt;&lt;P&gt;need be replaced with:&lt;/P&gt;&lt;P&gt;tcd.csr = DMA_CSR_INTMAJOR_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; //generate interrupt at end of major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DMA_SERQ = DMA_SERQ_SERQ(2);&lt;/P&gt;&lt;P&gt;need be replaced with:&lt;/P&gt;&lt;P&gt;DMA_ERQ |= DMA_ERQ_ERQ2_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;About I2S DMA RX example, please check attached Kinetis 100MHz V2 product I2S module validation code (&amp;lt;sai_test.c&amp;gt; sai_dma_test function).&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &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>Mon, 03 Nov 2014 07:33:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371996#M19354</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-11-03T07:33:09Z</dc:date>
    </item>
    <item>
      <title>Re: Cannot get I2S RX DMA working on a rev 2 K10 (MK10DX256VMD10)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371997#M19355</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your suggestions. Unfortunately, they did not bring any change - still I get only zeroes. The DMA is actually writing zeroes to the buffer, so I am unsure if this is a matter of DMA issue or a I2S set-up issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, thank you for the example. I'll look deeper into it, since it seams to be similar to what I try to accomplish.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt; Micael&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Nov 2014 19:23:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371997#M19355</guid>
      <dc:creator>vespaman</dc:creator>
      <dc:date>2014-11-03T19:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: Cannot get I2S RX DMA working on a rev 2 K10 (MK10DX256VMD10)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371998#M19356</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Found this post while looking through various SAI / I2S problems people have had in order to try to figure out my own hang-up. Out of curiosity is there a "verification file" for the Kinetis K22 SAI? I'm having trouble trying to get it up and running, and an example without the soundcard features like in the tower examples might help me out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Nov 2014 23:13:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Cannot-get-I2S-RX-DMA-working-on-a-rev-2-K10-MK10DX256VMD10/m-p/371998#M19356</guid>
      <dc:creator>bosleymusic_com</dc:creator>
      <dc:date>2014-11-11T23:13:33Z</dc:date>
    </item>
  </channel>
</rss>

