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.
工具/软件: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相同:
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、
正如我在上一篇文章中提到的、来自 PWM 的 SDSYNC 脉冲不会复位 SDFM 数据寄存器的内容。 它只是复位 SDFM 内部 DOSR 计数器。 如果在等待数据过滤器延迟+ 5个额外的 SDFM 周期后读取 SDFM 数据寄存器、则保证读取正确的数字输出。
此致、
曼诺伊
Manoj、
出于安全考虑、我在 SDSYNC 事件之后(((3*256)+ 10)/ 10MHz = 78.3us 后读取数据。
但是、ePWM11的下一个 SDSYNC 事件也会在 最后一个 SDSYNC 事件之后的78.3us 后触发。
同时读取和 SDSYNC。
根据我的实验、为了避免读取0、下一个 SDSYNC 必须延迟2us、否则我得到0。
我在 CLA 读取由 PWM 计数器触发的数据、CLA 是否可能太慢、以至于 SDSYNC 之后的第一个数据会清除 SDFM 数据寄存器?
Manoj、
[引用用户="Manoj Santha Mohan"]
我也不明白为什么您需要额外的5个 SD-CX。 在((3*256)+ 5)/10MHz = 77.3 us 处读取结果将获得正确的滤波器输出结果。
[/报价]
添加5个 SD_CX 是实验结果、可能我做了一些错误、我将在这几天进行检查。
[引用用户="Manoj Santha Mohan"]
此外、您不能同时读取滤波器输出/重置数据滤波器。 这可能导致不可预测的结果。 这可能是您在结果寄存器中看到0的原因。
[/报价]
那么、TI 建议读取和复位之间的时间间隔是多久?
如果用户无法同时读取和复位、TRM 注释"复位不会清除数据"是不正确的。 或者、是否有使用此功能的应用?
[引用用户="Manoj Santha Mohan"]
我们从未有过客户希望同时重置和读取 SDFM 数据滤波器。
[/报价]
感谢您的回答!
如果是、则 TRM 不应提及复位不会清除数据寄存器。 因为这是错误的、而且这种行为是禁止的。