完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我想问一下,串口如果使用DMA模式的话,有什么方法可以让我获得串口接收到的数据,除了函数getbuffer以及DMA通道回调事件触发的时候能够获得其handle的buffer。这两种方法虽然可以得到串口收到的数据,但是如果之前配置的缓存区没有满的话,我们是拿不到buffer,因此也拿不到他的数据。
此外,我也用了CyU3PDmaChannelSetWrapUp函数,能够在DMA通道缓存区未满时将其强制提交,从而获得缓存区。这个方法虽然好,但是我用一个线程任务专门执行这个函数,它竟然有次数限制,当超过了某一个次数的时候,它就不再使用,这是怎么回事呢? |
|
相关推荐
1个回答
|
|
你好!关于FX3使用DMA模式获取串口接收到的数据,除了你提到的getbuffer函数和DMA通道回调事件触发的方法,还可以尝试以下几种方法:
1. **轮询DMA状态**:你可以在主循环中定期检查DMA通道的状态,当发现数据已经接收到缓存区时,再调用getbuffer函数获取数据。 2. **使用中断**:如果硬件支持,你可以尝试配置中断,当DMA通道接收到数据时,中断会被触发。在中断服务程序中,你可以调用getbuffer函数获取数据。 3. **调整DMA通道配置**:尝试调整DMA通道的配置,例如增加缓存区大小或者减少触发DMA传输的数据量,以便更快地获取数据。 关于你提到的CyU3PDmaChannelSetWrapUp函数次数限制的问题,这可能是由于以下原因: 1. **资源限制**:硬件或软件资源有限,导致无法频繁调用该函数。 2. **软件错误**:可能是软件实现的问题,可以尝试检查代码或查阅相关文档,看看是否有关于该函数使用次数的限制。 3. **硬件问题**:如果硬件存在问题,可能导致函数调用次数受限。可以尝试检查硬件连接和配置。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
377 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6437 浏览 2 评论
4112 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3639 浏览 9 评论
1236 浏览 8 评论
468浏览 2评论
276浏览 2评论
387浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6449浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
473浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 11:23 , Processed in 0.660075 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号