您好!
我对生成的 PWM 波形有问题、从占空比和应用的死区时间角度来看、它们是正确的、但波形不稳定、它在示波器上左右移动(抖动)
我已确保它不是我的范围内的触发问题、因此我确定它是一个软件问题、但我不知道导致此问题的原因
电源 我正在使用全局加载、并尝试更改 PWM 开关频率、但仍然具有相同的行为
您是否有解决此问题的建议?
提前感谢
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.
您好!
我对生成的 PWM 波形有问题、从占空比和应用的死区时间角度来看、它们是正确的、但波形不稳定、它在示波器上左右移动(抖动)
我已确保它不是我的范围内的触发问题、因此我确定它是一个软件问题、但我不知道导致此问题的原因
电源 我正在使用全局加载、并尝试更改 PWM 开关频率、但仍然具有相同的行为
您是否有解决此问题的建议?
提前感谢
您好、Uttam、
设置的开关频率为100KHz、CMPA 值为250
我刚刚在示波器上测量了开关频率、它在101.04 KHz 左右波动、我认为这就是我可能具有此抖动的原因
电源 我不使用评估板、因此基本上、我使用评估板来刷写/调试评估板上的外部目标、因此我使用晶体振荡 器作为输入时钟频率
我配置外部时钟的方式如下所示
如果我正确配置了外部时钟、您能为我提供指导吗? 我还附上了所用20MHz 外部晶体的屏幕截图(我测量了它的晶体、正确的方法是>> 20MHz)
//
//要将 INTOSC 用作时钟源、请注释#define USE_PLL_SRC_XTAL、
//并取消注释#define USE_PLL_SRC_INTOSC
//
//#define USE_PLL_SRC_XTAL
#define USE_PLL_SRC_INTOSC
//
// controlCARD 上的20MHz XTAL。 与 SYSCTL_getClock()一起使用。
//器件上的10MHz INTOSC。
//
#define DEVICE_OSCSRC_FREQ 20000000U
#define DEVICE_INTOSC_FREQ 10000000U
#IF 定义(USE_PLL_SRC_XTAL)
//
//定义以传递到 sysctl_setclock()。 将按如下方式配置时钟:
// PLLSYSCLK = 10MHz (INTOSC2)* 60 (IMULT)/(2 (REFDIV)* 3 (ODIV)* 1 (SYSDIV))
//
#define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_OSC2 | SYSCTL_IMULT (60)|\
SYSCTL_REFDIV (2)| SYSCTL_ODIV (3)|\
SYSCTL_SYSDIV (1)| SYSCTL_PLL_ENABLE |\
SYSCTL_DCC_BASE_0)
//
//基于上述 device_setClock_CFG 的100MHz SYSCLK 频率。 更新
//如果使用不同的时钟配置,请使用下面的代码!
//
#define DEVICE_SYSCLK_FREQ ((SYSCTL_OSCSRC_OSC2 * 60)/(2 * 3 * 1))
定义了#Elif (USE_PLL_SRC_INTOSC)
//
//定义以传递到 sysctl_setclock()。 将按如下方式配置时钟:
// PLLSYSCLK = 10MHz (INT_OSC2)* 30 (IMULT)/(1 (REFDIV)* 3 (ODIV)* 1 (SYSDIV))
//
#define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_OSC2 | SYSCTL_IMULT (30)|\
SYSCTL_REFDIV (1)| SYSCTL_ODIV (3)|\
SYSCTL_SYSDIV (1)| SYSCTL_PLL_ENABLE |\
SYSCTL_DCC_BASE_0)
//
//基于上述 device_setClock_CFG 的100MHz SYSCLK 频率。 更新
//如果使用不同的时钟配置,请使用下面的代码!
//
#define DEVICE_SYSCLK_FREQ ((DEVICE_INTOSC_FREQ * 30)/(1 * 3 * 1))
#endif
//
//基于上述 DEVICE_SYSCLK_FREQ 和默认值的25MHz LSPCLK 频率
//低速外设时钟分频器4。 如果是、请更新以下代码
//使用不同的 LSPCLK 分频器!
//
#define DEVICE_LSPCLK_FREQ (DEVICE_SYSCLK_FREQ / 4)
我看到错误配置 是针对时钟完成的。
在代码中、您使用的是内部 CLK 而不是 XTAL。 根据我的理解、您希望使用 XTAL、请更正此错误。
//要将 INTOSC 用作时钟源、请注释#define USE_PLL_SRC_XTAL、
//并取消注释#define USE_PLL_SRC_INTOSC
//
//#define USE_PLL_SRC_XTAL
#define USE_PLL_SRC_INTOSC
2.如果您仍然看到 PWM 抖动、请告诉我? 您能否分享设置的片段、了解 如何测量 PWM 波形、这通常是由于测量错误而发生的。