完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
见附件项目。
我试图读取512字节的UART数据到一个带有DMA的缓冲区。没有DMA-手动将数据传输到缓冲器中,该设置工作良好,使用“中断”作为包启动的信号,但是DMA不将任何数据传送到缓冲器。 知道我做错什么了吗?这是我的第一个DMA项目,任何帮助都是值得赞赏的。 谢谢你,汤姆 DMAX DMA.ZIP 2.5兆字节 |
|
相关推荐
6个回答
|
|
您启用了UART组件的缓冲区,该缓冲区将使用从FIFO到缓冲区的内部中断来传输接收到的数据。这是DMA应该做的工作。
您定义的中断是由中断信号看起来一点如果你休息后想将所有接收到的数据生成。不要再看了,不能工作,缓冲是一个内部循环缓冲区,你永远不会知道当前的地址。 我建议从FIFO BYT转移由字节到你接收使用DMA缓冲区,虽然这样做会使用中断一个UART连接相当足够了。 鲍勃 |
|
|
|
嗨,鲍伯,
谢谢你的回复。我应该解释我想要做的事情,这样你就可以看到我到底在做什么。数据以512字节的数据包发送。中断触发新的分组。我想做的是在每次中断之后,从最后一个数据包传输所有数据,并重新设置缓冲区(我没有在代码中这样做)。这能奏效吗? 如果我一个字节一个字节的话,我需要一个来自UART的ISR来检查一个新的数据包是否来了。我想在DMA组件内实现自动化。我应该提到,它不总是512字节,这是最大值。 在中断命令之后,重新设置缓冲区的最佳方法是什么?我如何告诉DMA复位到缓冲区的开始为读写? 谢谢你,汤姆 |
|
|
|
|
|
|
|
嗨,鲍伯,
感谢这个项目,我可以看到一些地方我犯了错误。我仍然没有任何转机。我注意到的一件事是,当您将UART缓冲区提高到4以上(在这种情况下为512)时,立即接收到的RX字节就出现了。我猜想,每次接收到数据元素时,都会跳过DMA,因此缓冲区永远不会填满(因为每次都被清除)。在DMA完成它之前,有没有办法在两个中断源之间进行解析?当做, 汤姆 |
|
|
|
DMA独立于CPU运行,因此您可能不使用任何设备中断。正如我之前所说的:为什么不使用中断而不是DMA呢?UART的速度是如此缓慢,有足够的时间来处理& 2000个CracaTe/s中断驱动,它是~200万波特。
鲍勃 |
|
|
|
嗨,鲍伯,
我有一个使用UART组件中断的解决方案。我只是调查DMA作为一个简单的,幕后的方式来完成同样的事情。我想在这种情况下我可能会坚持下去。 谢谢你的帮助, 汤姆 |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2100 浏览 1 评论
1846 浏览 1 评论
3664 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1782 浏览 6 评论
1532 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
556浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
410浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
433浏览 2评论
379浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
905浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 02:54 , Processed in 1.125210 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号