news 2026/9/30 4:33:19

ARM学习笔记(八)——PWM与ADC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ARM学习笔记(八)——PWM与ADC

一、主要内容

  1. PWM——脉宽调制;

  2. ADC——模数转换。


二、PWM

PWM:

Pulse Width Modulation,脉宽调制。

PWM 是一种通过控制数字信号的高电平持续时间来改变输出效果的技术。

PWM 输出的基本波形:

┌──────┐ ┌──────┐ │ │ │ │ ──────┘ └────────┘ └────── ← 高电平 → ←──── 一个周期 ────→

PWM 信号主要有三个重要参数:

周期 频率 占空比

三、PWM周期

一个完整的 PWM 波形:

高电平 ↓ ┌───────┐ │ │ │ │ └───────┴──────────── 低电平

从一个周期开始到下一个周期开始所经历的时间:

叫做周期 T。

例如:

T = 1ms

表示一个 PWM 周期需要:

1ms

四、PWM频率

PWM 频率表示:

单位时间内 PWM 信号重复的次数。

频率和周期的关系:

f = 1 / T

例如:

T = 1ms

那么:

f = 1 / 0.001 = 1000Hz

所以:

1ms周期 = 1000Hz频率

五、PWM占空比

占空比:

Duty Cycle

表示:

一个周期内高电平时间所占整个周期的比例。

计算公式:

占空比 = 高电平时间 / 周期 × 100%

例如:

周期 = 10ms 高电平 = 5ms

那么:

占空比 = 5 / 10 × 100% = 50%

波形可以表示为:

50%占空比 高 ┌─────┐ │ │ ───┘ └───────── ← 5ms → ← 5ms → ←────10ms──────→

六、不同占空比

1. 25%占空比

高 ┌──┐ │ │ ───┘ └──────────────

高电平时间比较短。


2. 50%占空比

高 ┌────┐ │ │ ───┘ └────────────

高低电平时间基本相同。


3. 75%占空比

高 ┌────────┐ │ │ ───┘ └────────

高电平时间比较长。


因此:

占空比越大 ↓ 高电平持续时间越长

七、PWM的作用

PWM 最常见的应用包括:

LED亮度控制 电机调速 舵机控制 蜂鸣器控制 功率控制

例如控制 LED:

占空比小 ↓ LED较暗 占空比大 ↓ LED较亮

八、PWM控制LED亮度

假设 PWM 频率足够高。

当:

占空比 = 10%

LED 只有较短时间处于点亮状态。

当:

占空比 = 50%

LED 点亮时间增加。

当:

占空比 = 90%

LED 大部分时间处于点亮状态。

由于人眼存在视觉暂留,因此看到的是不同程度的亮度。

可以理解为:

PWM │ ├──10% → 较暗 │ ├──50% → 中等亮度 │ └──90% → 较亮

九、PWM控制电机

PWM 也可以用于控制电机。

改变 PWM 占空比:

占空比改变 ↓ 平均电压/功率发生变化 ↓ 电机运行状态改变

例如:

占空比较小 ↓ 电机速度较低 占空比较大 ↓ 电机速度较高

具体转速与电机、驱动电路和负载等因素有关。


十、PWM的基本结构

PWM 外设可以简单理解为:

时钟 ↓ 分频 ↓ 计数器 ↓ 周期寄存器 ↓ 比较寄存器 ↓ PWM输出

其中:

周期寄存器 ↓ 决定周期/频率 比较寄存器 ↓ 决定高电平持续时间 ↓ 决定占空比

十一、i.MX6ULL的PWM

i.MX6ULL 内部具有 PWM 外设。

PWM 工作的基本过程:

时钟输入 ↓ 分频 ↓ PWM计数 ↓ 比较 ↓ 产生PWM波形 ↓ 输出到对应引脚

因此使用 PWM 时,一般需要完成:

① 配置PWM引脚复用 ② 配置PWM时钟 ③ 设置分频 ④ 设置周期 ⑤ 设置比较值 ⑥ 开启PWM

十二、PWM频率计算

PWM 的频率与:

输入时钟 + 分频系数 + 周期计数值

有关。

基本思想:

PWM输入时钟 ↓ 分频 ↓ PWM计数频率 ↓ 计数 ↓ 一个周期

假设计数频率为:

1MHz

那么:

1个计数 = 1us

如果一个 PWM 周期需要:

1000个计数

那么:

T = 1000us = 1ms

所以:

f = 1 / 1ms = 1kHz

十三、PWM占空比计算

假设:

周期计数 = 1000 比较值 = 300

那么:

占空比 = 300 / 1000 × 100% = 30%

因此:

周期值 ↓ 决定PWM周期 比较值 ↓ 决定高电平时间 ↓ 决定占空比

十四、PWM学习重点

PWM 最重要的是理解:

周期 频率 占空比

三者关系:

T = 1 / f

以及:

D = Ton / T × 100%

其中:

T → PWM周期 f → PWM频率 Ton → 高电平时间 D → 占空比

十五、ADC

ADC:

Analog-to-Digital Converter

即:

模数转换器。

ADC 的作用:

把模拟信号转换成数字信号。

例如:

电位器 ↓ 模拟电压 ↓ ADC ↓ 数字量 ↓ CPU处理

十六、为什么需要ADC

CPU 处理的是数字信号。

但是现实世界中的很多信号都是模拟量,例如:

温度 光照 声音 电压 电流 压力

这些信号通常表现为连续变化的电压。

例如:

0V ↓ 0.5V ↓ 1.0V ↓ 1.5V ↓ 2.0V ↓ ...

