<?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 Software Development KitのトピックRe: Bug report: fsl_sai_edma ignores multichannel SAI module</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583966#M5937</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Additionally, in SAI_RxSetFormat, the active channels are zeroed out every time it's called:&lt;/P&gt;&lt;PRE style="color: #a9b7c6; background-color: #2b2b2b; font-size: 9.0pt;"&gt;&lt;SPAN style="background-color: #344134;"&gt;base&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style="color: #9373a5;"&gt;RCR3 &lt;/SPAN&gt;&amp;amp;= ~&lt;SPAN style="color: #908b25;"&gt;I2S_RCR3_RCE_MASK&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;This makes it impossible to run 2 channels. With my above fix to fsl_sai_edma, as well as deleting this line zeroing RCR3, I have 2 RX channels working simultaneously with EDMA now.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 02 Sep 2016 00:54:10 GMT</pubDate>
    <dc:creator>jacobjennings</dc:creator>
    <dc:date>2016-09-02T00:54:10Z</dc:date>
    <item>
      <title>Bug report: fsl_sai_edma ignores multichannel SAI module</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583965#M5936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It appears that fsl_sai_edma.c uses the static&amp;nbsp;s_edmaPrivateHandle to maintain callbacks for EDMA, but it reserves the 0 index for TX and 1 index for RX, ignoring SAI modules with&amp;nbsp;more than one tx/rx channel (example: the K24 I am using has 2 TX and 2 RX in one SAI module).&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I&amp;nbsp;used the FSL_FEATURE_SAI_CHANNEL_COUNT feature indicator to amend fsl_sai_edma (see attached solution)&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-339068"&gt;fsl_sai_edma.c.zip&lt;/A&gt;&lt;/STRONG&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-339068"&gt;fsl_sai_edma.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Sep 2016 18:07:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583965#M5936</guid>
      <dc:creator>jacobjennings</dc:creator>
      <dc:date>2016-09-01T18:07:34Z</dc:date>
    </item>
    <item>
      <title>Re: Bug report: fsl_sai_edma ignores multichannel SAI module</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583966#M5937</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Additionally, in SAI_RxSetFormat, the active channels are zeroed out every time it's called:&lt;/P&gt;&lt;PRE style="color: #a9b7c6; background-color: #2b2b2b; font-size: 9.0pt;"&gt;&lt;SPAN style="background-color: #344134;"&gt;base&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style="color: #9373a5;"&gt;RCR3 &lt;/SPAN&gt;&amp;amp;= ~&lt;SPAN style="color: #908b25;"&gt;I2S_RCR3_RCE_MASK&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;This makes it impossible to run 2 channels. With my above fix to fsl_sai_edma, as well as deleting this line zeroing RCR3, I have 2 RX channels working simultaneously with EDMA now.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Sep 2016 00:54:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583966#M5937</guid>
      <dc:creator>jacobjennings</dc:creator>
      <dc:date>2016-09-02T00:54:10Z</dc:date>
    </item>
    <item>
      <title>Re: Bug report: fsl_sai_edma ignores multichannel SAI module</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583967#M5938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jacob,&lt;/P&gt;&lt;P&gt;Regarding your channel setting, first&amp;nbsp; of all, if you use two channel for example SAI_RX_DATA[1:0], you should set the RCM bit as 2b'11.&lt;/P&gt;&lt;P&gt;With the follwoing code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR3 &amp;amp;= ~I2S_RCR3_RCE_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR3 |= I2S_RCR3_RCE(1U &amp;lt;&amp;lt; format-&amp;gt;channel);&lt;/P&gt;&lt;P&gt;the SDK set up the receiver channels. The first line clear RCM bits so that the second line can set the bits. But the second line: &amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR3 |= I2S_RCR3_RCE(1U &amp;lt;&amp;lt; format-&amp;gt;channel); can set up one channel instead of two, i think it is a bug of the sai driver.&lt;/P&gt;&lt;P&gt;If you use two channel of SAI receiver, as you did, you can modify the code&amp;nbsp; as:&lt;/P&gt;&lt;P&gt;base-&amp;gt;RCR3 &amp;amp;= ~I2S_RCR3_RCE_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //base-&amp;gt;RCR3 |= I2S_RCR3_RCE(1U &amp;lt;&amp;lt; format-&amp;gt;channel);&lt;/P&gt;&lt;P&gt;base-&amp;gt;RCR3 |= I2S_RCR3_RCE_MASK;&lt;/P&gt;&lt;P&gt;For transmitter, it is the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it can help you.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&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 SAI_RxSetFormat(I2S_Type *base,&lt;BR /&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; sai_transfer_format_t *format,&lt;BR /&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; uint32_t mclkSourceClockHz,&lt;BR /&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; uint32_t bclkSourceClockHz)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t bclk = format-&amp;gt;sampleRate_Hz * 32U * 2U;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Compute the mclk */&lt;BR /&gt;#if defined(FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER) &amp;amp;&amp;amp; (FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check if master clock divider enabled */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (base-&amp;gt;MCR &amp;amp; I2S_MCR_MOE_MASK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAI_SetMasterClockDivider(base, format-&amp;gt;masterClockHz, mclkSourceClockHz);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;#endif /* FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set bclk if needed */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (base-&amp;gt;RCR2 &amp;amp; I2S_RCR2_BCD_MASK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR2 &amp;amp;= ~I2S_RCR2_DIV_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR2 |= I2S_RCR2_DIV((bclkSourceClockHz / bclk) / 2U - 1U);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set bitWidth */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (format-&amp;gt;protocol == kSAI_BusRightJustified)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR5 = I2S_RCR5_WNW(31U) | I2S_RCR5_W0W(31U) | I2S_RCR5_FBT(31U);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR5 = I2S_RCR5_WNW(31U) | I2S_RCR5_W0W(31U) | I2S_RCR5_FBT(format-&amp;gt;bitWidth - 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set mono or stereo */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RMR = (uint32_t)format-&amp;gt;stereo;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set data channel */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR3 &amp;amp;= ~I2S_RCR3_RCE_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR3 |= I2S_RCR3_RCE(1U &amp;lt;&amp;lt; format-&amp;gt;channel);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if defined(FSL_FEATURE_SAI_FIFO_COUNT) &amp;amp;&amp;amp; (FSL_FEATURE_SAI_FIFO_COUNT &amp;gt; 1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set watermark */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;RCR1 = format-&amp;gt;watermark;&lt;BR /&gt;#endif /* FSL_FEATURE_SAI_FIFO_COUNT&amp;nbsp; */&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Sep 2016 04:02:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583967#M5938</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2016-09-05T04:02:30Z</dc:date>
    </item>
    <item>
      <title>Re: Bug report: fsl_sai_edma ignores multichannel SAI module</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583968#M5939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi!&lt;BR /&gt;&lt;BR /&gt;I'm trying to make this work with 2 TX channels but am having a hard time. I've replaced the&lt;STRONG&gt; fsl driver files&lt;/STRONG&gt; with the ones attached to this thread and created 2 separate handlers for each TX channel but it still doesn't work.&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/90981iA37B33DBB1C25A13/image-size/large?v=v2&amp;amp;px=999" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;The closest thing I got to it working shown the result above (should have been a 1 kHz sine wave for each of the channels). I figured out that its only the first FIFO block is getting through, but further requests are being ignored until a new DMA transfer is submitted. I can easily make it work with one channel but ultimately the point is for these 2 channels to be working independently.&lt;BR /&gt;If you have any ideas about what may be happening, please let me know :smileyhappy:.&lt;BR /&gt;&lt;BR /&gt;Thanks for your time!&lt;BR /&gt;&lt;BR /&gt;Henrique&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Jul 2019 11:20:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Bug-report-fsl-sai-edma-ignores-multichannel-SAI-module/m-p/583968#M5939</guid>
      <dc:creator>henrique1</dc:creator>
      <dc:date>2019-07-11T11:20:55Z</dc:date>
    </item>
  </channel>
</rss>

