在学习 alsa 驱动,遇到关于dma 跟 i2s 硬件上的问题

第三期   alsa驱动  裸板

1   dma 传输没有速度

2  dma 传输到 FIFO地址上,然后i2s发送到芯片上 

那么如果 dma 传输速大于 i2s ,那么后面传输的数据就会覆盖前面的数据,导致数据丢失。

如果dma 传输速度小于 i2s,那么会重复发送很多数据!

那么怎么设置dma 传输到 FIFO的速度呢?

请先 登录 后评论

1 个回答

韦东山 - 百问网技术总监
擅长:嵌入式开发

这个问题的实质不是DMA传到FIFO的速度,

对于播放声音:FIFO里的数据量少于某个阈值时,它就会申请DMA传输写入数据。

对于录音:FIFO的存够数据时就会申请DMA传输,把数据取走。

根本不存在控制DMA速度的问题,而是FIFO的阈值设置、程序能否及时提供数据、取走数据    

请先 登录 后评论
  • 1 关注
  • 0 收藏,464 浏览
  • 阿宁笑嘻嘻 提出于 2020-05-05 23:54