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 外设同步至 PWM (SDSYNC) 不工作

Guru**** 2895600 points

Other Parts Discussed in Thread: SYSCONFIG, AM263P4

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1645615/am263p4-sdfm-peripheral-sync-to-pwm-sdsync-not-working

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

对于 AM263P4 处理器、我已将 SDSYNC 事件配置为在 PWM0 事件上发生。  但是、在 SysConfig 中启用或禁用 SDSYNC 事件似乎没有明显的效果。

我应该检查什么以确保它正在运行?  

数据读取未使用 SDFM FIFO、并且未启用 SDFM FIFO。  SDDATAx 源是否使用同步数据?

image.png
www.ti.com/.../spruj55d.pdf

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

    你好、Micah、

    SDSYNC 事件需要正确配置三项功能 — 如果缺少任何功能,切换 SysConfig 复选框似乎无效:

    1.验证是否在硬件中实际设置了`SDDFPARM.SDSYNC`

    在 SysConfig 中、确保在 DataFilter Settings 部分中启用了“Use PWM Synchronization“、并显式设置 SDSYNC 源(例如,“SDFM SYNC 源是 PWM0 SOCA“)[1]。 但不要仅信任 SysConfig—读回`SDDFPARMx`寄存器并确认位 12 (SDSYNC)= 1。 如果未设置该位、SDSYNC 信号在到达数据滤波器单元之前在第一个与门时关断。

    2.验证是否正确映射了`SDSYNCx.SYNCSEL`

    `SYNCSEL[5:0]`位选择哪个 PWM SOCA/SOCB 信号提供同步脉冲。 对于 PWM0 SOCA、`SYNCSEL`应为 0。 在生成的代码中或通过寄存器读取确认这一点。

    3.验证 PWM0 实际上正在生成 SOCA 事件

    SDSYNC 机制依赖于 PWM 模块产生 SOCA 脉冲。 如果 PWM0 未配置为生成 SOCA 事件、SDFM 将永远不会接收 SYNC 触发。 此外、确保 PWM 处于向上计数或向下计数模式 — 如果使用向上向下计数模式,则每个 PWM 周期只能保证一个 SDSYNC 事件、否则滤波器同步器通过在每个周期提供两个脉冲来破坏 SDFM 时序。

    4.通过检查数据就绪时间确认操作

    验证 SDSYNC 是否正常工作的明确方法:检查滤波器数据就绪中断是否与 PWM SOCA 周期保持一致、而不是以任意 SDFM 时钟间隔发生。 如果数据就绪事件为 PWM 对齐、则同步将激活。

    5.清除过时的中断标志

    AM263P4 上出现的一个相关问题:如果使用的是数据就绪中断、请确保在 ISR 注册后立即清除 SDFM 中断标志。 过时的预先存在标志可以防止触发新中断。

    SDDATAx 是否使用同步数据?

    是—SDDATAx 即使在未启用 FIFO 的情况下也能提供同步数据。

    SDSYNC 信号直接馈入数据滤波器单元、在该单元中、它会复位 DOSR 计数器并重新启动数据捕获。 SDDATAx 输出来自同步 SINCx 滤波器下游、FIFO 上游的“数据移位“块。 这意味着同步发生在过滤器流水线本身中、而不是在 FIFO 阶段。

    FIFO 的等待同步 (WTSYNCEN) 功能是一种*独立*机制、用于控制 FIFO 在 SDSYNC 事件后何时开始填充。 禁用 FIFO 时、该功能无关紧要。 直接 SDDATAx 读取将反映 PWM 同步滤波器输出。

    此致、

    Masoud

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

    我使 SDSYNC 函数可以运行、但为此、我必须手动修改 ti_drivers_OPEN_close 文件、并调用函数 SDFM_enableExternalReset () 使其正常工作。 我找不到任何将实际调用此选项的 SYSCFG 文件选项。 不确定是否 有方法可以 在没有手动干预的情况下将其显示在文件中

    此外、如果发生 SDSYNC 事件、SDDATA 寄存器中的预期数据是多少?  它是清除的还是保留上一个要在采集下一个样本之前采样的结果?

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

    您好、

    我可以将其报告给 SysConfig 团队。 有时、我们会看到 SysConfig 不支持所有函数。

    SDSYNC 不会对 SDFM 输入流本身进行门控。 SDFM 调制器数据/时钟继续连续运行、数据滤波器继续根据所选滤波器类型和 OSR 生成输出。 SDSYNC 事件用于将 SDFM 数据滤波器时序与所选同步源(例如 ePWM 事件)同步/复位。 因此、启用 SDSYNC 可能不会明显改变原始数据值、除非您观察到相对于 PWM 事件的滤波器时序/数据就绪相位。

    此外、SDDATAx 值是数据滤波器输出、因此它受 SDFM 数据滤波器配置的影响。 该路径不需要 FIFO。 FIFO 仅更改经过滤波的样本的缓冲/读取方式、而不需要进行同步的 SDFM 操作。

    此致、

    Masoud