工具/软件:TI-RTOS
大家好、
我正在研究一个应用、其中一个任务需要生成频率范围为0.25Hz 至25Hz (周期值范围为40至4000毫秒)的 PWM 信号。
以下是我的配置
1) 1) PWM 硬件属性代码片段:
CONST PWMTiva_HWAttrs pwmTivaHWAttrs[EK_TM4C1294XL_PWMCOUNT]={
{
baseAddr = PWM0_BASE、
pwmOutput = PWM_OUT_0、
pwmGenOpts = PWM_GEN_MODE_DOWN | PWM_GEN_MODE_DBG_RUN
}、
{
baseAddr = PWM0_BASE、
.pwmOutput = PWM_OUT_1、
pwmGenOpts = PWM_GEN_MODE_DOWN | PWM_GEN_MODE_DBG_RUN
}、
{
baseAddr = PWM0_BASE、
pwmOutput = PWM_OUT_2、
pwmGenOpts = PWM_GEN_MODE_DOWN | PWM_GEN_MODE_DBG_RUN
}、
};
CONST PWM_Config PWM_CONFIG[]={
{
fxnTablePtr =&PWMTiva_fxnTable、
.object =&pwmTivaObjects[0]、
hwAttrs =&pwmTivaHWAttrs[0]
}、
{
fxnTablePtr =&PWMTiva_fxnTable、
.object =&pwmTivaObjects[1]、
hwAttrs =&pwmTivaHWAttrs[1]
}、
{
fxnTablePtr =&PWMTiva_fxnTable、
.object =&pwmTivaObjects[2]、
hwAttrs =&pwmTivaHWAttrs[2]
}、
{NULL、NULL、NULL}
};
2) 2) PWM 引脚复用和 GPIO 配置
void EK_TM4C1294XL_initPWM (void)
{
/*启用 PWM 模块0 */
SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
GPIOPinConfigure (GPIO_PF0_M0PWM0);
GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_0);
GPIOPinConfigure (GPIO_PF1_M0PWM1);
GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_1);
GPIOPinConfigure (GPIO_PF2_M0PWM2);
GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_2);
PWM_init();
}
3) 3) EK_TM4C1294XL.h 枚举更新为三个 PWM 输出。
typedef 枚举 EK_TM4C1294XL_PWMName{
EK_TM4C1294XL_PWM0 = 0、
EK_TM4C1294XL_PWM1、
EK_TM4C1294XL_PWM2、
EK_TM4C1294XL_PWMCOUNT //= 3
}EK_TM4C1294XL_PWMName;
4) 4) PWM 配置参数
已尝试以下两种模式:
1) PWM 占空比模式:PWM_Duty_Time:以微秒为单位分配的周期和占空比值。
2) 2) PWM 占空比模式:PWM_Duty_scalar:计算:
Duty_cycle_percentage =((ON_TIME * 1000)/(ON_TIME + OFF_TIME)* 1000)* 100
Duty_cycle_scalar =(65535 * Duty_cycle_percentage)/ 100
PWM_setDuty (pwmHandle、Duty_cycle_scalar);
问题:周期值范围为40到68毫秒(频率为25Hz 到14.705Hz)、我能够生成 PWM 信号。 但是、当我尝试使用等于70毫秒及以上(频率14.28Hz 及以下)的周期值时、PWM 信号线变为高电平、之后没有变化。
我想知道、PWM 模块能否生成此低频信号? 如果是、我需要在 TI-RTOS 项目中执行哪些配置来实现这种低频。
和 PWM 信号、占空比为20毫秒、DSO 将值显示为10ms 占空比。 我不确定为什么会发生这种情况。
我们衷心感谢您的帮助。 提前感谢。