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.

[参考译文] TDA2P-ACD:TDA2P 上的 I2C5 配置和 IRQ 映射问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1642470/tda2p-acd-i2c5-configuration-and-irq-mapping-issues-on-tda2p

器件型号: TDA2P-ACD

TI 团队大家好

我目前正在 TDA2PHVRQACDQ1 平台上启用 I2C5。 但是、我遇到了中断处理和内核稳定性问题。

我已配置以下寄存器用于时钟门控和引脚多路复用:

Name 物理地址 十六进制值
CM_IPU_I2C5_CLKCTRL 0x4A00 5578 0x2
CTRL_CORE_PAD_McASP1_AXR0 0x4A00 3748 0x60004
CTRL_CORE_PAD_McASP1_AXR1 0x4A00 3744. 0x60004

执行写入请求时、消息会正确发送。 但是、 消息之间存在 1 秒的延迟。 这似乎是由超时驱动的执行、而不是由中断驱动的执行。

预期的行为是让中断触发异步回调以立即处理下一条消息。 目前没有发出或处理中断。

image.png

附加辅助测试:IRQ 映射和核心崩溃:  

作为排除中断缺失问题的辅助测试、我尝试 使用交叉开关寄存器手动将 I2C5 中断映射到 IPU2 上的 IRQ 48。

  • 注册: CTRL_CORE_IPU2_IRQ_47_48 (0x4A002884)

  • 操作: 将该 IPU2_IRQ_48 字段设置为 55 (I2C5_IRQ)。

问题: 无论之前的配置如何、每当我尝试写入此寄存器或将此映射初始化为替代解决方案时、我都会遇到 内核崩溃/异常

 

问题:

  1. 是否 CTRL_CORE 需要特定的序列或先决条件(例如锁定/解锁寄存器)才能写入 IRQ 交叉开关?

  2. 在这个特定的 TDA2P 型号上、I2C5 的正确交叉开关实例 ID 是否为 55?

  3. 对于交叉开关逻辑、是否存在任何其他时钟或电源相关性、我可能会缺失?

如果您对如何正确路由该中断提供任何指导、我们将不胜感激。

此致、

Rodrigo Rubio

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

    尊敬的 Rodrigo:

    假设您使用的是最新的 Processor Vision SDK 是否安全

    1.我认为寄存器上存在锁定、您需要解锁才能将其用于 IRQ、请参阅  TRM 中的第 20.4.6.8 节“存储器区域锁定寄存器“。

    您的寄存器是 IRQ 寄存器之一。

    查看 API 文档  ti_components/drivers/pdk_01_10_01_06/packages/ti/csl/docs/doxygen/html/group___s_o_c___d_e_v_i_c_e___x_b_a_r.html

    计时器应用中有一个示例、您可以查看:  ti_components/drivers/pdk_01_10_01_06/packages/ti/csl/example/timer/timer_app/main_m4.c

    2.是的、请参阅  /ti_components/drivers/pdk_01_10_01_06/packages/ti/csl/soc/tda2px/csl_device_xbar.h

    3.可以、应该启用 i2c5 模块。

    -Josue