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.

[参考译文] TDA4VH-Q1:配置多个 GPIO 中断时出现问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1578851/tda4vh-q1-problem-with-configuring-multiple-gpio-interrupts

器件型号: TDA4VH-Q1

嗨、  我尝试在 MCU 域的下降沿配置四个 GPIO 中断。 其中三个在硬件中工作、但最后一个不会触发回调。 因此、我交换了 GPIO_PinConfig gpioPinConfigs[]数组中的中断配置顺序(我只更改了这一个)、第四个开始工作、而第一个停止工作。 pdk_j784s4_10_01_00_25 中是否有一个定义来定义 GPIO 中断的最大数量?  

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

    您好、

    感谢您提供此信息。 没有为启用的最大 GPIO 中断数定义。 这方面没有软件限制。

    我在 GPIO 驱动程序中运行了一些测试、并观察到注册中断时出现了相同的问题。 我会向开发团队提出此错误、并专注于在 SDK 中实现修复。

    能否介绍一下您正在使用的 GPIO 引脚?

    谢谢、

    Neehar

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

    感谢您的答复。  
    我使用的是 GPIO33、GPIO34、GPIO35、GPIO27。  

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

    尊敬的 Mikolaj:

    让我运行一些测试、然后返回给您。

    谢谢、

    Neehar

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

    尊敬的 Mikolaj:

     如果 内的 GPIO_setConfig_V0 () 函数出现以下情况、则会出现主要问题  DRV/GPIO/GPIO/V0/GPIO_V0.c src

    if ((portHwiCreatedBitMask & gpioPortIntBitMask) == 0U) {
    

    我认为这会阻止所有 GPIO 引脚的 GPIO 中断注册发生。 您能否测试注释内容并查看您是否可以在所有 GPIO 上注册中断?

    谢谢、

    Neehar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的答复。
    我对其进行了测试、并且可以在我的硬件上运行。 我担心这一变化、因为我不确定它会如何影响其他功能...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mikolaj:

    感谢您对此进行测试并确认问题的根本原因。  

    我担心这一更改、因为我不确定它会如何影响其他功能...

    是的、您是对的、这不是驱动程序中此 GPIO 错误的官方补丁。 这已报告给开发团队、他们正在努力在 SDK 版本中提供修复。

    谢谢、

    Neehar

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

    你好 Neehar、  

    我们注意到您的提示无法解决问题。  向代码中添加提示后、另一个 MCU 上的中断停止工作。

    尝试以下配置:
    GPIO33 MAIN_GPIO_PORT MCU2_1
    GPIO34 MAIN_GPIO_PORT MCU2_1
    GPIO35 MAIN_GPIO_PORT MCU2_0
    GPIO27 MAIN_GPIO_PORT MCU2_0

    并且内核 MCU2_1 上的中断已停止执行。


    谢谢、
    Mikolaj

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

    尊敬的 Mikolaj:

    这无法完全解决该问题、开发团队正在分析该问题以在 SDK 版本中进行修复。

    因此、您当前的状态是 MCU2_0 上的 GPIO 没有中断问题、但 MCU2_1 上的 GPIO 不起作用? 中断注册是否传递诸如 GPIO_socConfigIntrPath () 的返回值?

    尝试以下配置:
    GPIO33 MAIN_GPIO_PORT MCU2_1
    GPIO34 MAIN_GPIO_PORT MCU2_1
    GPIO35 MAIN_GPIO_PORT MCU2_0
    GPIO27 MAIN_GPIO_PORT MCU2_0

    此外、我不建议使用这种 GPIO 配置、因为您的同一组中有 GPIO 会在不同的内核上生成中断。 由于我们的驱动程序使用分组中断、因此可能会导致 MCU2_0 或 MCU2_1 上发生错误中断。

    谢谢、

    Neehar

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

    你好 Neehar、  
    确切地说、当前状态是 MCU2_0 上的 GPIO 正常工作、我们正在观察已执行的回调、但 MCU2_1 上的 GPIO 无法正常工作。 我稍后会在找到时间时检查返回值。

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

    尊敬的 Mikolaj:

    谢谢,我将等待回听  gpio_socConfigIntrPath () 的返回值。

    MCU2_1 GPIO 以前没有任何问题? 由于这些内核位于不同的内核上、我不希望中断注册出现任何冲突、因为每个内核都分配了特定的中断线路。 它将取决于 GPIO_socConfigIntrPath () 中使用的值。

    谢谢、

    Neehar

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

    尊敬的 Mikolaj:

    接下来、该问题是否仍然存在?  

    谢谢、

    Neehar

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

    你好 Neehar、
    问题仍然存在、但我尚未使用调试器检查寄存器值  

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

    尊敬的 Mikolaj:

    感谢您的更新、我将等待您了解 GPIO_socConfigIntrPath () 的返回值。

    谢谢、

    Neehar

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

    你好 Neehar、

    GPIO_socConfigIntrPath () 仅在两个内核 (MCU2_0 和 MCU2_1) 上返回 0 值

    很抱歉、您的回答很长。  

    此致  
    Mikolaj


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

    尊敬的 Mikolaj:

    此外、我不建议使用此 GPIO 配置、因为您在同一组中有 GPIO、可以在不同的内核上生成中断。 由于我们的驱动程序使用分组中断、因此可能会导致 MCU2_0 或 MCU2_1
    上发生错误中断

    您是否更新了您是否对每个内核的 GPIO 分配进行了任何调整? 这可能会导致将来出现严重问题。

    GPIO_socConfigIntrPath () 在两个内核 (MCU2_0 和 MCU2_1) 上仅返回 0 值

    我建议使用以下 常见问题解答中的信息 以及有关设置目标 IRQ 的信息来手动调整 DST_HOST_IRQ 值。 然后检查 Sciclient_rmIrqSet() 的返回值。 我们已经向开发团队提出了此问题、他们正在努力发布此问题的修复程序。

    谢谢、

    Neehar