当前位置: 代码迷 >> 驱动开发 >> DMA的有关问题
  详细解决方案

DMA的有关问题

热度:45   发布时间:2016-04-28 11:07:38.0
DMA的问题
我想使用DMA从Memeory搬数据到UART tx fifo 进行发送,因为memory是32位的,DMA控制器设置的长度tansfer size实际上是
word为单位,这样如何发送奇数字节的数据?请高手们赐教,谢谢!

------解决方案--------------------
不足一个Word的部分发送一个Word,多出的字节丢掉。
------解决方案--------------------
奇数字节的数据你可以补充为偶数字节嘛,只需要定一个协议即可,没用的数据抛掉
------解决方案--------------------
DMA控制寄存器配好,它会自动搬运的,不用太担心那个丢失,一般总线会自己动填补不足的字节,而不会丢失字节
------解决方案--------------------
楼主的情况是,memory是DWORD类型,DMA只支持WORD transfer,你的这种情况是无法传送基数字节的,比如你要传送23个字节,那么既然memory是DWORD类型,最接近的情况是送出24个字节(4Bytes * 6),多一个字节,那就需要你将多出的一个字节设置为‘0’,或0x5a(随你自己定义),接收方与发送的通信规约要定义好,最后一个自己可以定义为结束符号,或者无效数据(当然这会有一点影响速度,要看硬体处理能力)。

方法和形式不是最重要的,重要的是在最短开发周期内实现功能、满足性能。
------解决方案--------------------
楼上正解!!
  相关解决方案