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.

[参考译文] RM48L952:MinSPI:无法清除传输组中断

Guru**** 2480725 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/667257/rm48l952-minspi-cannot-clear-transfer-group-interrupt

器件型号:RM48L952
主题中讨论的其他器件:HALCOGEN

您好!

我 无法清除传输组中断、既无法通过设置 TGINTFLG 中的位也无法通过读取 INTVECT0来清除。

我将使用一个组传输全部128个缓冲区、我看到传输完成、但我无法清除中断。 实际上、即使通过使用 Halcogen 函数"mibspiIsTransferComplete"、它也会在第一次传输后始终发出 true 信号。

读取 TRM "24.9.30传输组中断标志寄存器(TGINTFLG)"应该很容易、但它不起作用。

我在论坛上读到过其他问题、但没有明确的答案(例如"e2e.ti.com/.../641830

是否存在任何已知问题?

谢谢、

Valerio

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

    您是否对 TX/RX 数据使用多个组? 在多缓冲模式中、INTVECT0包含最高优先级传输组的中断。 对 INTVECT0的读取会自动导致下一个优先级最高的传输组的中断状态被载入到 INTVECT0中、并且其相应的挂起标志被载入到 SUSPEND0中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我已经了解了 INTVECT0中的优先级、但现在我仅使用组0。

    在第一个传输结束后、我从 INTVECT0读取的数据始终为0x00000002、这意味着组0、它是正确的。 但是重读操作不会像预期的那样得到零、但同样的值、即使通过使用 mibspiIsTransferComplete()重置标志也是如此。

    我尝试提取一个有关这个的最小示例、它基于 TI 示例"spna231 -使用 MibSPIP 模块的高速串行总线"、 不幸的是,我无法使中断像在我的应用程序中一样工作,但即使在轮询该寄存器和调用 mibspiIsTransferComplete()时也可以看到问题。

    我以这种方式更改了您的示例:

    使用 MibSPI1而不是 MibSPI5 (因此更改了 DMA 请求行)
    使用128 MIB 缓冲区而不是64
    使用一个 SIMO 而不是并行。
    另一方面、我有另一个 RM48从器件、它移动 ENA 信号、我看到接收数据正确。

    这让我担心、因为我看不到一种明确的方法来识别事件"传输完成"。

    这是主代码(IAR 工具)。 谢谢你

    e2e.ti.com/.../5100.mainTest.cpp

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我想就这一问题分享我的最后成果。
    问题似乎是我始终使用触发事件、禁用触发源和禁用 OneShot 传输。 这是因为我想作为软件来触发传输。
    在这种配置下、INTVECT0和 TGINTFLG 不能如文档所述工作、因此无法在传输后将其复位。
    但是、启用 OneShot 传输时、一切开始按文档记录工作(可能即使为组选择触发器也会解决问题、但我尚未尝试)

    这不是我希望它工作的方式、因为我每次都需要重新启用该组、从而失去了使用 DMA 进行连续传输的可能性。

    是否有 TI 人员可以解释 INTVECT0和 TGINTFLG 的真实(超出官方文档)重置行为?

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

    Valerio、您好!

    很抱歉耽误你的回答。 我在电路板上进行了测试、无法产生您的问题:

    1.产生中断(TG0):TgIntVec0的位2被置位、TgIntFlg 寄存器的位16被置位:

    2.通过读取 TgIntVec0来清除该位:

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

    您好!

    我使用您的代码进行了测试、并通过读取 TG 中断矢量0: INTVECT0来清除中断

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    感谢您的关注。
    是否始终禁用触发事件、禁用触发源和禁用 OneShot 传输?
    我很惊讶、它能为您服务、您是否可以拥有完整的示例、以便我可以与我的进行比较以找出我的错误?

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

    Valerio、您好!

    我使用您的代码对其进行了测试。 我将函数 TestEntryPoint()复制到 sys_main(),并在 main()中调用它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、但我想/希望我的初始化出错、请发布包含 halcogen 项目的完整示例、以便我可以与我的进行比较。

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

    您好、Valerio、

    附件是我用于测试您的功能的项目。 这个项目被用于测试 MibSPI 回路。

    e2e.ti.com/.../0777.TMS570LC4357_5F00_MibSPI.7z

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    我查看了您的 Halcogen 配置、我看到您的传输组设置了触发事件节拍、禁用了触发源并启用了 OneShot 传输。 如之前的消息(2018年3月6日下午4:30和2018年4月18日上午10:25)中所述、即使是我也可以使用该配置。 问题在于、当您设置触发事件始终、禁用触发源和禁用 OneShot 传输时。

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

    这种组合意味着 SPI 连续传输。 INT 始终被置位。