CPU 不能直接按照模拟电压进行数字运算,因此需要:

模拟信号 ↓ ADC ↓ 数字信号

十七、ADC基本工作过程

ADC 的基本过程:

模拟输入 ↓ 采样 ↓ 保持 ↓ 量化 ↓ 编码 ↓ 数字输出

可以简单理解为:

模拟电压 ↓ “测量” ↓ 转换成数字值

十八、ADC采样

采样:

在某一个时间点测量模拟信号的电压值。

例如一个不断变化的模拟信号:

模拟信号: /\ / \ /\ ───/────\────/──\────

ADC 在不同时间进行采样:

● / \ ● ───/────●────/──\────

得到一系列离散数据。


十九、ADC量化

模拟电压是连续的:

0V 0.001V 0.002V 0.003V ...

而数字系统只能使用有限个数字表示。

因此 ADC 需要把连续的模拟电压划分成很多个等级。

这个过程叫:

量化。


二十、ADC分辨率

ADC 有一个非常重要的参数:

分辨率

例如:

12位ADC

可以表示:

2^12 = 4096

个数字等级。

数字范围通常为:

0 ~ 4095

因此:

12 bit → 4096个等级

二十一、ADC数字量与输入电压

假设:

ADC分辨率 = 12 bit 参考电压 = 3.3V

数字量范围:

0 ~ 4095

理想情况下:

ADC值 ≈ Vin / Vref × 4095

反过来:

Vin ≈ ADC值 / 4095 × Vref

例如:

ADC值 = 2048 Vref = 3.3V

则:

Vin ≈ 2048 / 4095 × 3.3

约等于:

1.65V

所以可以通过 ADC 的数字结果计算输入电压。


二十二、ADC的参考电压

ADC 的转换范围与参考电压有关。

例如:

Vref = 3.3V

那么 ADC 的输入范围通常对应:

0V ~ 3.3V

对于理想的 12 位 ADC:

0V ↓ ADC ≈ 0 1.65V ↓ ADC ≈ 2048 3.3V ↓ ADC ≈ 4095

因此:

输入电压越高 ↓ ADC数字值越大

二十三、ADC量化误差

由于 ADC 的数字等级是有限的,所以模拟电压转换成数字值时会存在一定的量化误差。

例如:

真实电压 ↓ 1.234V

ADC 不一定能够精确表示这个无限连续的值,而是选择最接近的数字等级。

因此:

模拟值 ↓ 量化 ↓ 存在一定误差 ↓ 数字值

ADC 分辨率越高:

量化等级越多 ↓ 电压划分越细

二十四、ADC使用流程

使用 ADC 时,一般需要:

① 配置ADC引脚 ↓ ② 配置ADC时钟 ↓ ③ 配置ADC工作参数 ↓ ④ 启动转换 ↓ ⑤ 等待转换完成 ↓ ⑥ 读取ADC结果 ↓ ⑦ 根据参考电压计算实际电压

整体过程:

模拟输入 ↓ ADC ↓ 启动转换 ↓ 等待完成 ↓ 读取结果 ↓ 数字量 ↓ 计算电压

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 4:32:04

Laya模型System 1决策微调实战:从安装到Ollama部署全流程

在开源大模型圈子里,每隔几天就会冒出一个“新王”。前阵子Jev刚火起来的时候,我也跟风折腾了一番,确实在复杂推理任务上有点东西。但等我真正把Laya跑起来,尤其是在System 1决策这类需要快速响应的场景里实测之后,我的…

作者头像 李华
网站建设 2026/9/30 4:29:24

Transformer论文精读:注意力机制与代码复现

2017年那篇《Attention Is All You Need》我前后完整读过四遍,第一遍是2019年刚接触NLP时囫囵吞枣,只记住了“Transformer”这个名词;第二遍是动手复现时逐公式抠细节;第三遍是给别人做分享,被迫把每个“为什么”都讲清…

作者头像 李华
网站建设 2026/9/30 4:29:23

Bash中let与普通赋值有何不同?详解算术求值、退出码与set -e陷阱

我之前调试一个批量重命名的脚本时,遇到一段看起来毫无问题的代码:let "n n 1"跟我想的一样吗?不,它彻底打乱了我的脚本。原因很简单:let不是“赋值语句”,它是一门独立的算术求值器。这个名字…

作者头像 李华
网站建设 2026/9/30 4:29:21

TensorFlow本质:端到端模型生命周期操作系统

1. 这不是“又一个深度学习框架”——TensorFlow 的真实定位与误用起点 很多人第一次听说 TensorFlow,是在某篇“2024年AI工程师必学工具”清单里,和 PyTorch 并列排在第二行;也有人是在公司内部培训PPT上看到它被标为“生产级首选”&#x…

作者头像 李华
网站建设 2026/9/30 4:29:18

Paperclip范式:AI Agent能力封装的工程实践

1. “Paperclip”不是回形针:一个被误读的AI工程隐喻与真实技术图谱最近在多个技术社区和面试复盘帖里反复看到“paperclip”这个词,尤其高频出现在React、Node.js和AI agents相关的讨论中。有人把它当成某个新出的前端UI库,有人以为是OpenCl…

作者头像 李华
网站建设 2026/9/30 4:29:16

AI工程骨架:从零构建可生产、可维护、可演进的AI系统

1. 这不是“搭积木”,而是重建AI系统的地基“AI Engineering from Scratch”——看到这个标题,很多人第一反应是:又要学Python、装PyTorch、跑个MNIST?不。这六个单词背后,是一整套被工业界反复验证却极少被系统拆解的…

作者头像 李华