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.

[参考译文] CCS/TMS320F28377D:在来自 ePWM 的 SYNC 信号之后复位 SDFM 数据

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/652479/ccs-tms320f28377d-sdfm-data-reset-after-sync-signal-from-epwm

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

大家好、  

我的所有 PWM 计数器都是向上/向下计数模式、我使用 ePWM11、12直接复位 SDFM。  

和 CLA 锁存数据、由 ePWM2 CMPC 计数 INT 触发。

例如、通过设置 ePWM2.CMPC = ePWM1.CMPC = 1000、包括滤波器延迟加上10 SDFM CLK 时间。

根据28377规范、由于 SDFM 数据寄存器在复位滤波器模块后不会被清零、CLA 应该获得数据。

然而、数据在同步 SDFM 之后被复位、我必须在大约2us 之前设置 ePWM11.CPMC 以避免这种情况、这是正常的吗?

当然、我注意到每个 PWM 周期应该只有一个 CPMC 事件、

但是、如果我只在1000次计数时锁定数据、我可以忽略第二次 CMPC 复位的结果。

P.S. 我的问题与本文中的问题2相同:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/624783?tisearch=e2e-sitesearch&keymatch=SDFM%20clock

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

    很抱歉,你的问题不清楚,我相信有很多重要信息缺失:-

    1) 1) DOSR 设置?

    2) 2) ePWM 设置:-
    - TBPRD 设置
    - CMPC/CMPD 设置
    - PWM 频率

    我感觉您不喜欢使用 SDFM 数据确认中断来读取 SDFM 数据滤波器结果、而是希望使用 PWM1/2中断来读取 SDFM 数据滤波器。 我是对的吗? 如果是这样、在 EPWM11/12 SDSYNC 信号复位 SDFM 数据滤波器后、您必须将 PWM1/2中断计时、以等待数据滤波器+ 5个 SD-CX 周期的延迟。

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

    Manoj、

    很抱歉、信息不清楚、以下是:
    1) 1) SDFM 设置:
    -DOSR:256
    滤波器:sinc3
    -CLK:10MHz
    -MIF:禁用
    -Reset:启用

    2) 2) ePWM 设置:-
    -TBPRD:6250 (向上向下计数)
    -CMPC/CMPD:4140
    - PWM 频率:8K

    3) 3) CLA 触发源设置:-
    触发源:ePWM2 CMPC 递增计数
    -CMPC:3940

    是的、我不使用 SDFM AEFx 来触发锁存功能、我使用另一个 ePWM 计数器在正确的时间触发 CLA。
    时间为3 *(256 / 10M)+ 10 SDFM CLK。

    3 *(256 / 10M)+ 10 SDFM CLK。 = 3940



    我的问题是:
    发生 SYNC 信号时、SDFM 数据寄存器是否也会被复位?
    根据规范、SYNC 信号后寄存器数据不会被清除、但是、如果我设置 ePWM11.CMPC = ePWM2.CMPC = 3940、那么我将得到0。

    威利

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

    是的、正如 TRM 提到的、数据滤波器寄存器不会被复位为0。

    根据 SDFM、SD 调制器频率设置、在数据滤波器从 PWM 获取 SDSYNC 脉冲后、您必须等待(((3*256)+ 5)/10MHz = 77.3 us。 我不太理解您的图表。 此外、当 PWMCLK 频率= 8kHz 时、TBCTR 每125us 递增/递减一次。 为什么 PWMCLK 频率如此慢?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manoj、
    感谢您的回复。
    描述 PWMCLK 频率时出错、我只是指我们的 PWM 在零时触发、实际周期为125us、而不是指 PWMCLK 频率= 8kHz。

    正如您提到的、
    "是的、正如 TRM 提到的、数据滤波器寄存器不会被复位为0。"
    但是、我发现同步时寄存器数据已被清除、就像下面的问题2一样:
    e2e.ti.com/.../624783
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Willie、

    正如我在上一篇文章中提到的、来自 PWM 的 SDSYNC 脉冲会复位 SDFM 数据寄存器的内容。 它只是复位 SDFM 内部 DOSR 计数器。 如果在等待数据过滤器延迟+ 5个额外的 SDFM 周期后读取 SDFM 数据寄存器、则保证读取正确的数字输出。

    此致、

    曼诺伊

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

    同步信号后、我在锁存数据后仍然得到0、数据滤波器延迟增加+ 5个 SD-CX。
    是否允许直接在锁存器上重置 modelu? 这意味着在增加数据滤波器+ 5个 SD-Cx 的延迟后再次复位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Willie、

    我无法理解您的问题。 请重新措辞。

    预期的数字输出是多少? 在 SDSYNC 事件之后(((3*256)+ 5)/10MHz = 77.3 us)、您是否确保读取 SDFM 数据滤波器结果?

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

    Manoj、  

    出于安全考虑、我在  SDSYNC 事件之后(((3*256)+ 10)/ 10MHz = 78.3us 后读取数据。

    但是、ePWM11的下一个 SDSYNC 事件也会在 最后一个 SDSYNC 事件之后的78.3us 后触发。

    同时读取和 SDSYNC。

    根据我的实验、为了避免读取0、下一个 SDSYNC 必须延迟2us、否则我得到0。

    我在 CLA 读取由 PWM 计数器触发的数据、CLA 是否可能太慢、以至于 SDSYNC 之后的第一个数据会清除 SDFM 数据寄存器?

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

    首先、您的计算错误。

    ((3*256)+ 10)/10MHz = 78.3us。

    我也不明白为什么您需要额外的5个 SD-CX。 在((3*256)+ 5)/10MHz = 77.3 us 处读取结果将获得正确的滤波器输出结果。

    此外、您不能同时读取滤波器输出/重置数据滤波器。 这可能导致不可预测的结果。 这可能是您在结果寄存器中看到0的原因。

    这不是 CLA 问题、CLA 读取 SDFM 数据寄存器的速度也不慢。

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

    Manoj、  

    [引用用户="Manoj Santha Mohan"]
    我也不明白为什么您需要额外的5个 SD-CX。 在((3*256)+ 5)/10MHz = 77.3 us 处读取结果将获得正确的滤波器输出结果。

    [/报价]

    添加5个 SD_CX 是实验结果、可能我做了一些错误、我将在这几天进行检查。

    [引用用户="Manoj Santha Mohan"]

    此外、您不能同时读取滤波器输出/重置数据滤波器。 这可能导致不可预测的结果。 这可能是您在结果寄存器中看到0的原因。

    [/报价]

    那么、TI 建议读取和复位之间的时间间隔是多久?

    如果用户无法同时读取和复位、TRM 注释"复位不会清除数据"是不正确的。 或者、是否有使用此功能的应用?

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

    我不确定您的应用要求。 但是、我可以说、我们从未有过客户希望同时重置和读取 SDFM 数据滤波器。

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

    [引用用户="Manoj Santha Mohan"]

    我们从未有过客户希望同时重置和读取 SDFM 数据滤波器。

    [/报价]

    感谢您的回答!

    如果是、则 TRM 不应提及复位不会清除数据寄存器。 因为这是错误的、而且这种行为是禁止的。