1)资料下载:点击资料即可下载
2)对正点原子Linux感兴趣的同学可以加群讨论:935446741
3)关注正点原子公众号,获取最新资料更新
![5024b8b0cd08de7d7fd830c3c7751b34.png](https://i-blog.csdnimg.cn/blog_migrate/2006f514b0c2c44d603606d76333cec9.jpeg)
上一章,我们介绍了 STM32F4 自带 DAC 模块的使用,但有时候,可能两个 DAC 不够
用,此时,我们可以通过 PWM+RC 滤波来实一个 PWM DAC。本章我们将向大家介绍如何
使用 STM32F4 的 PWM 来设计一个 DAC。我们将使用按键(或 USMART)控制 STM32F4
的 PWM 输出,从而控制 PWM DAC 的输出电压,通过 ADC1 的通道 5 采集 PWM DAC 的
输出电压,并在 LCD 模块上面显示 ADC 获取到的电压值以及 PWM DAC 的设定输出电压
值等信息。本章将分为如下几个部分:
27.1 PWM DAC 简介
27.2 硬件设计
27.3 软件设计
27.4 下载验证
27.1 PWM DAC 简介
有时候,STM32F4 自带的 2 路 DAC 可能不够用,需要多路 DAC,外扩 DAC 成本又会
高不少。此时,我们可以利用 STM32F4 的 PWM+简单的 RC 滤波来实现 DAC 输出,从而
节省成本。 在精度要求不是很高的时候,PWM+RC 滤波的 DAC 输出方式,是一种非常廉
价的解决方案。
PWM 本质上其实就是是一种周期一定,而高低电平占空比可调的方波。实际电路的典
型 PWM 波形,如图 27.1.1 所示:
![029bbf05d9d12d81a40ecd1cc3024996.png](https://i-blog.csdnimg.cn/blog_migrate/f23f8a0b73081e2adaaf9a7079962355.png)
图 27.1.1 的 PWM 波形可以用分段函数表示为式①:
![243175a2bfab37c66926fd0ac7c15191.png](https://i-blog.csdnimg.cn/blog_migrate/e33bc498159b1728850c9fe738dd40e9.png)
其中:T 是单片机中计数脉冲的基本周期,也就是 STM32F4 定时器的计数频率的倒数。
N 是 PWM 波一个周期的计数脉冲个数,也就是 STM32F4 的 ARR-1 的值。n 是 PWM 波一
个周期中高电平的计数脉冲个数,也就是 STM32F4 的 CCRx 的值。VH 和 VL 分别是 PWM
波的高低电平电压值,k 为谐波次数,t 为时间。我们将①式展开成傅里叶级数,得到公式
②: