查看: 2228|回复: 2

[求助] 请教:rt1011的SAI1和SAI3的分频参数设置一样,bclk却不一样

[复制链接]

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2023-3-7
发表于 2023-3-1 19:37:30 | 显示全部楼层 |阅读模式

请大侠指点一下,谢谢。

参数都是设的32位,48KHz,2声道,MCLK相同用示波器测试,SAI1的bclk是3.07MHz, 而SAI3的bclk是10.4MHz
寄存器RCR2里面的DIV值都是相同的值为1。

void SAI1_init(void)   
{   
   sai_transceiver_t saiConfig;   

   /*Clock setting for SAI1*/
   CLOCK_SetMux(kCLOCK_Sai1Mux, DEMO_SAI1_CLOCK_SOURCE_SELECT);
   CLOCK_SetDiv(kCLOCK_Sai1PreDiv, DEMO_SAI1_CLOCK_SOURCE_PRE_DIVIDER);
   CLOCK_SetDiv(kCLOCK_Sai1Div, DEMO_SAI1_CLOCK_SOURCE_DIVIDER);

   /*Enable MCLK clock*/
   BOARD_EnableSaiMclkOutput(true);  

   /* SAI init */
   SAI_Init(DEMO_SAI);
   SAI_TransferTxCreateHandle(DEMO_SAI, &txHandle, tx_callback, NULL);
   SAI_TransferRxCreateHandle(DEMO_SAI, &rxHandle, rx_callback, NULL);   

   /* I2S mode configurations */
   SAI_GetClassicI2SConfig(&saiConfig, DEMO_AUDIO_BIT_WIDTH, kSAI_Stereo, 1U << DEMO_SAI_CHANNEL);     
   saiConfig.masterSlave = kSAI_Master;     
   //------tx-----
   saiConfig.syncMode    = kSAI_ModeAsync;
   SAI_TransferTxSetConfig(DEMO_SAI, &txHandle, &saiConfig);  
   //------rx-----
   saiConfig.syncMode = kSAI_ModeSync;      
   SAI_TransferRxSetConfig(DEMO_SAI, &rxHandle, &saiConfig);  

   /* set bit clock divider */
   SAI_TxSetBitClockRate(DEMO_SAI, DEMO_AUDIO_MASTER_CLOCK, kSAI_SampleRate48KHz, kSAI_WordWidth32bits,
                       DEMO_AUDIO_DATA_CHANNEL);

   SAI_RxSetBitClockRate(DEMO_SAI, DEMO_AUDIO_MASTER_CLOCK, kSAI_SampleRate48KHz, kSAI_WordWidth32bits,   
                       DEMO_AUDIO_DATA_CHANNEL);

   /* master clock configurations */
   BOARD_MASTER_CLOCK_CONFIG();   
}



//--------------------------------------------------------------------------------------------

void SAI3_init_master(void)
{   
   sai_transceiver_t saiConfig;   

   /*Clock setting for SAI3*/
   CLOCK_SetMux(kCLOCK_Sai1Mux, DEMO_SAI3_CLOCK_SOURCE_SELECT);
   CLOCK_SetDiv(kCLOCK_Sai1PreDiv, DEMO_SAI3_CLOCK_SOURCE_PRE_DIVIDER);
   CLOCK_SetDiv(kCLOCK_Sai1Div, DEMO_SAI3_CLOCK_SOURCE_DIVIDER);

   /*Enable MCLK clock*/
   BOARD_EnableSaiMclkOutput(true);     


   /* SA3 init */
   SAI_Init(SAI3);
   SAI_TransferRxCreateHandle(SAI3, &rxHandle3, rx_callback3, NULL);   

   /* I2S mode configurations */
   SAI_GetClassicI2SConfig(&saiConfig, DEMO_AUDIO_BIT_WIDTH, kSAI_Stereo, 1U << DEMO_SAI_CHANNEL);     

   saiConfig.masterSlave = kSAI_Master;

   //------rx-----
   saiConfig.syncMode = kSAI_ModeAsync;   
   SAI_TransferRxSetConfig(SAI3, &rxHandle3, &saiConfig);

   /* set bit clock divider */
   SAI_RxSetBitClockRate(SAI3, DEMO_AUDIO_MASTER_CLOCK, kSAI_SampleRate48KHz, kSAI_WordWidth32bits,   
                       DEMO_AUDIO_DATA_CHANNEL);

}



回复

使用道具 举报

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2023-3-7
 楼主| 发表于 2023-3-2 10:33:34 | 显示全部楼层
MCLK都是12.288MHz, 在RCR2里面的DIV都是设置的都是(1+1)*2=4分频(设置好之后打串口log查看确认)。
示波器测试sai1的BCLK是正常的3.07Mhz, 但测试sai3的BCLK却是不正常的10.4MHz。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

16

帖子

0

注册会员

Rank: 2

积分
138
最后登录
2023-5-23
发表于 2023-4-17 10:05:16 | 显示全部楼层
找到了原因,把3个SAI1改成SAI3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-18 13:26 , Processed in 0.084725 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表