Generating tone via SAI with imx8 as slave

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Generating tone via SAI with imx8 as slave

269件の閲覧回数
abtom87
Contributor II

I am configuring the SAI pins and enabling external clock like so:

	IOMUXC_SetPinMux(IOMUXC_SAI3_TXFS_SAI3_TX_SYNC, 0U);
	IOMUXC_SetPinMux(IOMUXC_SAI3_TXC_SAI3_TX_BCLK, 0U);
	IOMUXC_SetPinMux(IOMUXC_SAI3_TXD_SAI3_TX_DATA0, 0U);
	IOMUXC_SetPinMux(IOMUXC_SAI3_MCLK_SAI3_MCLK, 0U);

	// Set Pin Config
	IOMUXC_SetPinConfig(IOMUXC_SAI3_TXFS_SAI3_TX_SYNC, value);
	IOMUXC_SetPinConfig(IOMUXC_SAI3_TXC_SAI3_TX_BCLK, value);
	IOMUXC_SetPinConfig(IOMUXC_SAI3_TXD_SAI3_TX_DATA0, value);
	IOMUXC_SetPinConfig(IOMUXC_SAI3_MCLK_SAI3_MCLK, value);

	// Enable extern MCLK
	IOMUXC_GPR->GPR[2] |= IOMUXC_GPR_GPR2_GPR_SAI3_EXT_MCLK_EN(1);

 

Then i create the transfer Tx handle which contains the SAI Tx callback like so:

	SAI_Init(SAI_I2S);
	SAI_TransferTxCreateHandle(SAI_I2S, &saiHandle, sai_tx_callback, saiBuffer);
	saiHandle.bitWidth = 32U;
	saiHandle.channel = 0;
	saiHandle.channelMask = SAI_CHANNEL_MASK;
	saiHandle.channelNums = 2;
	saiHandle.endChannel = 1;

 

I configure the imx as slave

	sai_fifo_t fifo;
	sai_fifo_packing_t packing;
	packing = kSAI_FifoPacking8bit;
	SAI_TxSetFIFOPacking(SAI_I2S, packing);

	sai_transceiver_t config;
	SAI_GetClassicI2SConfig(&config, SAI_BIT_WIDTH, SAI_MONO_STEREO, SAI_CHANNEL_MASK);
	config.fifo = fifo;
	config.masterSlave = kSAI_Slave;
	config.syncMode = kSAI_ModeAsync;
	config.bitClock.bclkSource = kSAI_BclkSourceMclkOption1;
	SAI_TxSetConfig(SAI_I2S, &config);

 

Do a fifo reset before preparing my data and sending the data using 

 

SAI_TxSoftwareReset(SAI_I2S, kSAI_ResetTypeSoftware);
 
	// Prepare transfer
	sai_transfer_t xfer =
	{
		.data = (uint8_t *)saiBuffer,
		.dataSize = sizeof(uint32_t) * SAI_BUFFER_SIZE,
	};

	if ((ret = SAI_TransferSendNonBlocking(SAI_I2S, &saiHandle, &xfer)) == kStatus_Success)
	{
	}
	else 
	{
		//Do some debugging
	}

 

The weird part is, the interrupt fires, the callback is called and I am printing out the TFR and TDR registers which all show 0x00. What am i doing wrong here? Is EDMA the only way or something else? Any help or pointers would be appreciated!

 

タグ(2)
0 件の賞賛
返信
2 返答(返信)

225件の閲覧回数
Manuel_Salas
NXP TechSupport
NXP TechSupport

Hello @abtom87 

I hope you are doing very well.

 

Before to start looking for any code issue, could you please measure the MCLK signal?

I would like to be sure there is the signal in the PAD.

 

Best regards,

Salas.

211件の閲覧回数
abtom87
Contributor II

