当前位置: 首页 > news >正文

PWM 相关知识整理

一、PWM 相关术语

概念含义
频率1 秒钟内信号从高电平到低电平再回到高电平的次数,即 1 秒钟 PWM 的周期数,单位为 Hz
周期一个脉冲信号的时间,1 秒内的周期次数等于频率,周期 = 1 / 频率(T=1/f)
脉宽时间高电平持续的时间
占空比一个脉冲周期内,高电平时间与整个周期时间的比例

举例:方波的占空比为 50%;若周期为 20ms,脉宽时间为 5ms,则占空比为 25%。

二、PWM 信号应用领域
  • 调光电路:通过调节占空比可实现呼吸灯效果。
  • 电机控制:利用占空比调节电机转速。
  • 舵机控制:以固定频率搭配不同占空比来控制舵机的转角。
  • 其他领域:还可用于直流斩波电路、蜂鸣器驱动、逆变电路、加湿机雾化量控制等。
三、Exynos 4412 PWM 特性
  • 该芯片的 SCP 具备五个 32 位脉冲宽度调制(PWM)定时器。
  • 有 2 个 8 位 PCLK 分频器用于一级预分频,5 个 2 级分频器对外部时钟进行预分。
  • 支持可编程选择 PWM 独立通道,拥有 4 个独立的可编程控制且支持校验的 PWM 通道。
  • 具备静态配置(PWM 停止)和动态配置(PWM 启动)两种模式。
  • 支持自动重装模式及触发脉冲模式,设有一个外部启动引脚。
  • 两个 PWM 输出可配备 Dead-Zone(死区)发生器,还具备中断发生器。
四、PWM 工作步骤
  1. 当时钟 PCLK 被使能后,定时器计数缓冲寄存器(TCNTBn)会将计数器初始值下载到递减计数器中。
  2. 定时器比较缓冲寄存器(TCMPBn)把其初始值下载到比较寄存器,并将该值与递减计数器的值进行比较,当两者值相同时,输出电平翻转。
  3. 递减计数器减至 0 后,输出电平再次翻转,完成一个输出周期。
  4. 当递减计数器计数值达到 0 时,产生定时器中断请求通知 CPU 定时器操作完成。若将定时器 0 设置为自动重载功能(TCONbit [3]=1),相应的 TCNTBn 的值会自动重载到递减计数器以继续下次操作。
  5. 若定时器停止工作(清除定时器控制寄存器 TCON 中的定时器使能位),则 TCNTBn 的值不会被重载到递减计数器。
  6. TCMPBn 的值用于脉冲宽度调制,当定时器递减计数器的值和比较寄存器的值相匹配时,定时器控制逻辑改变输出电平,比较寄存器决定 PWM 输出的开关时间。
四、PWM 工作流程(精简)
  1. 时钟使能:PCLK 开启后,计数缓冲寄存器(TCNTBn)将初始值加载到递减计数器。
  2. 比较触发:比较缓冲寄存器(TCMPBn)值与递减计数器值匹配时,输出电平翻转。
  3. 周期结束:计数器减至 0 时,输出电平再次翻转,完成一个周期,并触发中断(若启用)。
  4. 自动重载:若设置自动重载模式(TCON [3]=1),TCNTBn 值会重新加载到计数器,循环运行。
五、寄存器配置实例

目标:生成周期 159 个时钟周期、高电平 109 个时钟周期的 PWM 波形(低电平 50 周期)。

  1. 初始化寄存器
    • TCNTBn = 159(周期总时长),TCMPBn = 109(高电平时长)。
  2. 启动定时器
    • 设置 TCON 寄存器使能位,TCNTBn 值加载到递减计数器,输出引脚初始化为低电平。
  3. 电平翻转逻辑
    • 计数器从 159 递减至 109 时,输出由低变高;递减至 0 时,输出由高变低,同时触发中断。
  4. 自动重载:若启用该模式,计数器自动重新加载 159,进入下一个周期。
六、时钟配置寄存器(TCFG0/TCFG1)
  1. TCFG0 寄存器(预分频配置):

    • 功能:设置一级预分频比(8 位,范围 1~255),公式为:预分频后时钟=预分频值+1PCLK​
    • 示例:若 PCLK=66MHz,预分频值 = 99,则预分频后时钟为 660kHz(66M/(99+1))。
  2. TCFG1 寄存器(二级分频配置):

    • 功能:选择二级分频比(1/1、1/2、1/4、1/8、1/16),决定最终输入定时器的时钟频率:定时器输入时钟=分频比预分频后时钟​
    • 配置示例

      c

      运行

      // 设置TCFG0预分频值为248(0xF9),TCFG1分频比为1/16(0x4)
      PWM.TCFG0 = (PWM.TCFG0 & ~0xFF) | 0xF9;  // 预分频值=248,PCLK/(248+1)=66M/249≈265kHz
      PWM.TCFG1 = (PWM.TCFG1 & ~0xF) | 0x4;    // 二级分频比1/16,最终时钟=265k/16≈16.5kHz
      
  3. 时钟计算与分辨率

    • 公式:ftimer​=(prescaler+1)×dividerPCLK​
    • 人耳可识别频率:20Hz~20kHz,需据此配置时钟参数。
七、关键寄存器地址与功能
寄存器地址(基址 + 偏移)功能
TCNTB00x000C定时器 0 计数缓冲寄存器,存储周期总时长。
TCMPB00x0010定时器 0 比较缓冲寄存器,决定高电平时长(占空比)。

:所有配置需结合芯片手册具体地址和寄存器位定义,以上示例基于 Exynos 4412 架构。

相关文章:

  • 【趣味Html】第11课:动态闪烁发光粒子五角星
  • #Java篇:学习node后端之sql常用操作
  • 解决docker运行zentao 报错:ln: failed to create symbolic link ‘/opt/zbox/tmp/mysq
  • 双栈共享一个栈空间
  • 小黑黑日常积累:dataclass的简单使用
  • 高效使用AI大模型:测试工程师提示词编写框架
  • [Java 基础]面向对象-继承
  • 【el-progress】element UI 进度条组件
  • 时间序列预测:LSTM与Prophet对比实验
  • Spring AI Tool Calling
  • 深入解析Java17核心新特性(密封类、模式匹配增强、文本块)
  • C++ 变量三
  • 前端八股之JS的原型链
  • 项目实战——C语言扫雷游戏
  • MySQL ACID 面试深度解析:原理、实现与面试实战
  • SARIMA时间序列分析:三大模型对比
  • Python网页数据抓取常用的库及方法介绍
  • SpringBoot+Mybatisplus配置多数据源(超级简单!!!!)
  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • NLP学习路线图(二十三):长短期记忆网络(LSTM)
  • 个人备案域名可以做哪些网站/抖音广告推广
  • 常州做网站麦策电商/在线seo推广软件
  • 电商网站成本/北京百度seo关键词优化
  • 做相册哪个网站好/天津seo网络
  • 中小企业网站设计/广东疫情动态人民日报
  • 承德的网站建设公司/cpa推广联盟平台