This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 在计时器中断例程中调用 SPI 中断

Guru**** 2440240 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LS0432

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/626633/calling-spi-interrupt-in-timer-interrupt-routine

主题中讨论的其他器件:HALCOGENTMS570LS0432

您好!

我将 TMS570LS0432用于计时器和 SPI 我在 HALCoGen 文件夹中的参考示例用于 SPI 和计时器中断模式设置。  

当我在 main 函数中调用 SpiSendandGetData 函数时、我从从从器件接收到正确的数据、但当我在100ms rtinostificaion 中调用同一 SPI 函数时、我会得到错误的数据

如果我的中断选择设置有误、请提供解决方案。

定时器和 SPI 中断都是 IRQ 中断。

谢谢、此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果 SPI 是主器件、则从计时器中断调用 SpiSendandGetData 没有问题、SpiSendandGetData 函数只是设置结构并启用中断。 当 SPI 为从器件时、我不确定使用计时器功能是否合理、因为 SPI 传输的时序由主 SPI 决定。 如果主器件每100ms 发送一次数据、只需设置从器件接收数据。 它将一直等到主器件发送数据、然后您将获得 SPI 中断(RX 和/或 TX)。 立即为下一次交换设置从器件 SPI。 在下一个100ms 通过且主器件启动传输之前、不会发生下一个传输。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速回复

    对于 IRQ 中断模式下的 RTI 和 SPI、它不工作。

    在数据表中、我读出无法在另一个 IRQ 中断中调用 IRQ 中断。 这就是我认为它 不起作用的原因

    但是、当我在 FIQ 中断中设置 SPI、在 IRQ 中断中设置 RTI、那么我将在 SPI 端口上获得正确的数据

    但是、我需要另一个优先级最高的中断、而不是 SPI 和 RTI、然后是如何设置中断的优先级。

    您能否提供有关可重入中断处理的任何信息或有关如何为 HALCoGen 创建可重入中断的任何示例代码。

    感谢您...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sameer、您好!

    强烈建议不要将中断嵌套用于安全应用。

    您的应用是否以任何安全为目标?  

    通常、ISR 必须非常快速、因此应尽可能减少代码。

    CPU 一旦进入 IRQ 模式就会自动禁用 IRQ 以避免嵌套 IRQ。
    可以在 IRQ 服务例程内重新启用 IRQ。 但是、我不建议执行此步骤、除非作为用户、您知道必须注意哪些上下文。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。
    我的应用与安全相关。
    但是您没有告诉我如何中断 FIQ 例程、因为我正在运行 RTI IRQ 中断100ms
    在 RTI 中断中、我将以 FIQ 中断例程模式发送 SPI 数据。假设我想要优先级高于上述 RTI 和 SPI 中断的其他中断、那么我可以如何解决此问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    FIQ 应是最高水平、不应被中断。 下面是一个讨论 IRQ 上嵌套中断的应用手册。 在大多数情况下、不需要嵌套中断。 中断例程应该很短、并且只执行高度严格的时间关键任务。 广泛的计算应该留给主例程处理、也许在中断例程中设置了一个标志、以通知主循环处理新数据。
    www.ti.com/.../spna219.pdf