No Usb audio output when there is no input I2S, AEC application
Posted: Fri Jan 10, 2020 10:28 am
Hi Xmos
I am using the XMOS vf3500 as part of our automatic speech recognition design configured as shown below.
<Tile Number="1" Reference="tile[1]">
<!-- USB -->
<Port Location="XS1_PORT_1H" Name="PORT_USB_TX_READYIN"/>
<Port Location="XS1_PORT_1J" Name="PORT_USB_CLK"/>
<Port Location="XS1_PORT_1K" Name="PORT_USB_TX_READYOUT"/>
<Port Location="XS1_PORT_1I" Name="PORT_USB_RX_READY"/>
<Port Location="XS1_PORT_1E" Name="PORT_USB_FLAG0"/>
<Port Location="XS1_PORT_1F" Name="PORT_USB_FLAG1"/>
<Port Location="XS1_PORT_1G" Name="PORT_USB_FLAG2"/>
<Port Location="XS1_PORT_8A" Name="PORT_USB_TXD"/>
<Port Location="XS1_PORT_8B" Name="PORT_USB_RXD"/>
<Port Location="XS1_PORT_16B" Name="PORT_MCLK_COUNT"/>
<Port Location="XS1_PORT_1C" Name="PORT_MCLK_IN2"/>
</Tile>
</Node>
<Node Id="2" InPackageId="2" Type="XS2-L16A-512" SystemFrequency="500MHz" OscillatorSrc="1">
<Boot>
<Source Location="LINK" BootMode="4"/>
</Boot>
<Tile Number="0" Reference="tile[2]">
<!-- Audio Ports -->
<Port Location="XS1_PORT_1G" Name="PORT_MCLK_IN"/>
<Port Location="XS1_PORT_1L" Name="PORT_I2S_LRCLK"/>
<Port Location="XS1_PORT_1M" Name="PORT_I2S_BCLK"/>
<Port Location="XS1_PORT_1K" Name="PORT_I2S_ADC0"/>
<!-- Mics -->
<Port Location="XS1_PORT_1H" Name="PORT_PDM_CLK"/>
<Port Location="XS1_PORT_8B" Name="PORT_PDM_DATA"/>
<Port Location="XS1_PORT_1G" Name="PORT_PDM_MCLK"/>
we use the I2S as an input of the playback coming from the audio card and also playing on the speaker as an AEC reference.
When there is no audio in the I2S input (no playback on the speaker), I turn down the I2S (BCLK/LRCLK/DATA) and I keep the I2S MCLK (external clock) (CODEC_MASTER=1) and in this case we have no output data via usb.
How we can keep the chip running properly if there is no I2S (BCLK/LRCLK/DATA) ?
I am using the XMOS vf3500 as part of our automatic speech recognition design configured as shown below.
<Tile Number="1" Reference="tile[1]">
<!-- USB -->
<Port Location="XS1_PORT_1H" Name="PORT_USB_TX_READYIN"/>
<Port Location="XS1_PORT_1J" Name="PORT_USB_CLK"/>
<Port Location="XS1_PORT_1K" Name="PORT_USB_TX_READYOUT"/>
<Port Location="XS1_PORT_1I" Name="PORT_USB_RX_READY"/>
<Port Location="XS1_PORT_1E" Name="PORT_USB_FLAG0"/>
<Port Location="XS1_PORT_1F" Name="PORT_USB_FLAG1"/>
<Port Location="XS1_PORT_1G" Name="PORT_USB_FLAG2"/>
<Port Location="XS1_PORT_8A" Name="PORT_USB_TXD"/>
<Port Location="XS1_PORT_8B" Name="PORT_USB_RXD"/>
<Port Location="XS1_PORT_16B" Name="PORT_MCLK_COUNT"/>
<Port Location="XS1_PORT_1C" Name="PORT_MCLK_IN2"/>
</Tile>
</Node>
<Node Id="2" InPackageId="2" Type="XS2-L16A-512" SystemFrequency="500MHz" OscillatorSrc="1">
<Boot>
<Source Location="LINK" BootMode="4"/>
</Boot>
<Tile Number="0" Reference="tile[2]">
<!-- Audio Ports -->
<Port Location="XS1_PORT_1G" Name="PORT_MCLK_IN"/>
<Port Location="XS1_PORT_1L" Name="PORT_I2S_LRCLK"/>
<Port Location="XS1_PORT_1M" Name="PORT_I2S_BCLK"/>
<Port Location="XS1_PORT_1K" Name="PORT_I2S_ADC0"/>
<!-- Mics -->
<Port Location="XS1_PORT_1H" Name="PORT_PDM_CLK"/>
<Port Location="XS1_PORT_8B" Name="PORT_PDM_DATA"/>
<Port Location="XS1_PORT_1G" Name="PORT_PDM_MCLK"/>
we use the I2S as an input of the playback coming from the audio card and also playing on the speaker as an AEC reference.
When there is no audio in the I2S input (no playback on the speaker), I turn down the I2S (BCLK/LRCLK/DATA) and I keep the I2S MCLK (external clock) (CODEC_MASTER=1) and in this case we have no output data via usb.
How we can keep the chip running properly if there is no I2S (BCLK/LRCLK/DATA) ?