Yes I measured the clock. There is signal. The interrupt wouldnt be fired otherwise or?

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2199988%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Eimx8%E3%82%92%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%81%A8%E3%81%97%E3%81%A6SAI%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%88%E3%83%BC%E3%83%B3%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2199988%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ESAI%20%E3%83%94%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%80%81%E5%A4%96%E9%83%A8%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%09IOMUXC_SetPinMux(IOMUXC_SAI3_TXFS_SAI3_TX_SYNC%2C%200U)%3B%0A%09IOMUXC_SetPinMux(IOMUXC_SAI3_TXC_SAI3_TX_BCLK%2C%200U)%3B%0A%09IOMUXC_SetPinMux(IOMUXC_SAI3_TXD_SAI3_TX_DATA0%2C%200U)%3B%0A%09IOMUXC_SetPinMux(IOMUXC_SAI3_MCLK_SAI3_MCLK%2C%200U)%3B%0A%0A%09%2F%2F%20Set%20Pin%20Config%0A%09IOMUXC_SetPinConfig(IOMUXC_SAI3_TXFS_SAI3_TX_SYNC%2C%20value)%3B%0A%09IOMUXC_SetPinConfig(IOMUXC_SAI3_TXC_SAI3_TX_BCLK%2C%20value)%3B%0A%09IOMUXC_SetPinConfig(IOMUXC_SAI3_TXD_SAI3_TX_DATA0%2C%20value)%3B%0A%09IOMUXC_SetPinConfig(IOMUXC_SAI3_MCLK_SAI3_MCLK%2C%20value)%3B%0A%0A%09%2F%2F%20Enable%20extern%20MCLK%0A%09IOMUXC_GPR-%26gt%3BGPR%5B2%5D%20%7C%3D%20IOMUXC_GPR_GPR2_GPR_SAI3_EXT_MCLK_EN(1)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81SAI%20Tx%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%82%92%E5%90%AB%E3%82%80%E8%BB%A2%E9%80%81%20Tx%20%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E3%82%92%20SO%20%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%09SAI_Init(SAI_I2S)%3B%0A%09SAI_TransferTxCreateHandle(SAI_I2S%2C%20%26amp%3BsaiHandle%2C%20sai_tx_callback%2C%20saiBuffer)%3B%0A%09saiHandle.bitWidth%20%3D%2032U%3B%0A%09saiHandle.channel%20%3D%200%3B%0A%09saiHandle.channelMask%20%3D%20SAI_CHANNEL_MASK%3B%0A%09saiHandle.channelNums%20%3D%202%3B%0A%09saiHandle.endChannel%20%3D%201%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3Eimx%E3%82%92%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%81%A8%E3%81%97%E3%81%A6%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%09sai_fifo_t%20fifo%3B%0A%09sai_fifo_packing_t%20packing%3B%0A%09packing%20%3D%20kSAI_FifoPacking8bit%3B%0A%09SAI_TxSetFIFOPacking(SAI_I2S%2C%20packing)%3B%0A%0A%09sai_transceiver_t%20config%3B%0A%09SAI_GetClassicI2SConfig(%26amp%3Bconfig%2C%20SAI_BIT_WIDTH%2C%20SAI_MONO_STEREO%2C%20SAI_CHANNEL_MASK)%3B%0A%09config.fifo%20%3D%20fifo%3B%0A%09config.masterSlave%20%3D%20kSAI_Slave%3B%0A%09config.syncMode%20%3D%20kSAI_ModeAsync%3B%0A%09config.bitClock.bclkSource%20%3D%20kSAI_BclkSourceMclkOption1%3B%0A%09SAI_TxSetConfig(SAI_I2S%2C%20%26amp%3Bconfig)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%BA%96%E5%82%99%E3%81%97%E3%81%A6%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E5%89%8D%E3%81%ABFIFO%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3ESAI_TxSoftwareReset(SAI_I2S%2C%20kSAI_ResetTypeSoftware)%3B%0A%20%0A%09%2F%2F%20Prepare%20transfer%0A%09sai_transfer_t%20xfer%20%3D%0A%09%7B%0A%09%09.data%20%3D%20(uint8_t%20*)saiBuffer%2C%0A%09%09.dataSize%20%3D%20sizeof(uint32_t)%20*%20SAI_BUFFER_SIZE%2C%0A%09%7D%3B%0A%0A%09if%20((ret%20%3D%20SAI_TransferSendNonBlocking(SAI_I2S%2C%20%26amp%3BsaiHandle%2C%20%26amp%3Bxfer))%20%3D%3D%20kStatus_Success)%0A%09%7B%0A%09%7D%0A%09else%20%0A%09%7B%0A%09%09%2F%2FDo%20some%20debugging%0A%09%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E5%A5%87%E5%A6%99%E3%81%AA%E3%81%AE%E3%81%AF%E3%80%81%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%80%81%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%80%81TFR%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%A8%20TDR%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%8C%E3%81%99%E3%81%B9%E3%81%A6%200x00%20%E3%82%92%E7%A4%BA%E3%81%99%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E4%BD%95%E3%82%92%E9%96%93%E9%81%95%E3%81%88%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3FEDMA%20%E3%81%8C%E5%94%AF%E4%B8%80%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E3%81%99%E3%81%8B%E3%80%81%E3%81%9D%E3%82%8C%E3%81%A8%E3%82%82%E4%BB%96%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E3%81%99%E3%81%8B%3F%E3%81%82%E3%82%89%E3%82%86%E3%82%8B%E3%81%94%E5%8A%A9%E5%8A%9B%E3%82%84%E3%81%94%E6%8C%87%E6%91%98%E3%82%92%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%82%8C%E3%81%B0%E5%B9%B8%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2200648%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Generating%20tone%20via%20SAI%20with%20imx8%20as%20slave%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2200648%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%AF%E3%81%84%E3%80%81%E6%99%82%E8%A8%88%E3%82%92%E6%B8%AC%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E4%BF%A1%E5%8F%B7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%86%E3%81%A7%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AF%E7%99%BA%E7%94%9F%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2200444%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Generating%20tone%20via%20SAI%20with%20imx8%20as%20slave%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2200444%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F256537%22%20target%3D%22_blank%22%3E%40abtom87%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%81%8A%E5%85%83%E6%B0%97%E3%81%A7%E3%81%8A%E9%81%8E%E3%81%94%E3%81%97%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E6%8E%A2%E3%81%97%E5%A7%8B%E3%82%81%E3%82%8B%E5%89%8D%E3%81%AB%E3%80%81MCLK%20%E4%BF%A1%E5%8F%B7%E3%82%92%E6%B8%AC%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%0A%3CP%3EPAD%20%E3%81%AB%E4%BF%A1%E5%8F%B7%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%B5%E3%83%A9%E3%82%B9%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E