跳到主要内容

PWMDAC 实验

PWMDAC

前言

虽然STM32N647没有内部DAC,通常情况下,可以采用专用的D/A芯片来实现,但是这样就会带来成本的增加。不过STM32所有的芯片都有PWM输出,并且PWM输出通道很多,资源丰富。因此,我们可以使用PWM+简单的RC滤波来实现DAC的输出从而节省成本。

本章我们将向大家介绍如何使用STM32N647的PWM来设计一个DAC。我们将使用按键控制STM32N647的PWM输出,从而控制PWMDAC的输出电压,通过ADC1的通道15(PF6)采集PWM DAC的输出电压,并在LCD模块上面显示ADC获取到的电压值以及PWM DAC的设定输出电压值等信息

我们将设计一个8位的DAC,使用按键控制STM32N647的PWM输出(占空比),从而控制PWM DAC的输出电压。为了得知PWM的输出电压,通过ADC1的通道15(PF6)采集PWM DAC的输出电压,并在LCD模块上面显示ADC获取到的电压值以及PWM DAC的设定输出电压值等信息。

本实验对应的工程文件夹为:<STM32N647 开发板软件包路径>/Projects/22_PWMDAC

实验准备

  1. 将 STM32N647 开发板软件包中提供的示例 FSBL 固件烧录到 STM32N647 开发板上。
FSBL 烧录说明

本实验使用的 FSBL 为 STM32N647 开发板软件包中的示例 FSBL,请根据 示例 FSBL介绍 中的说明烧录对应 fsbl.hex

不同的的实验中,若使用相同的 FSBL,则无需重复烧录。

  1. 将工程文件夹下 Binary 目录下的 appli.hex 依次烧录到 STM32N647 开发板上。
烧录说明

烧录顺序不影响烧录结果。

使用 STM32CubeProgrammer 烧录

  1. 将 LCD 通过 FPC 延长线接入 STM32N647 开发板核心板的 RGBLCD 接口。
LCD 适配说明

本实验例程仅支持 正点原子 RGB 触摸屏模块

  1. 用跳线帽短接 STM32N647 开发板 P1P14 接口的 PDCADC 排针。

  2. 将 STM32N647 开发板的 BOOT 模式配置为 Flash boot 模式

STM32N647 开发板 BOOT 模式配置说明

通过 STM32N647 开发板 P6 的跳线帽配置其 BOOT 模式:

Development boot:B1 接 3V3

Flash boot:B0、B1 都接 GND

  1. 将对应接口的电源线接入 STM32N647 开发板底板的 USB Type-C 接口或 DC 接口,为其进行供电,并将 K1 自锁开关切换到开启状态。

实验现象

下载代码后,LED0不停的闪烁,提示程序已经在运行了。我们按下KEY_UP/KEY1调整PWM的占空比,可以看到输出电压随PWM VAL发生变化,也可以把PF0和PWM DAC的最终输出接到示波器观察滤波后的区别。