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(¶ms);params.dutyUnits = PWM_DUTY_US;params.dutyValue = 0;params.periodUnits = PWM_PERIOD_US;params.periodValue = pwmPeriod;pwm1 = PWM_open(CONFIG_PWM_0, ¶ms);if (pwm1 == NULL) {/* CONFIG_PWM_0 did not open */while (1);}PWM_start(pwm1);pwm2 = PWM_open(CONFIG_PWM_1, ¶ms);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?
适时会考虑帮您升级,让更多工程师分析,谢谢。
TI中文支持网
![LAUNCHXL-CC1352P: LAUNCHXL-CC1352P unilast serial bootloader upgrade prompt [ERROR] Cortex-M3-0: [ERROR-MESSAGE] File format is not supported!-TI中文支持网](https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_1GHz_pastedimage1718681003585v1.jpg)



