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.

[参考译文] AM263P4:SDFM 数据涡流中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1450629/am263p4-sdfm-data-rdy-interrupt

器件型号:AM263P4
主题中讨论的其他器件:SysConfigTMDSCNCD263PAMC1306EVM

工具与软件:

嗨、
我想让我的 SDFM 模块由 PWM 触发、并在发生 rdy 时读出数据。
因此、我尝试实现数据涡流中断、但它不会触发。
在 iAM 调试时、可以看到以下内容:

- SDIFLG。 SDFM 1 ->因此我假设我的硬件连接正常、并且 AF1=模块的新数据很慢

-SDCTL。 SDFM 1 ->为 MIE=启用了中断

-SDFIFOCTRL1.DRINTSEL=0 ->因此 AF1是数据类型中断的源

-INTXBAR0_G4_SEL = 2 ->因此 SD0.FILT1.DRINT 用作 R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_0

-VIM0_INTR_EN_SET_4 = 262144 ->因此设置了位18、这对应于  R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_0

但我的中断:


/*注册并启用中断*/
Hwip_Params_init (&hwiPrms);
hwiPrms.intNum = CSLR_R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_0;
hwiPrms.priority = 0;/*设置高优先级。 可选*/
hwiPrms.isPulse = 1;
hwiPrms.callback =&App_sdfmISR;
状态= HwiP_Construct (&G AdcHwiObject、&hwiPrms);

 不会被触发。

我的错误在哪里?

此外、是否有任何简单的方法可以查看在 SysConfig 中激活了哪些中断? 在调试中、唯一的方法是检查  VIM0_INTR_EN_SET 寄存器?

此致

Marcel

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

    尊敬的 Marcel:

    对于此处的延迟响应、我们深表歉意。 我在您的代码中看不到任何明显的内容。

    &gAdcHwiObject 的定义是什么? 我想知道是否应该有等效的&gSdfmHwiObject?

    您的代码是否使用 Hwip_enable()函数启用常规硬件中断?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/group__KERNEL__DPL__HWI.html#ga89a0a63fd819bbcb31064a60fc901629

    你的代码是否使用 SDFM_enableInterrupt ();函数启用 SDFM 特定中断?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/group__DRV__SDFM__MODULE.html#ga74fa1e0d1e842dd521a57615f8f2b8cc

    此致、

    Zackary Fleenor

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

    嗨、

    只需将 &gAdcHwiObject 重命名为&gSdfmHwiObject 、因为我以前测试过 ADC 中断。 但这不会改变任何东西。  

    我确实使用 Hwip_enable()函数启用常规硬件中断。

    在以下情况下启用 SDFM 特定的中断:

    此致

    Marcel

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

    嗨、Marcel、

    在测试过程中 ADC 中断是否正常工作?

    该 SDFM 配置发生在代码中的什么位置? 是否使用 SysConfig 生成各种头文件?

    您能否提供.syscfg 文件和相关的配置代码以供参考?

    此致、

    Zackary Fleenor

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

    嗨、
    是的、ADC 中断正常工作。
    IAM。 我无法正常上载 SysConfig、因此我在 example.c 中将其重命名、然后我会继续工作。  
    main.c 在大多数设置发生的地方调用 PWC.c。 os.c 不需要、可以添加注释。

    e2e.ti.com/.../pwc.ce2e.ti.com/.../example.ce2e.ti.com/.../6708.main.c

    此致、

    Marcel

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

    嗨、Marcel、

    感谢您的分享。 我能够将您共享的内容导入到 SysConfig 中。

    您能否共享您的 ti_drivers_open_close.c 文件?

    我没有看到下面用于将滤波器通道1的 SDFM 数据就绪中断映射到滤波器通道1的代码(尽管我意识到索引在这里关闭(SD1_FILT0而不是 SD1_FILT1)、将在内部为此生成一个票证)、映射到 INTXBAR0_OUT_0、它通过 HwIP_params 映射到您的 VIM。

    void Drivers_intXbarOpen()
    {
        /* INT XBAR */
        SOC_xbarSelectInterruptXBarInputSource_ext(CSL_CONTROLSS_INTXBAR_U_BASE, 0, 0, 0, 0, 0, ( INT_XBAR_SD1_FILT0_DRINT ), 0, 0, 0, 0, 0);
    }

    ADC 示例是否也依赖于 INTXBAR 路由?

    此致、

    Zackary Fleenor

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

    嗨、
    认为您可以 使用 systemconfig 生成 ti_drivers_open_close.c 文件。 然而:
    e2e.ti.com/.../ti_5F00_drivers_5F00_open_5F00_close.c

    是的、ADC 样本还依赖于 INTXBAR 路由。 我还将其路由到 INT_XBAR_0  

    此致、

    Marcel

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

    您好!

    是的、确实如此、我只想验证工程使用的是相同的自动生成文件。

    您能否提供有关 SDFM0_CLK 和 SDFM0_D[0:1]引脚连接的详细信息? 我想确认是否提供了适当的数据、否则、中断绝不会因设计而触发。

    此致、

    Zackary Fleenor

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

    嗨、

    IAM、使用 具有180引脚 controlCARD 集线站的 TMDSCNCD263P。 Σ-Δ 调制器 AAM、使用的是 AMC1306EVM。
    在 AMC1306和码头站之间建立以下连接:

    此外、引脚55 (HSEC_EPWM1_B)连接到集线站上的引脚72 (HSEC_SDFM0_CLK0)。

    我假设这是正确的、因为我已经看到了 SDIFLG。 AF1= 1表示数据可用。

    此致、

    Marcel

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

    嗨、Marcel、

    我正在努力获取其中一个 EVM、因此我可以尝试在我这边重现问题。 在这一点上、我没有发现任何明显的问题、所以我也会请一位同行的专家来审查。

    此致、

    Zackary Fleenor

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

    嘿、Fleenor、

    这里有什么进展吗?

    此致、

    Marcel

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

    嗨、Marcel、

    新年快乐! 为延误道歉,这已经通过假期和 OOO 的裂缝下降!  

    我通过您的 pwm.c 代码。 我找不到 SDFM 模块的任何中断标志清除 API。 您是否可以尝试  在中断注册后添加以下 API?

    SDFM_clearInterruptFlag(gSdfmBase, SDFM_MAIN_INTERRUPT_FLAG | <all the other related flags that are enabled to trigger interrupts >);
    谢谢。此致、
    Madhava
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我就像在示例代码中那样清除中断本身的 interruptflag。  
    注册后立即清除 interruptflag 解决了我的问题。

    谢谢!

    Marcel