完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
亲爱的大家,
我尝试读出从外部 adc (AD7768) 流式传输到 uC 的 ADC 数据。我想做的是或多或少直接通过 USB CDC 流出数据。 因此,我打算在SPI和USB之间使用DMA。然而,这并不能始终如一地工作。似乎可能存在时间问题,几秒到几分钟后,通过 USB 的传输停止。 目前,我只在 while(1) 之前启动 HAL_SPI_Receive_DMA,并在调用 USB_CDC_TX 之前在接收完成回调中再次启动。另一件奇怪的事情是,只要我在 USB_Transmit_complete 函数中执行某些操作,例如 HAL_Delay,代码就会再次停在这里。 有什么我错过的吗?甚至可以通过这种方式将 USB 与 DMA 和 SPI 一起使用吗? 我还尝试了中断,在这种情况下,代码不会停止。但是,只要我不在 CDC_Transmit_Complete 函数中放置任何内容。 我期待着您的回复。 非常感谢你提前 最好的祝福 本
|
|
相关推荐
1个回答
|
|
在我看来,HAL_SPI_RxCpltCallback 里面的东西太多了。最好的方法是调用 HAL_SPI_Receive_DMA 并使其以循环模式无限运行,然后使用 DMA MEM2MEM 将数据泵送到安全的内存位置,在主 while 循环中将其发送到 USB。如果您使用两个回调:
HAL_SPI_RxHalfCpltCallback HAL_SPI_RxCpltCallback 和 MEM2MEM 在他们每个人内部转移,就像这样:
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2298 浏览 1 评论
3058 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1632 浏览 1 评论
3446 浏览 6 评论
5799 浏览 21 评论
790浏览 4评论
1165浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
434浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1146浏览 3评论
1197浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-23 11:23 , Processed in 1.447991 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191