完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在开发一个使用 MIMXRT1020 的嵌入式项目。在项目中,我们有一个使用内部 ADC 的采样链,速度约为 300kHz。采样链如下所示:PIT 触发 ADC_ETC,ADC_ETC 在转换完成时触发 DMA。当 DMA 已存储 256 个样本时,将触发软件中断以允许将这些缓冲区传输到更大的缓冲区。当 10 个 DMA 缓冲区被接收时,DMA 中断调用一个函数。该函数每 8.5 毫秒执行一次 ((256*10)/300k = 8.5 毫秒)。
每 500 毫秒,另一个任务,任务 2,在其他一些大缓冲区上执行一些计算。执行计算大约需要 20 毫秒。一些 FFT 和缓冲区传输是在计算过程中完成的。我们意识到,在 20 毫秒的计算期间,DMA 中断调用的函数不是每 8.5 毫秒调用一次,而是以更高的时间延迟调用。我们怀疑这可能是总线问题。在任务 2 中完成所有加载和存储后,我们认为任务的所有 RAM 访问可能会延迟一些 DMA 传输。当我们停止任务 2 时,函数调用没有延迟。 我们已经阅读了系统中的总线,并尝试在不同系统的 RAM 中重新组织缓冲区位置,但它没有改变任何东西。这是我们的理解: 1)DMA连接到IP总线。 2)OCRAM连接到AXI64总线。 3) ITCM和DTCM连接到TCM接口。 是否可以将 DMA 缓冲区放在 OCRAM 中,将任务的缓冲区放在 DTCM 或 ITCM 中,以便在 ARM 内核执行加载或存储时,它不使用 AXI64 总线?这段时间IP总线和AXI64总线会被DMA用来写OCRAM中的sample吗?是否有另一种内存配置可以帮助我们实现我们想要做的事情?有没有办法优先处理 DMA 传输? |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36419 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4849 浏览 1 评论
6106 浏览 1 评论
6816 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4247 浏览 0 评论
644浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
640浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
642浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
728浏览 2评论
843浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:42 , Processed in 1.035184 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号