发新帖我要提问
123
返回列表
打印

MSP432 uartDMA如何接收超过1K的数据

[复制链接]
楼主: ccczzzyyy
手机看帖
扫描二维码
随时随地手机跟帖
41
junzhao6120| | 2017-7-20 13:08 | 只看该作者 回帖奖励 |倒序浏览
ccczzzyyy 发表于 2017-7-18 13:34
我看的driverlib里面dma有5个例子,但没有连续收发的啊。论坛里的是TI的讨论还是别的板子的讨论呢?
...

有资料分享吗

使用特权

评论回复
42
白哎哎| | 2017-7-20 18:50 | 只看该作者
学习

使用特权

评论回复
43
ccczzzyyy|  楼主 | 2017-7-21 13:40 | 只看该作者

这个怎么发给你啊,我是用的ccsIDE,然后里面View-Resource Explorer有。我是之前下了官网例程的,在这个地方可以自动打开例程看,但是下载的源文件比较大,里面东西很多,我找了很久都没找到原始例程代码的文件,你可以自己在上面那个地方,用ccs下载比较方便

使用特权

评论回复
44
ccczzzyyy|  楼主 | 2017-7-21 13:49 | 只看该作者
回复下,最后我还是没有实现DMA接收超过1024的数据,现在改用uart接收中断来收的数。不知道怎么配置DMA接收超过1024的,我考虑的,另一头串口不断给我的receive寄存器填数,我同时通过DMA把寄存器里的数转到某个1024的缓存区;当这个1024缓存区被填满,但另一头串口还在给我发数的时候,(如果要实现DMA连续接收)就要在下一个receive寄存器被填上之前,把DMA缓存区的数全部移出来,再把DMA指针移到数组头(要不然这个数就丢了)。我没有实现,感觉有点难,receive来的很快,要在很短的时间内把1024的数据转移,我感觉有难度。要不就换个思路,把DMA那个缓存区设成环形队列?或者别的方法…
我就考虑这么多了,自己没有实现,给大家分享下我的看法。

使用特权

评论回复
45
tongbu2015| | 2017-7-22 14:39 | 只看该作者
1K的数据还不是比较大的,分开传输的

使用特权

评论回复
46
一周一天班| | 2017-7-22 15:08 | 只看该作者
想开点,都是收数据同时也在处理数据,傻傻的等1024数据收完一次处理的方式不是人干的事情。任意长度数据包都可以。你得制定个合理合适的通信协议,有包头,长度,校验。不要傻乎乎直接传原始数据。这样多少多大数据都不是问题。

使用特权

评论回复
47
ccczzzyyy|  楼主 | 2017-9-30 11:43 | 只看该作者
一周一天班 发表于 2017-7-20 09:17
你要先做出串口驱动程序,不管串口中断,DMA,对外接口都是一样的。正规做法是串口中断+队列,或者DMA+队列 ...

有道理,我还是个菜鸟,学的慢。

使用特权

评论回复
48
vivilzb1985| | 2017-9-30 22:49 | 只看该作者
这个是需要边接受边存储的

使用特权

评论回复
49
ccczzzyyy|  楼主 | 2017-10-13 16:28 | 只看该作者
一周一天班 发表于 2017-7-20 09:17
你要先做出串口驱动程序,不管串口中断,DMA,对外接口都是一样的。正规做法是串口中断+队列,或者DMA+队列 ...

前辈,最近几天看了RTOS的一些东西,感觉和您说的很像。您说对外暴露接口,用队列去接收数据;然后数据处理是针对队列的,无关串口的事。是不是指的硬件中断和软件中断,把二者分开。硬件中断接收数据,类似环形队列;到一定时候触发软件中断,然后用软件中断去处理数据。
您之前说的串口驱动程序,是在操作系统和不带操作系统的空板子上都可以跑的是吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则