减少中断延迟

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在进入我们的新论坛平台,将提供更好的功能,并包含在主对话框网站内。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-semicondiondiondumon.com/support.。我们将在未来几天修复错误/优化搜索和标记。
3个帖子/ 0新
最后一篇文章
Marcodg.
离线
最后一次露面:3年2个月前
加入:2015-01-14 17:58
减少中断延迟

你好,
我在GPIO引脚上产生了一个中断。当发生这种中断(每2ms)时,我需要通过DMA启动SPI传输。这一切都有效,但是从中断发生到第一个时钟输出到SPI设备时的时间是〜76微秒。我想将这个时间间隔延伸到<40微秒。

虽然我不知道这一切都花了什么,但绝大多数代码生活在HW_SPI_READ_BUF()和HW_DMA_CHANNEL_INITIALizialization()中。鉴于我的应用程序的工作方式,似乎在中断外部可以完成此代码的大多数。将代码留在中断内部,仅重置目标缓冲区并启用DMA通道。

它看起来并不是有一种方法来用当前的SDK这样做......你是否有任何建议,以实现这一目标的最佳方式,因为我没有良好的觉得代码需要的部分每次启动传输,哪些部件保持不变,都完成。

谢谢,
马可

设备:
Marcodg.
离线
最后一次露面:3年2个月前
加入:2015-01-14 17:58
所以,我实施了两个新的

因此,我在HW_SPI中实现了两个新功能。[CH]。除了启用DMA通道之外,首先执行HW_SPI_READ_BUF()执行。第二个更新源/目标地址并启用DMA通道。中断延迟减少到36us,这是可接受的。

我不喜欢修改SDK源,所以可能包括这个功能,因为它看起来似乎是一个明显的解决方案,其中SPI连接到单个设备并及时维修它是重要的(同样重要的是不花钱在第一个地方束在ISR中)。

马可

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨marcodg,

嗨marcodg,

我会假设您处于缓存模式,并且您面临的是代码执行档位,而是由于从闪存中获取代码,设备停止的事实。从您可以从您的帖子中了解的是尝试减少将HW_SPI_READ_BUF()函数缩短到两个单独的函数,因此您在闪存中更改了代码定位,因此这两个函数较小的尺寸较小,缓存或保留也许,从闪存中没有额外的时间延迟获取代码。尝试在从中断中调用的函数中添加__retained_code前缀,以便它们保存在Sysram中,如果我是正确的,那么应该改善系统的响应时间。

谢谢mt_dialog.