How can I programmatically and at run-time disable (or at least completely silence) an I2S output? By "completely silence", I mean make it output all-zeros; in particular, force the SDATA pin to output a permanent zero.
This does not seem to be the case automatically when there is no audio at the input: even if I unplug the optical cable from the SPDIF input of the ADAU1462, there is still activity in SDATA. By visual inspection on an oscilloscope screen, it looks to me like at every audio sample, the L channel is transmitting a 1, and the R channel is transmitting a ‒1.
Is there a way to change that behaviour? Notice that I am working in self-boot mode. I do not have an MCU connected to the I2C or SPI of the ADAU1462.
Place a mute cell right at the very output of the core. This should send zeros out.
I think what you are seeing is the output of the ASRC which is a filter so it is setting on a value that…
I think what you are seeing is the output of the ASRC which is a filter so it is setting on a value that is close enough to zero, within one bit but not exactly the zeros you seek.
Now, since you do not have a controller, doing this is a little tricky. There is a setting in the SPDIF section to mute when the audio is not valid but the ASRC is still after the SPDIF so that does not help. Have you seen the program I wrote to mute the audio when the SPDIF loses lock? It is also good to prevent DC output when the part first powers up and no SPDIF signal is there yet. The ASRC can output a DC level in that case.
I attached the project for you to look at. It uses a volume control with slew so that can be handy for a quiet operation. You could also do this with an external controlled switch to switch between the signal and a DC cell set to zero. This example is using a 1452 but it is the same solution for the 1462.
8816.ADAU1452 SPDIF Lock Detect Example.zip