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.

[参考译文] RM46L852:链接 MibSPI 传输组的传输

Guru**** 2393725 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/772863/rm46l852-chaining-transmission-of-mibspi-transfer-groups

器件型号:RM46L852

对于我们的应用、我认为传输多个 mibSPI 传输组的最明智的方法是通过软件触发器(即 mibspiTransfer())启动第一个 TG、然后将剩余的传输链接到上一个传输组的传输完成中断。

两个问题:

1)您能否在 mibspiGroupNotification()的用户实施中合理地调用 mibspiTransfer()?  (当我尝试此操作时、大约15次尝试发送第二个 TG 时不会发生。)

2) 2)这种方法是否合理、或者我是否错过了这样做的预期方式?

一些注意事项:

  • 当前配置为触发事件= TRG_Always、触发源= TG_Disabled、缓冲模式= 4且启用单次触发的所有 TG。
  • DMA 未被执行。  这可能是未来的事情、但正如我所理解的那样、这基本上是不相关的。

谢谢!

戴维

(编辑:已将缓冲模式设置添加至注释。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    它应该起作用。 请禁用正在通过向 TGxCTRL 寄存器中的 TGENA 位写入1来调用中断的 TG。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我犯了一个错误、在我的原始帖子中可能是一个非常重要的遗漏:
    所有第2个 TG 传输都发生了;它们偶尔会比我预期的延迟要高很多。
    -第一个 TG 传输完成中断在 RTI (较高优先级)中断激活时发生。

    因此、当初始 TG 传输在 RTI 服务期间正常工作时、直到 RTI ISR 完成后才能处理第一个传输完成中断。 正确的做法是假定这非常简单、因为处理器不(不分色)处理嵌套中断?

    如果用户希望在运行主应用程序时允许 MibSPI 等中断服务、而主应用程序当前不是 RTI 比较中断、这是对这些选项的良好总结吗?
    1) 1)将 MibSPI 中断从 IRQ 切换到 FIQ。

    2)不要将应用程序代码放入 RTI ISR 中-例如、在 RTI 比较中断设置了一个标志(或者可能有更好的方法?)之前阻止应用程序的执行。

    另外、对于您的初始建议、您是否打算向 TGENA 写入0? 现在这可能无关紧要。

    提前感谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您的更新。
    您是对的、Hercules MCU 不处理嵌套中断。
    FIQ 可以中断 IRQ、但 IRQ 不能中断 FIQ。
    抱歉、为 TGENA 写入0会禁用 TG。 在 OneShot 模式下、传输完成后将清除 TGENA。

    此致、
    米罗