减少中断延迟

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

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

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

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

谢谢,
马可

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

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

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

马可

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

嗨marcodg,

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

谢谢mt_dialog.