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.

[参考译文] TMS320F28075:SDFM:PWMSYNC 正在复位 SDDATA 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/755812/tms320f28075-sdfm-pwmsync-is-resetting-the-sddata-registers

器件型号:TMS320F28075
主题中讨论的其他器件: AMC1303E2510

您好!

我使用 TMS320F28075 SDFM 的滤波器2和3从2个单独的 AMC1303E2510芯片读取曼彻斯特编码输出。 AMC1303E2510有其内部生成的10MHz CLK、因此我使用 CMPC 和 ePWM12的 CMPD 来同步 SDFM2的滤波器2和3。

在"Texas TMS320F2807x Tech Ref spruhm9b"文档的第12.1.2节中、它指出"FILRES 输入不会复位滤波器单元中的数据寄存器"。 然而、在测试期间、我发现 ePWM12.CMPC 和 CMPD 将 SDDATA 寄存器设置为0。

在我的代码中、我有一个中断来读取 SDFM SDDATA 寄存器。

-在中断开始时、读取 SDFM 数据寄存器、它们是一些非零值。

然后、中断等待、直到 EPWM 计数器通过 CMPC 和 CMPD。

然后它再次读取 SDFM SDDATA 寄存器,现在它们已设置为0。

我想知道、当 ePWM12.CMPC 和 CMPD 被用来复位滤波器时、您是否可以确认 SDDATA 寄存器的行为。 SDDATA 是否复位为0?

谢谢、

费尔加尔

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

    您能否为我提供有关您如何看待此行为的设置? 您如何为 SDFM 数据寄存器相对于 PWM 同步的读取计时?

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

    您好、Manoj、

    我已经附加了项目的主.c 文件。 下面我还粘贴了读取 SDFM 寄存器的 ISR 的相关代码段。

    当 ePWM1计数器为0时、会触发 epwm1_ISR。 它配置为向上计数模式。 PWM 周期被设定为 SDFM 采样周期的4倍。 这是因为在 PWM 同步之后、前两个 SDFM 输出值不正确(使用 SINC3滤波器)。 ePWM12的设置与 ePWM1相同、并通过由 ePWM10和11馈送的来自 ePWM1的同步脉冲输入与 ePWM1计数器同步。

    ePWM12.CMPC 和 CMPD 被设定为 SDFM_RESET_CMP_VALUE。  设置 SDFM_RESET_CMP_VALUE、以便在 PWM 计数器重置为0之前发生数据滤波器延迟+ 5个 SD 时钟周期。 因此、在 CMPC/CMPD PWM 同步之后、在 ISR 触发之前、应该有3个 SDFM 输出值的时间。

    当 ISR 触发时、SDFM 数据寄存 器被直接读取(下面的第431 - 432行)并保存在"Filter2_Result "和"Filter3_Result"中。 (请注意、虽然也读取了滤波器1、但实际上没有任何滤波器1输入。 只有滤波器2和3具有输入数据流)。

    接下来、ISR 一直等到 PWM 计数大于 SDFM_RESET_CMP_VALUE (即直到 ePWM12.CMPC/CMPD PWM 同步之后)、第443行。

    然后再次读取 SDFM 数据寄存 器、并将结果保存在"Debug_filter2_result"和"Debug_filter3_result"中。

     在代码运行时、我可以在 Code Composer 调试窗口中观察到"Filter2_Result"、"Filter3_Result"、"DEBUG_Filter2_Result"和"DEBUG_Filter3_Result"值。 在这里、我可以看到 "Filter2_Result"和"Filter3_Result"始终如预期(即一些非零值)、但 "DEBUG_Filter2_Result"和"Debug_Filter3_Result"始终等于零。 因此、我的结论是 ePWM12.CMPC/CMPD 同步脉冲将复位 SDDATA 寄存器0。 这有道理吗? 或者我是否缺少了什么?

     e2e.ti.com/.../sdfm_5F00_pwm_5F00_sync_5F00_cpu_5F00_cpu01.c

    非常感谢、

    费尔加尔

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

    我正在处理这个问题。 请在接下来的3-4个工作日内收到我的回复。

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

    您的观察结果是正确的。 在发生 SDSYNC 事件时、SDFM 数据滤波器输出也会复位为0。 我得到了设计团队的确认。

    此信息将在 SDFM TRM 的未来修订版中更新。

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

    您好、Manoj、

    好的、这是有用的信息、感谢您的帮助。

    此致、

    费尔加尔