IMX93 SAI3 FSYNC

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX93 SAI3 FSYNC

983 Views
KMES
Contributor I

I'm using i.MX93 SAI3 audio interface to control "ADS8354" ADC with the following settings:

  • External clock 20 MHz 
clock_root_config_t saiClkCfg = {
.clockOff = true,
.mux = kCLOCK_SAI3_ClockRoot_MuxExt,
.div = 1,
};​
  • SAI3 configuration 
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

Tags (2)
0 Kudos
Reply
3 Replies

881 Views
KMES
Contributor I

Yes with TDM mode.

PS: SYWD[8:12] of RCR4/TRC4 equal 0 (1 bit-clock cycle)

saiConfig.frameSync.frameSyncWidth = 1;
0 Kudos
Reply

813 Views
joanxie
NXP TechSupport
NXP TechSupport

sorry for my delay, I took my AL this week, since you use TDM mode, but the SAI_GetClassicI2SConfig is for I2S mode, and you only set one channel according to the function as below, pls check these settings again

SAI_TxSetBitClockRate(SAI3, 20000000, 400000, 50, 1);
0 Kudos
Reply

944 Views
joanxie
NXP TechSupport
NXP TechSupport

what mode do you use? TDM mode?

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2164317%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EIMX93%20SAI3%20FSYNC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2164317%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI'm%20using%20i.MX93%20SAI3%20audio%20interface%20to%20control%20%22ADS8354%22%20ADC%20with%20the%20following%20settings%3A%3C%2FP%3E%3CUL%3E%3CLI%3EExternal%20clock%2020%20MHz%26nbsp%3B%3C%2FLI%3E%3C%2FUL%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3Eclock_root_config_t%20saiClkCfg%20%3D%20%7B%0A.clockOff%20%3D%20true%2C%0A.mux%20%3D%20kCLOCK_SAI3_ClockRoot_MuxExt%2C%0A.div%20%3D%201%2C%0A%7D%3B%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3CUL%3E%3CLI%3ESAI3%20configuration%26nbsp%3B%3C%2FLI%3E%3C%2FUL%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Esai_transceiver_t%20saiConfig%3B%0ASAI_GetClassicI2SConfig(saiConfig%2CkSAI_WordWidth16bits%2CkSAI_Stereo%2C0x01)%3B%0AsaiConfig.bitClock.bclkPolarity%20%3D%20kSAI_SampleOnFallingEdge%3B%0AsaiConfig.serialData.dataWord0Length%20%3D%2018%3B%0AsaiConfig.frameSync.frameSyncWidth%20%3D%202%3B%0AsaiConfig.serialData.dataWordNum%20%20%20%20%20%20%3D%203%3B%0AsaiConfig.frameSync.frameSyncEarly%20%20%20%20%3D%20false%3B%0AsaiConfig.frameSync.frameSyncPolarity%20%3D%20kSAI_PolarityActiveHigh%3B%0ASAI_TxSetConfig(SAI3%2C%20%26amp%3Bg_saiConfig)%3B%0Ag_saiConfig.masterSlave%20%3D%20kSAI_Master%3B%0Ag_saiConfig.syncMode%20%3D%20kSAI_ModeSync%3B%0ASAI_RxSetConfig(SAI3%2C%20%26amp%3Bg_saiConfig)%3B%0A%0ASAI_TxSetBitClockRate(SAI3%2C%2020000000%2C%20400000%2C%2050%2C%201)%3B%0ASAI_RxSetBitClockRate(SAI3%2C%2020000000%2C%20400000%2C%2050%2C%201)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3Etarget%20FSYNC%2FADC_CS%20frequency%3A%20%3CFONT%20color%3D%22%2399CC00%22%3E400%20KHz%3C%2FFONT%3E%20%3D%2020Mhz%20%2F%20(18%20bits%20%2B%202x16bits)%20%3D%2020000000%2F50%26nbsp%3B%3C%2FP%3E%3CP%3EMeasured%20FSYNC%2FADC_CS%20frequency%3A%20%3CFONT%20color%3D%22%23FF0000%22%3E200%20KHz%3C%2FFONT%3E%26nbsp%3B%3C%2FP%3E%3CP%3EQuestion%3A%20How%20can%20I%20generate%20an%20FSYNC%2FADC_CS%20signal%20at%20400%20kHz%20with%20a%20frame%20length%20of%2050%20bits%20and%2020%20MHz%20external%20clock%20%3F%3C%2FP%3E%3CP%3E%3CSTRONG%3ENB%3A%3C%2FSTRONG%3E%20Worked%20properly%20using%20a%2040%20MHz%20external%20clock%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSTRONG%3EM33%20SDK%20version%3C%2FSTRONG%3E%3A%26nbsp%3BSDK_2_14_0_MCIMX93-EVK%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2172609%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX93%20SAI3%20FSYNC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2172609%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Esorry%20for%20my%20delay%2C%20I%20took%20my%20AL%20this%20week%2C%20since%20you%20use%20TDM%20mode%2C%20but%20the%26nbsp%3B%3CSPAN%3ESAI_GetClassicI2SConfig%20is%20for%20I2S%20mode%2C%20and%20you%20only%20set%20one%20channel%20according%20to%20the%20function%20as%20below%2C%20pls%20check%20these%20settings%20again%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20%20language-markup%22%3E%3CCODE%3ESAI_TxSetBitClockRate(SAI3%2C%2020000000%2C%20400000%2C%2050%2C%201)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2169750%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX93%20SAI3%20FSYNC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2169750%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EYes%20with%20TDM%20mode.%3C%2FP%3E%3CP%3EPS%3A%20SYWD%5B8%3A12%5D%20of%20RCR4%2FTRC4%20equal%200%20(1%20bit-clock%20cycle)%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3EsaiConfig.frameSync.frameSyncWidth%20%3D%201%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2164974%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX93%20SAI3%20FSYNC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2164974%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Ewhat%20mode%20do%20you%20use%3F%20TDM%20mode%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E