找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 656|回复: 10
打印 上一主题 下一主题
收起左侧

请教前辈,STC单片机芯片PWM硬件设置

[复制链接]
跳转到指定楼层
楼主
芯片8H3K32S2  系统24M  PWMA_ARR周期 PWMA_CCR占空比
//********************************************************PWMA 互补*****************************************
#define PWM_PSC                         (12-1)        //12分频,0.5us  
#define PWM_PERIOD                 10                        //周期5us
#define PWM_DUTY                         2                        //占空1us        
        
        
void PWMA_Config()                                //
{
        PWMA_PS =  0x40;                                   //P2.6P2.7 管脚
        
        PWMA_PSCRH = (u16)(PWM_PSC >> 8);
        PWMA_PSCRL = (u16)(PWM_PSC);                 
        
        PWMA_CCER2 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
        PWMA_CCMR4 = 0x60; // 设置 CC2 为 PWMA 输出模式,PWM模式1
        PWMA_CCER2 = 0x50; // 使能 CC4P4n


        
        PWMA_CCR4H = (u16)(PWM_DUTY >> 8);  //设置占空比
        PWMA_CCR4L = (u16)(PWM_DUTY);
        
        PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
        PWMA_ARRL = (u16)(PWM_PERIOD);
        
        //PWMA_IER
        //PWMA_DTR = 1;
        PWMA_ENO = 0xc0; // 使能 PWM4p4n 端口输出
        PWMA_BKR = 0x80; // 使能主输出
        PWMA_CR1 = 0x01; // 启动PWM定时器
}        
下图是12分频,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2

下图是6分频,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2


周期要比设置的ARR要大,大了接近一个正脉宽。在两种分频下还不一样。是硬件清耗吗?产生事件消耗?我把其它功能已经全部关闭,中断也没开。只留了一下PWMA。
然后再改快一点
12分频,PWMA_CCR 0.5us  PWMA_ARR 1us 占空比0.5


实际周期是3倍正脉宽
12分频,PWMA_CCR 0.5us  PWMA_ARR  0.5us 占空比0.5


PWMA_ARR  成了 1us ,正负都一样了,是不是产生事件要消耗0.5US时间?这个怎么计算。对于指令周期现在还是不太懂。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:807591 发表于 2023-12-9 12:00 | 只看该作者
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了
回复

使用道具 举报

板凳
ID:734017 发表于 2023-12-9 17:46 | 只看该作者
szb314 发表于 2023-12-9 12:00
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了

我不会,我直接打板,写程序调试,不会仿真
回复

使用道具 举报

地板
ID:57657 发表于 2023-12-9 20:18 | 只看该作者
szb314 发表于 2023-12-9 12:00
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了

仿真没有这些硬件PWM的寄存器,必须实物测试。
回复

使用道具 举报

5#
ID:401564 发表于 2023-12-10 13:37 | 只看该作者
PWM频率不要设定得太高.你这都1MHZ了
很多应用是用不到那么高的频率的
频率太高,单片机时钟误差影响就越大
建议你试一下100KHZ或者更低的频率试一下
回复

使用道具 举报

6#
ID:1034262 发表于 2023-12-10 17:19 | 只看该作者
周期 = 设置值+1
回复

使用道具 举报

7#
ID:734017 发表于 2023-12-11 09:12 | 只看该作者
Y_G_G 发表于 2023-12-10 13:37
PWM频率不要设定得太高.你这都1MHZ了
很多应用是用不到那么高的频率的
频率太高,单片机时钟误差影响就越 ...

谢谢大佬
回复

使用道具 举报

8#
ID:734017 发表于 2023-12-11 09:12 | 只看该作者

你好,我在手册上没找到你说的这个设置。
回复

使用道具 举报

9#
ID:734017 发表于 2023-12-11 10:49 | 只看该作者

为什么要+1.我搞不懂了,烦死人了
回复

使用道具 举报

10#
ID:401564 发表于 2023-12-11 18:17 | 只看该作者
happy2058 发表于 2023-12-11 10:49
为什么要+1.我搞不懂了,烦死人了

这不就是代入公式计算就可以了呀,没有什么高难度的东西,只是麻烦了一点而已
而且,PWM在控制上,一般来说,更重要的占空比,频率并不会要求过高的
比如说,10KHZ,有时候是9KHZ,有时候是11KHZ,这其实影响不大的
除非是频率控制电路
回复

使用道具 举报

11#
ID:734017 发表于 2023-12-11 20:23 | 只看该作者
Y_G_G 发表于 2023-12-11 18:17
这不就是代入公式计算就可以了呀,没有什么高难度的东西,只是麻烦了一点而已
而且,PWM在控制上,一般来说, ...

谢谢前辈。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表