新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2022-4-24
- 在线时间
- 7 小时
|
发表于 2022-5-25 19:56:16
|
显示全部楼层
我先填充测试数据:
for(i=0;i<AUDIO_BUF_NUM;i++)
{
index=0;
for(j=0;j<AUDIO_OUT_PACKET;j+=4)
{
saibuf[j]=i;
saibuf[j+1]=index;
saibuf[j+2]=0x85;
saibuf[j+3]=0xFF;
index++;
}
}
SAIA_Init(SAI_MODEMASTER_TX,SAI_CLOCKSTROBING_RISINGEDGE,SAI_DATASIZE_24); //SAI1 Block A,主模式发送
SAIA_SampleRate_Set(48000); //设置采样率
SAIA_TX_DMA_Init(saibuf[0],saibuf[1],AUDIO_OUT_PACKET/4,2); //配置TX DMA,32位
sai_tx_callback=audio_sai_dma_callback; //回调函数指向audio_sai_dma_callback
saiplaybuf=0;
SAI_Play_Start(); //开始SAI数据发送(主机)
然而示波器看到的结果, 传输的第一帧数据是对的, 第二帧slot0也是对的,slot1就又复位到第一帧slot0的内容了.
也就是说传输完一帧半的数据后又回复到DMA缓冲区的最前面了. 见下图:
想不明白可能是哪里出问题了.
|
|