本人使用的板卡是 BF533。尝试修改了一下 BF53x_AUDIO_PCM这个工程。最初的想法是,想要播放一个比较小的声音文件(大概不到两秒钟的样子),所以打算只用一个buffer,而不是像demo中那样用一个循环队列来实现。自己做的修改是,Init_DMA2_Sport0_TX函数改写成
*pDMA2_START_ADDR = buffer;
*pDMA2_X_COUNT = 250000/2;
*pDMA2_X_MODIFY = 2;
*pDMA2_CONFIG = /*0x7900 |*/ WDSIZE_16 | 0x20 | DI_EN;
asm("ssync;");
因为只是想实验一下,只播放一次,所以中断和主函数中的代码屏蔽掉。最后代码运行的结果是只播放了声音的一部分,比如声音是“12345”,则只播放了“123”,开始我以为是 pDMA2_X_COUNT设置的小了,但是我把他加大到280000的时候反而只播放了“1”,而加大了300000的时候更加是什么声音都没有了。是因为在BF533中对身影文件的长度,大小有限制,在文件比较大的时候只能使用队列那样子的模式么?