TI中文支持网
TI专业的中文技术问题搜集分享网站

LAUNCHXL-CC1352P: pwm高电平与gpio直接输出高电平,电压值不同。

Part Number:LAUNCHXL-CC1352P

运行官方例程empty,点亮redLED代码如下。

void *mainThread(void *arg0)
{/* 1 second delay */uint32_t time = 1;/* Call driver init functions */GPIO_init();// I2C_init();// SPI_init();// UART_init();// Watchdog_init();/* Configure the LED pin */GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);/* Turn on user LED */GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON);while (1) {
//sleep(time);
//GPIO_toggle(CONFIG_GPIO_LED_0);}
}

驱动强度如图:

测得LED电压为2.52v

更改驱动能力后电压不变。

巡行官方例程pwmled2

void *mainThread(void *arg0)
{/* Period and duty in microseconds */uint16_tpwmPeriod = 3000;uint16_tduty = 0;uint16_tdutyInc = 100;/* Sleep time in microseconds */uint32_ttime = 50000;PWM_Handle pwm1 = NULL;PWM_Handle pwm2 = NULL;PWM_Params params;/* Call driver init functions. */PWM_init();PWM_Params_init(&params);params.dutyUnits = PWM_DUTY_US;params.dutyValue = 0;params.periodUnits = PWM_PERIOD_US;params.periodValue = pwmPeriod;pwm1 = PWM_open(CONFIG_PWM_0, &params);if (pwm1 == NULL) {/* CONFIG_PWM_0 did not open */while (1);}PWM_start(pwm1);pwm2 = PWM_open(CONFIG_PWM_1, &params);if (pwm2 == NULL) {/* CONFIG_PWM_0 did not open */while (1);}PWM_start(pwm2);/* Loop forever incrementing the PWM duty */while (1) {PWM_setDuty(pwm1, duty);PWM_setDuty(pwm2, duty);duty = (duty + dutyInc);if (duty == pwmPeriod || (!duty)) {//控制占空比递增递减dutyInc = - dutyInc;}usleep(time);}
}

驱动强度如图:

测得redLED波形如下:

高电平电压达到3v

测试期间测试点没有做修改,为什么同一个LED,驱动强度相同的情况下,PWM的电压能达到3v,GPIO只能达到2.5v,gpio驱动强度提高,电压也不变。

Yolande Wang:

引脚悬空也是这样吗?

,

Yolande Wang:

?? ? 说:gpio驱动强度提高,电压也不变

如果没有接到外部器件,可能存在硬件故障或设备异常工作的情况.

GPIO的输出电压通常由电源电压、负载特性和输出阻抗等因素决定。

您将此GPIO的电压配置成特定水平,例如3.3V会是一样的结果吗?

期待您的回复

,

?? ?:

不是的,3.3.vz左右

,

?? ?:

通过usb供电,不接负载时电平正常,我的疑问是为什么pwm的高电平值更大,接的同一个负载。

,

Yolande Wang:

PWM是一种通过调整脉冲宽度来控制平均输出电压的方法,通过改变高电平和低电平的时间比例,实现对平均输出电压的控制,在实际应用中,可以实现比GPIO输出更高或更低的平均电压值。

,

?? ?:

一个PWM周期高电平也会更大吗?他们接的都是同一个负载,为什么会更大。

,

?? ?:

因为我用GPIO模拟PWM和用硬件PWM实现呼吸灯,发现硬件pwm的LED电流更大,详细分析后发现,硬件PWM一个周期中的高电平值更大。

,

Yolande Wang:

如果增加了高电平的持续时间或增加了高电平的幅度,负载收到的平均电压就会相应地增加。

这种方式可以实现对负载的电流控制。

,

?? ?:

我说的不是最后的模拟输出而是一个PWM周期中的高电平部分电压。

,

Yolande Wang:

在一个给定的PWM周期内,高电平部分的电压是固定的,除非通过调整PWM参数(比如占空比)或者修改控制它的信号来改变。

,

Yolande Wang:

?? ? 说:因为我用GPIO模拟PWM和用硬件PWM实现呼吸灯,发现硬件pwm的LED电流更大,详细分析后发现,硬件PWM一个周期中的高电平值更大。

硬件PWM的输出电平稳定性高,精度、频率、占空比也更精确。

GPIO模拟PWM输出电平一般比较低,这是因为占用了CPU资源,同时会受到单片机供电电压的限制,因此会有误差。

,

Yolande Wang:

您的问题解决了吗,如果没有,希望您明确一下问题点1还是2:

1.同一个负载,驱动强度相同的情况下,PWM的电压能达到3v,GPIO只能达到2.5v,GPIO驱动强度提高,电压也不变?

2.为什么硬件PWM输出电压高于软件PWM?

适时会考虑帮您升级,让更多工程师分析,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » LAUNCHXL-CC1352P: pwm高电平与gpio直接输出高电平,电压值不同。
分享到: 更多 (0)