任务要求
本人所用STM32为野火家F103指南者
烧录用具ST-LINK
代码编写为KILE5
音频软件为AU
- 用STM32F103输出一路PWM波形,建议采用定时器方法。野火和网上大多数资源采用此方法,有完整源码。用示波器观察输出波形。参考网址如:https://www.cnblogs.com/zhj868/p/12640717.html
- 用STM32F103的DAC功能完成以下波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。
1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
PWM应用
PWM应用在定时器模块,而在STM32的定时器模块的解释如下:
STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。
基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。
通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。
高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。
在这里·我们采用的是通用定时器模式。
将通用定时器分为四个部分:
1,选择时钟
2,时基电路
3,输入捕获
4,输出比较
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
而我们说的PWM模式就是说信号输入时,PWM 信号由输入通道 TI1 进入,因为是 PWM 输入模式的缘故,信号会被分为两路,
一路是 TI1FP1,另外一路是 TI2FP2。其中一路是周期,另一路是占空比,具体哪一路信号对应周期还是占空比,得从程序上设置哪一路信号作为触发输入,作为触发输入的哪一路信号对应的就是周期,另一路就是对应占空比。作为触发输入的那一路信号还需要设置极性,是上升沿还是下降沿捕获,一旦设置好触发输入的极性,另外一路硬件就会自动配置为相反的极性捕获,无需软件配置。
例程编写
1.利用野火自带的学习资料里的例程32,
PWM 输入则只能使用两个通道,即通道 1 和通道 2,且一路 PWM 输入要占用两个捕获寄存器,一个用于捕获周期,一个用于捕获占空比。在本节实验中,我们用通用定时器产生一路 PWM 信号,然后用高级定时器的通道 1 或者通道 2 来捕获。位置如下:
2,用KEIL5打开,如下:
3,编译工程,无需改动,再设置烧录如下:
3,硬件连接图如下:
4,烧录后用PA4与接地与示波器连接,观察输出如下:
5,打开串口调试助手,打开串口,显示占空比,如下:
DAC应用
DAC 为数字/模拟转换模块,作用就是把输入的数字编码,转换成对应的模拟电压输出。
在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。
例程编写
(1)输出2KHZ的正弦波:
输出正弦波的方式如下:
- 计算获取正弦波数据表;
- 根据正弦波数据表的周期内点数和周期计算定时器触;
- 初始化 DAC 输出通道,初始化 DAC 工作模式;
- 配置触发 DAC 用的定时器;
- 配置 DMA 自动转运正弦波数据
1,打开野火自带的DAC输出正弦波