I have setup the Jetson Nano using I2S4 with an external XMOS mic array and an amplifier for audio out. I used the JETSON-IO tool to enable I2S4 on the 40-pin header.
The IO connections are LRCLK, DATA OUT, DATA IN, BCLK.
The XMOS only supports 48KHz, and is stereo. Amp is configured via I2C - also for 48KHz.
I set up the amixer settings.
All works fine with arecord and aplay with the rate at 48kHZ. can play music or sound files off the web at 48KHz. Using scope I see the bitclock at 3.072MHz.
BUT, for the system and/or using browsers (Chromium e.g.), Nano changes the bitclock to 3.01MHz… which now equates to 47kHz. Which is enough variance for recording sound from XMOS to contain loud white noise drowning out the voice input. If I try to force 48kHz using amixer, then no white noise but sound coming from the system/web (via webRTC e.g.) has a higher pitch and the input from XMOS (albeit no white noise) sent via webRTC has a lower pitch.
It is unclear to me why Nano would vary the frequency like that.
Has anyone else seen this?
I was thinking about trying to set the Nano I2S4 into slave mode and have XMOS drive the bit clock to see if that might override this affect and force the system to work with 48kHz.
I have never modified a Device Tree Overlay file, but seems like it should not be difficult given the instructions from "Configuring the 40-pin header’ documentation.
I am hoping someone may have some insight to what the cause of this might be…?
I am hardware guy, so kind of new to the software side of embedded systems so maybe something simple I am missing.