请教关于读取多路PWM的问题
修改一下,我用的是32G8K64,我的目的是需要读取4路PWM的高电平宽度,然后还要输出2路PWM,
但是按照我学习例程的方法只能读取2路,不会读取4路,
请哪位大神指导一下,谢谢!程序如下:
void PWM_Config() // PWM初始化设置
{
//--------------------------PWMA设置-CC1捕获上升沿、CC2捕获下降沿-----------------------
PWMA_CCER1 = 0x00; // 关闭通道
PWMA_CCMR1 = 0x01; // CC1通道配置为输入,映射在TI1FP1上
PWMA_CCMR2 = 0x02; // CC2通道配置为输入,映射在TI1FP2上
PWMA_CCER1 = 0x11; // 使能CC1、CC2通道
PWMA_CCER1 |= 0x00; // 设置CC1捕获上升沿
PWMA_CCER1 |= 0x20; // 设置CC2捕获下降沿
PWMA_CCER2 = 0x00; // 关闭通道
PWMA_CCMR3 = 0x01; // CC3通道配置为输入,映射在TI1FP3上
PWMA_CCMR4 = 0x02; // CC4通道配置为输入,映射在TI1FP4上
PWMA_CCER2 = 0x11; // 使能CC3、CC4通道
PWMA_CCER2 |= 0x00; // 设置CC3捕获上升沿
PWMA_CCER2 |= 0x20; // 设置CC4捕获下降沿
PWMA_IER = 0x1e; // 使能CC2捕获中断
PWMA_CR1 |= 0x01; // 使能PWMA计数器,启动PWM定时器
PWMB_PSCRH = (u16)(PWMB_PSC >> 8);
PWMB_PSCRL = (u16)(PWMB_PSC); // 预分频
PWMB_CCER1 = 0x00; // 关闭通道
PWMB_CCMR1 = 0x60; // 通道模式配置为输出,PWM模式1
PWMB_CCMR2 = 0x60; //原值0x30 设置 CC6 为 PWMB 输出模式,翻转电平
PWMB_CCER1 = 0x11; // 使能捕获/比较通道5,使能CCR预装载,原来值05
PWMB_CCR5H = (u16)(22 >> 8);
PWMB_CCR5L = (u16)(22 );
PWMB_CCR6H = (u16)(22 >> 8); // 设置 CC6 初始占空比 0 %
PWMB_CCR6L = (u16)(22 );
PWMB_ARRH = (u16)(PWMB_PERIOD >> 8);
PWMB_ARRL = (u16)(PWMB_PERIOD); // 设置周期
PWMB_ENO = 0x55; // 使能PWM5,6,7,8输出
PWMB_BKR = 0x80; // 使能PWMB主输出
PWMB_CR1 |= 0x01; // 使能PWMB计数器,启动PWM定时器
}
Ai8051U 可以
以上,这捕捉 4路 高电平输入
下面还有 3路 PCA/CCP/PWM 做 3路 PWM 输出
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
如果要测量高电平时间和周期时间,则2个PWM通道只能测1路输入信号。
如果只测量高电平时间,则一组PWM能测4路信号,
但4路信号的最小高电平时间或最小低电平时间有限制,不能小于4us,
因为要进入中断读取处理数据。
上述两种方式处理方法不同,你需要哪一种?
如果是使用PWMA和PWMB的情况下,就是只能捕获2路高电平宽度,输出4路PWM
不过,如果你捕获的高电平信号比较宽的情况下,可以尝试CC1设置上升沿,捕获后记下当前的PWM计数值,然后切换到下降沿捕获,再次捕获后再切换回上升沿,如此循环。就可以一组PWM同时捕获4路PWM高电平了
不过唯一需要注意的就是,切换PWM寄存器需要时间,如果高电平时间比较短,那么就没办法用这个方法了 梁工 发表于 2025-6-4 16:57
如果要测量高电平时间和周期时间,则一组PWM只能测2路信号。
如果只测量高电平时间,则一组PWM能测4路信号 ...
我只测量高电平时间,时间在1000US以上,就是不会处理,采集高电平时间后根据时间去调节2路输出的PWM占空比
王昱顺 发表于 2025-6-5 07:50
如果是使用PWMA和PWMB的情况下,就是只能捕获2路高电平宽度,输出4路PWM
不过,如果你捕获的高电平信号比较 ...
这个有例程可以看下吧? czlwf 发表于 2025-6-5 14:04
我只测量高电平时间,时间在1000US以上,就是不会处理,采集高电平时间后根据时间去调节2路输出的PWM占空 ...
测量4路高电平时间,去调节2路PWM输出,请详细说出其映射关系,否则没人能知道你想要什么。 czlwf 发表于 2025-6-5 14:06
这个有例程可以看下吧?
可以看下技术手册 梁工 发表于 2025-6-5 14:44
测量4路高电平时间,去调节2路PWM输出,请详细说出其映射关系,否则没人能知道你想要什么。 ...
他们之间没有关系,我只是在这个项目里需要同时读取4路PWM的高电平时间,然后还需要用到2路PWM输出 czlwf 发表于 2025-6-5 19:00
他们之间没有关系,我只是在这个项目里需要同时读取4路PWM的高电平时间,然后还需要用到2路PWM输出 ...
请下载参考:
03-PWMA-4个捕获通道
04-PWMB-4个捕获通道
STC8H系列-高级PWM范例程序下载,2024/1/3 更新
https://www.stcaimcu.com/thread-1779-1-1.html
(出处: 国芯技术交流网站)
STC32G-高级PWM范例程序下载
https://www.stcaimcu.com/thread-1778-1-1.html
(出处: 国芯技术交流网站)
页:
[1]
2