用MSP430F5529 的USB模块做了个USB转串口,枚举为CDC类,现在功能已经实现,但是我想用DMA来传送数据,给怎么做?
想这样做,不知道行不行?
对于USB到UART,首先设置USB输出端点大小为64字节,当USB端点接收到64字节数据后,触发USB输出端点中断,在中断程序中,根据接收到的数据长度设置DMA块传输大小然后启动DMA传送,将数据传送到UART的TXBUF中,等DMA传送完毕后触发DMA中断,然后在DMA中断中清除USB输出端点的NAK位,继续接收数据,重复之前的过程,这样做行吗?有没有更简便的方法,比如不用DMA中断,只利用USB的输出端点中断或者不用任何中断就完成USB数据到UART的过程?
对于UART到USB,本想着是和USB到UART类似的思路,但发现不行,因为UART没有像USB的NAK那种流控制,由于无法知道UART接收到的数据的具体大小,所以没法设置DMA的块传输大小,这个该怎么办?
最后还有个疑问,看了手册里关于DMA的介绍,按我的理解有两个特性:
1、DMA传输过程中CPU是挂起的;
2、DMA传输过程中不响应其他中断
是这样的吗?如果真是这样,那这个DMA岂不是没用了吗?只所以利用DMA就是希望能把CPU解放出来来处理其他事务并响应各种中断,但是按照手册的描述,就没法实现了,求真相~
james yin:
你好 看了你的几个帖子 知道你也在做5529USB模块我也在做这个 但是目前遇到了问题能给个联系方式向你请教一下么