请问wave文件是单声道8bit的文件,怎么配置DMA呢?

2019-07-14 15:33发布

F4系列的官方例程有播放wave文件的例程,wave文件使用的是16bit双声道格式,dma传输时可以先左后右自动传输, 但是如果wave文件是单声道8bit的文件,怎么配置DMA呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
ji5687
2019-07-15 08:24
60user196 发表于 2018-12-3 16:19
标准的pcm文件 8bit数据,就是连续存放的,读到ram的时候也应该是连续的。用DMA可以把RAM和DAC的位数全部配置为8Bit,着样就不存在填充问题了, 只是i2s每一个ws的周期需要两个数据,如果WS为高时,取RAM【0】中的数据,那么WS为低时回去取RAM【1】中的数据,显然这是不对的。

除非有一种模式可以这样,RAM1 中存真实数据 ...

本帖最后由 arm8686 于 2015-3-6 15:29 编辑

PCM 8 bit数据连续存放,这没有关系。
转换一下,例如左移 8 位。这样在 RAM 就会是 16 bit 的数据。
再通过 I2S 传输出去。这时候,就只有一个通道有声音了。

不要想着左取一个字节,右取一个字节。

/*---------------------------------------------------------------------------*/

RAM1:左右 左右 左右 …… (例如共 4k 字节)RAM2:左右 左右 左右 …… (例如共 4k 字节)

先准备好 RAM1 的数据,启动 DMA 往 I2S 传数据(就是所谓的播放)。
接着该准备好 RAM2 里面的数据了,不然播放完 RAM1 的数据,就断了码流。

当 RAM1 播放完之后,触发 DMA 的中断。此时切换 DMA 通道,指向 RAM2 的首地址。
在播放 RAM2 数据的时候,准备 RAM1 的数据。

这就是所谓的 DMA 乒乓方式。

一周热门 更多>