zhaoli_824 发表于 2014-01-19 00:56

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

将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的同学提供一下帮助,谢谢!
页: [1]
查看完整版本: Linux SPI驱动在DMA模式下自发自收测试读到的数据后移1字节