完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件:TC364
软件(用于 QSPI 和 DMA 驱动程序的 iLLD) 目标:我想通过 QSPI+DMA 一次发送 3x 个 8 位信息,但不触发任何 CPU 中断。 GPIO 配置 问题是,当我开始使用 iLLD 的函数时(见下文) IfxQspi_SpiMaster_exchange( sQspiMaster_Channel_Handle,src,dest,count); 我的传输总是在传输完第二个有效载荷后停止,第三个有效载荷总是丢失,看起来 SPI 传输永远不会完成。 但一旦我更改了 isrProvider,比如 通过使用软件中断例程,我可以在一个卷中成功发送 3 个有效载荷 但这并不是我想要的,我需要实现一种机制,在不中断 CPU 的情况下发送有效载荷 谁能帮我解决这个问题? 1. 我的配置是否正确? 2. 是否有英飞凌示例代码可以实现我正在寻找的功能(SPI + DMA 传输而不触发 CPU 中断)? 谢谢 |
|
相关推荐
1个回答
|
|
要在不触发CPU中断的情况下实现QSPI+DMA发送信息,您需要使用DMA(直接内存访问)控制器来管理数据传输,而不需要CPU干预。以下是实现此目标的步骤:
1. 配置QSPI接口:首先,您需要配置QSPI接口以实现SPI通信。这包括设置波特率、时钟极性、相位和数据帧格式等参数。 2. 配置DMA通道:接下来,配置DMA通道以在QSPI和内存之间传输数据。这包括设置源地址、目标地址、传输大小和传输类型等参数。 3. 初始化QSPI和DMA驱动程序:使用iLLD(集成低级驱动程序)库初始化QSPI和DMA驱动程序。这将确保硬件和软件之间的正确通信。 4. 使用DMA传输数据:在不触发CPU中断的情况下,使用DMA传输数据。这可以通过将DMA配置为轮询模式或使用DMA中断来实现,但您需要禁用CPU中断处理程序。 5. 检查传输状态:在传输过程中,您需要定期检查DMA传输状态,以确保数据已正确传输。这可以通过轮询DMA状态寄存器或使用DMA中断来实现。 6. 处理丢失的有效载荷:根据您的描述,传输在第二个有效载荷后停止,第三个有效载荷丢失。这可能是由于DMA配置错误或QSPI传输问题导致的。检查DMA和QSPI配置,确保它们正确设置以支持所需的传输大小和类型。 7. 优化代码:最后,优化您的代码以确保在不触发CPU中断的情况下实现高效的QSPI+DMA传输。这可能包括调整DMA传输参数、优化内存访问和确保代码在传输过程中不会阻塞。 通过遵循这些步骤,您应该能够在不触发CPU中断的情况下实现QSPI+DMA发送信息。请注意,实现此功能可能需要对硬件和软件进行详细的调试和优化,以确保数据传输的可靠性和性能。 |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
2977 浏览 2 评论
3994 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3470 浏览 9 评论
1128 浏览 8 评论
3407 浏览 7 评论
284浏览 2评论
137浏览 2评论
248浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
2979浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
283浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 15:35 , Processed in 0.628372 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191