heize 发表于 2015-1-28 17:31:50

K64怎么设置eDMA以每次3byte来从内存到SAIFIFO寄存器

K64怎么设置eDMA以每次3byte来从内存到SAIFIFO寄存器?
看来下,SDK和规格书都说了eDMA只支持1,2,4等bytes的传输;但如果是24bit wav文件的话,使用文件系统读到内存,都是3bytes一个声道
想过eDMA以4byte来传输,然后minor loop的offset address能不能设置成3来调整?设置了下,没能成功

lusson 发表于 2015-1-28 18:02:03

一般都是把WAV数据调整成4字节对齐后再给DMA的。

heize 发表于 2015-1-28 18:39:26

lusson 发表于 2015-1-28 18:02
一般都是把WAV数据调整成4字节对齐后再给DMA的。

这样子,主要是文件读如果每次3bytes的话,会不会拖累速度?

lusson 发表于 2015-1-28 18:41:44

heize 发表于 2015-1-28 18:39
这样子,主要是文件读如果每次3bytes的话,会不会拖累速度?

一次读几K,然后对这几K再处理啊。。
你不会是想一次读3字节再放到4字节中吧?那样DMA不是一次传输一次?

heize 发表于 2015-1-28 19:01:03

lusson 发表于 2015-1-28 18:41
一次读几K,然后对这几K再处理啊。。
你不会是想一次读3字节再放到4字节中吧?那样DMA不是一次传输一次? ...

我不是这个意思。
16bit的话,直接用fread读个几K到内存,DMA就可以自动发送到I2S
但按你的意思,fread读几K到内存,还要CPU介入处理后,DMA才能自动发送,拖累了速度?

lusson 发表于 2015-1-28 19:18:10

heize 发表于 2015-1-28 19:01
我不是这个意思。
16bit的话,直接用fread读个几K到内存,DMA就可以自动发送到I2S
但按你的意思,fread读 ...

对的。24bit需要特殊处理
需要fread读几个K到内存,再调整到4字节对齐,再给DMA
页: [1]
查看完整版本: K64怎么设置eDMA以每次3byte来从内存到SAIFIFO寄存器