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.
工具与软件:
您好、TI 工程师、
我使用 ePWM 模块生成200kHz 波形(使用增加和减少计数模式)、而没有使用 DB 模块。 EPWM-A 为高电平0、UA 为低电平。 EPWM-B 在0和 DB 处为低电平、TBPRD 为高电平。 然而、当我使用示波器捕捉 ePWM 波形时、我发现 ePWM-A 和 ePWM-B 发出的第一个波形为相同的高电平、我可否问这是为什么?
尊敬的 Zhen:
您能否简单地阐述一下、并分享您为生成此波形而馈送的要求。 代码快照(或 SysConfig)有助于更好地理解。
谢谢
Srikanth
尊敬的 Srikanth:
下面是我在配置 ePWM 模块时的代码、我想得到一个200kHz 的波形。 然而、在初始上电后、我通过示波器捕获了 EPWM-A 和 EPWM-B 的波形、并且第一个波形出现了两个全高。 但从代码的角度来看、不应出现、因为在向上计数阶段 A 有一个输出、而在向下计数阶段 B 有一个输出。
尊敬的 Zhen:
您能否 检查一下、让我们知道以下主题是否可以解决您的问题。
谢谢
Srikanth
尊敬的 Srikanth:
我想我的问题与他的:不同
首先、EPWMxB IN 输出首先为高电平、然后由于 DBCTL[POLSEL] S3的0切换到1引起的延迟、EPWMxB 输出也为高电平。 但从我上传的代码来看、首先我没有使用 DB 模块、针对零点 EPWMB 的操作是低电平、因此我认为这与他的情况有所不同。
其次、POST 中没有后续通信来解释高脉冲是如何产生的。
尊敬的 Zhen:
我找到了讨论此类问题的文档。 请评估此文档、看看这是否是您的问题。
https://www.ti.com/lit/an/spraai1/spraai1.pdf?ts = 1740590140592
谢谢
Srikanth
尊敬的 Srikanth:
感谢您帮助我找到相关信息、但我没有看到与我的问题有相似之处。 当我查看上传的波形时、我注意到另一个问题。 根据我的代码设置、ePWM-A 的高电平应该只存在1/600/200K≈8.3ns、但高电平时间似乎为16ns。
尊敬的 Zhen:
在初始化期间从何处启动 ePWM 时钟(清除和设置 TBCLKSYNC 位)? 您是否看到这是在一开始(一旦启动 ePWM 时钟)就出现的?
如果您愿意、您可以更改 ePWM 仿真模式设置、以便在调试会话期间暂停时计数器暂停(未设置为自由运行)? 完成此操作后、您是否可以单步执行初始化、直到您单步执行该 TBCLKSYNC 位以启动时钟、并确认在启动 ePWM 时钟后发生的干扰。
另外、您的 ePWM 时钟的运行速度是多少? 您使用的是 LaunchPad 还是 controlCARD?
此致、
Allison
您好、Allison、
该图的上升沿表示我已禁用 TBCLKSYNC、下降沿表示我已启用 TBCLKSYNC。
尊敬的 Zhen:
我使用与您相同的配置创建了一个简单示例。 您是否可以在将 TBPRD 配置为 300之前尝试将 TBPRD 加载模式设置为"立即加载"模式? 我进行了此修改、问题得到解决。
我认为 ePWM 会在 ePWM 计数器启动时识别 TBPRD = 0 (而不是300)、因为 TBPRD 影子加载。 因此、EPWMxB 动作限定器在短脉冲期间将通道 B 设置为高电平(这种情况与 EPWMxA 设置为高电平的同时根据 TBCTR = 0匹配事件发生)、从而创建同步初始脉冲。 如果需要、您可以始终在初始化后更改您的加载模式。
请参阅随附的项目、该项目演示了这一点。
e2e.ti.com/.../F28003x_5F00_EPWM_5F00_E2E.zip
此致、
Allison
您好、Allison、
是的、将它设置为"immediate load"后、不会同时出现高电平情况。 这是因为在 TBPRD 影子加载中、TBPRD = 0、TBCTR = 0、对于 EPWMA、满足 ePWM_AQ_OUTPUT_HIGH_ZERO、 对于 EPWMB、是的、满足 EPWM_AQ_OUTPUT_HIGH_PERIOD、因此两个输出高电平、我是否正确? 如果是、我想确认两个问题:1. 对于 EPWMB、TBCTR = 0和 TBCTR = TBPRD 的优先级是否高于后者的优先级? 我没有在技术手册中看到在向上/向下模式中介绍了两者的优先级。 2.启用 TBCLKSYNC 后、我将其调整为影子加载模式、此时整个波形丢失。
对于第二个问题、我认为是的、因为设置了"立即加载模式"、并且 TBPRD 设置为 TBPRD (活动)、而 TBPRD (影子)仍为0。 将其设置为"Shadow Mode"时、"Shadow TBPRD (0)→Active TBPRD、因此 EPWMA 和 EPWMB 的输出会较低。 将 TBPRD 设置为"Shadow Mode"后、应将其设置为300。
尊敬的 Zhen:
CTR = TBPRD 动作限定符优先于 CTR = 0动作限定符。
2. 发生此错误的原因是在初始化过程中将加载模式更改为"影子模式"会将影子寄存器中的任何内容加载到 TBPRD 中(因此、如果影子寄存器为空、则会将"0"加载到 TBPRD 中)。 相反、如果您需要初始化中的所有内容、可以执行以下操作:
以下是我使用并成功测试的内容:
EPWM_setPeriodLoadMode(base,EPWM_PERIOD_SHADOW_LOAD); EPWM_setTimeBasePeriod(base, 300U); EPWM_setPeriodLoadMode(base,EPWM_PERIOD_DIRECT_LOAD); EPWM_setTimeBasePeriod(base, 300U); EPWM_setPeriodLoadMode(base,EPWM_PERIOD_SHADOW_LOAD); EPWM_selectPeriodLoadEvent(base, EPWM_SHADOW_LOAD_MODE_COUNTER_ZERO);
此致、
Allison