I'm using i.MX93 SAI3 audio interface to control "ADS8354" ADC with the following settings:
clock_root_config_t saiClkCfg = {
.clockOff = true,
.mux = kCLOCK_SAI3_ClockRoot_MuxExt,
.div = 1,
};
sai_transceiver_t saiConfig;
SAI_GetClassicI2SConfig(saiConfig,kSAI_WordWidth16bits,kSAI_Stereo,0x01);
saiConfig.bitClock.bclkPolarity = kSAI_SampleOnFallingEdge;
saiConfig.serialData.dataWord0Length = 18;
saiConfig.frameSync.frameSyncWidth = 2;
saiConfig.serialData.dataWordNum = 3;
saiConfig.frameSync.frameSyncEarly = false;
saiConfig.frameSync.frameSyncPolarity = kSAI_PolarityActiveHigh;
SAI_TxSetConfig(SAI3, &g_saiConfig);
g_saiConfig.masterSlave = kSAI_Master;
g_saiConfig.syncMode = kSAI_ModeSync;
SAI_RxSetConfig(SAI3, &g_saiConfig);
SAI_TxSetBitClockRate(SAI3, 20000000, 400000, 50, 1);
SAI_RxSetBitClockRate(SAI3, 20000000, 400000, 50, 1);
target FSYNC/ADC_CS frequency: 400 KHz = 20Mhz / (18 bits + 2x16bits) = 20000000/50
Measured FSYNC/ADC_CS frequency: 200 KHz
Question: How can I generate an FSYNC/ADC_CS signal at 400 kHz with a frame length of 50 bits and 20 MHz external clock ?
NB: Worked properly using a 40 MHz external clock
M33 SDK version: SDK_2_14_0_MCIMX93-EVK