Linux SPI驱动在DMA模式下自发自收测试读到的数据后移1字节

zhaoli_824 2014-01-19 01:21:10
将SPI驱动配置为非DMA模式时,使用自发自收读到的数据和发送的一致。
当配置为DMA模式时,发送缓冲区 01 02 03 04 05 06, 执行完成后接收缓冲区的数变成了00 01 02 03 04 05,整体后移了一个字节,最后一字节丢失。

davinci_spi_master.c的代码整个看了一遍,不明白为什么在只读不写的时候需要在将发送的字节数设成count+1,但是代码在即读又写时却没有将发送字节数count+1,这样导致DMA的tx完成事件能触发,但rx完成事件无法触发。我把这部分代码改成如果即读又写时DMA的发送字节数设成count+1,此时rx完成事件可以触发,但出现了读到的数据整体后移一个字节,最后一字节丢失的问题。

我尝试只读不写时,也出现同样的问题。

希望有用DMA测试自发自收能OK的同学提供一下帮助,谢谢!
...全文
1568 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
AVR_DIY 2016-08-08
  • 打赏
  • 举报
回复
这个问题你解决了吗 ?我现在在6467下开发SPI驱动,使用DMA收发也出现你描述的问题。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