STM32野火开发板的PWM和DAC练习

一.采用定时器方法使STM32F103输出一路PWM波形

1.PWM输出模式介绍

PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器ARR的值决定,占空比由比较寄存器CCR的值决定。PWM模式分为两种,PWM1和PWM2,总得来说是差不多,就看你怎么用而已,具体的区别见表格32-1。
在这里插入图片描述
1.PWM边沿对齐模式
在递增计数模式下,计数器从0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从0 开始计数并生成计数器上溢事件
在这里插入图片描述
在边沿对齐模式下,计数器CNT只工作在一种模式,递增或者递减模式。这里我们以CNT工作在递增模式为例,在中,ARR=8,CCR=4,CNT从0开始计数,当CNT<CCR的值时,OCxREF为 有 效 的 高 电 平 , 于 此 同 时 , 比 较 中 断 寄 存 器CCxIF置位。当CCR=<CNT<=ARR时,OCxREF为无效的低电平。然后CNT又从0开始计数并生成计数器上溢事件,以此循环往复。
2.PWM中心对齐模式
在这里插入图片描述
在中心对齐模式下,计数器CNT是工作做递增/递减模式下。开始的时候,计数器CNT从0 开始计数到自动重载值减1(ARR-1),生成计数器上溢事件;然后从自动重载值开始向下计数到1 并生成计数器下溢事件。之后从0 开始重新计数。图32-14是PWM1模式的中心对齐波形,ARR=8,CCR=4。第一阶段计数器CNT工作在递增模式下,从0开始计数,当CNT<CCR的值时,OCxREF为有效的高电平,当CCR=<CNT<<ARR时,OCxREF为无效的低电平。第二阶段计数器CNT工作在递减模式,
零死角玩转STM32F103—指南者第453页共835从ARR的值开始递减,当CNT>CCR时,OCxREF为无效的低电平,当CCR=>CNT>=1时,OCxREF为有效的高电平。在波形图上我们把波形分为两个阶段,第一个阶段是计数器CNT工作在递增模式的波形,这个阶段我们又分为①和②两个阶段,第二个阶段是计数器CNT工作在递减模式的波形,这个阶段我们又分为③和④两个阶段。要说中心对齐模式下的波形有什么特征的话,那就是①和③阶段的时间相等,②和④阶段的时间相等。中心对齐模式又分为中心对齐模式1/2/3 三种,具体由寄存器CR1位CMS[1:0]配置。具体的区别就是比较中断中断标志位CCxIF在何时置1:中心模式1在CNT递减计数的时候置1,中心对齐模式2在CNT递增计数时置1,中心模式3在CNT递增和递减计数时都置1。

2.具体实验步骤介绍

(1)我们打开野火给出的官方代码,TIM-通用定时器-4路PWM输出中的工程,其路径如下所示:
在这里插入图片描述
(2)我们将其工程编译后,将HEX文件直接烧录到野火开发板当中:
在这里插入图片描述
(3)硬件的连接:
我们需要示波器来展示波形,注意硬件的引脚连接
在这里插入图片描述
在这里插入图片描述
(4)波形展示:
在这里插入图片描述
(5)当我们调整工程中波形的占空比时,其波形变为如下所示:
在这里插入图片描述

二.STM32F103的DAC功能。

1.DAC简介及功能图

DAC为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。STM32具有片上DAC外设,它的分辨率可配置为8位或12位的数字输入信号,具有两个DAC输出通道,这两个通道互不影响,每个通道都可以使用DMA功能,都具有出错检测能力,可外部触发
在这里插入图片描述
整个DAC模块围绕框图下方的“数字至模拟转换器x”展开,它的左边分别是参考电源的引脚:𝑉𝐷𝐷𝐴、𝑉𝑆𝑆𝐴及𝑉𝑟𝑒𝑓+,其中STM32的DAC规定了它的参考电压𝑉𝑟𝑒𝑓+输入范围为2.4——3.3V。“数字至模拟转换器x”的输入为DAC的数据寄存器“DORx”的数字编码,经过它转换得的模拟信号由图中右侧的“DAC_OUTx”输出。而数据寄存器“DORx”又受“控制逻辑”支配,它可以控制数据寄存器加入一些伪噪声信号或配置产生三角波信号。图中的左上角为DAC的触发源,DAC根据触发源的信号来进行DAC转换,其作用就相当于DAC转换器的开关,它可以配置的触发源为外部中断源触发、定时器触发或软件控制触发。如本章实验中需要控制正弦波的频率,就需要定时器定时触发DAC进行数据转换。

2.正弦波频率的计算方式:

在这里插入图片描述

3.输出一个周期2khz的正弦波(循环),驱动作用至蜂鸣器或喇叭。

我们打开野火官方代码库中的代码:
在这里插入图片描述
根据计算公式就可以知道,将bsp_dac.c中的20改为1126,就可以得到2Khz的正弦波。
在这里插入图片描述
然后我们将程序烧录到野火开发板当中,即可得到相应的波形:
在这里插入图片描述

4.将一段数字音频歌曲数据转换为模拟音频波形输出(循环)

(1)首先将歌曲中的一个片段转换为wav格式:
我们首先用Adobe Audition CS6打开一个mp3文件,将其另存为wav格式,其中采样率修改为8000,以满足实现用音频制作工具制作一段数字化的2khz正弦波wav文件:
在这里插入图片描述
(2)我们打开刚才转换为wav格式的文件,进行歌曲的片段裁剪,并且裁剪长度为10s:
在这里插入图片描述
在这里插入图片描述
选择文件保存位置,设置采样频率为8000,单声道,16位
在这里插入图片描述
(3)把得到的文件用Ultraedit打开来处理处理音频代码
在这里插入图片描述
Ctrl+A全选,选择16进制复制所选视图,新建文件,并且粘贴:
在这里插入图片描述
然后再用Ultraedit打开,右键点击选择范围,选择中间代码部分复制到另一个txt文件中保存,然后再用nodepad++打开这个txt文件,点击列块编辑。
在这里插入图片描述
在这里插入图片描述
变换后如下所示:
在这里插入图片描述
然后我们把得到的代码复制到野火的官方模板 DAC输出 中,并且删掉const uint8_t Sine12bit[]函数括号里的参数。编译成功后,进行烧录到板子上即可。在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 野火STM32F103开发板是一款基于STM32F103C8T6微控制器的开发板,其原理图用于描述开发板上各元器件的连接关系和工作原理。原理图通常包括主控芯片、外设模块、电源模块和外部接口等几个主要部分。 首先,原理图中的主控芯片是STM32F103C8T6微控制器,该芯片是基于ARM Cortex-M3内核的32位微控制器,具有丰富的外设资源和强大的处理性能。它是整个开发板的核心部分,负责执行用户程序的运行和控制各个外设模块的工作。 其次,原理图中的外设模块包括串口模块、蜂鸣器模块、LCD模块、按键模块等,这些外设模块可以为开发者提供丰富的功能扩展和实验环境。串口模块可以实现与PC机的通信,蜂鸣器模块可以产生声音提示,LCD模块可以显示图形和文字,按键模块可以进行各种输入操作等。 此外,原理图中还包括电源模块,用于为整个开发板提供稳定的电源。电源模块通常由直流电源和稳压电路组成,可以将外部电源经过稳压电路稳定在正常工作电压范围内,以保障各个电子元器件的正常工作。 最后,在原理图中还可以看到一些外部接口,例如USB接口、SD卡接口、JTAG接口和蓝牙接口等。这些接口可以方便开发者连接外部设备和扩展模块,实现更多功能和应用需求。 综上所述,野火STM32F103开发板的原理图是用于描述开发板上各个模块和电路的连接关系和工作原理的图纸,通过原理图可以清晰地了解开发板的硬件构造和工作方式,为开发者提供便利,以便开展相应的嵌入式软件开发和实验。 ### 回答2: 野火STM32F103开发板的原理图是一种用于STM32F103系列微控制器的硬件设计图纸。原理图描述了开发板上各个组件和元件的连接方式和电气联系。通过原理图,我们可以清晰地了解开发板的电路结构和设计。 在野火STM32F103开发板的原理图中,主要包括微控制器、外部时钟源、电源管理电路、各种外设和连接接口等。微控制器是整个系统的核心部件,它执行程序逻辑并控制外部设备的操作。外部时钟源提供系统时钟,确保微控制器运行的稳定性和准确性。电源管理电路用于稳定供电,保护各个电路模块的工作。 开发板上还包括了一些常见的外设模块,例如LED指示灯、按键、LCD显示屏、EEPROM等,这些外设可以用来进行功能拓展和开发实验。此外,开发板上还提供了多种连接接口,如USB接口、串口接口、I2C接口、SPI接口等,方便与外部设备和计算机进行通信。 通过查阅野火STM32F103开发板的原理图,我们可以了解到开发板上各个模块的电路连接方式、电源电压、信号引脚定义等信息,这对于开发者进行硬件调试和二次开发非常重要。同时,原理图也可以作为学习STM32F103微控制器硬件设计的参考,帮助我们更好地理解和掌握STM32F103系列微控制器的工作原理和应用。 ### 回答3: 野火STM32F103开发板是一款基于STM32F103C8T6芯片的开发板,原理图详细描述了板上各个元件之间的连接关系和电路设计。 在原理图中,首先可以看到STM32F103C8T6芯片,它是开发板的核心部分,负责处理器与外设之间的通信和控制。接下来,原理图详细展示了芯片的引脚连接,如电源引脚、GPIO引脚、串口引脚等,这些引脚将与开发板上的外部元件进行连接。 原理图还展示了开发板上的其他外设,如LED灯、按键、连接器等。这些外设的连接方式和接口也在原理图中详细标注,包括其引脚的连接关系和电路设计。 此外, 原理图还包括了电源电路的设计,包括稳压器、电容器等,用于提供稳定的电源供应给开发板和芯片。 通过查看原理图,我们可以了解到开发板上各个元件之间的连接方式和电路设计,从而更好地理解和使用开发板。同时,原理图也方便用户在开发过程中进行扩展,可以根据需求进行电路的调整和改进。 总之,野火STM32F103开发板原理图是设计者根据电路连接原则和外设要求设计的一张图纸,能够清晰展示出开发板上各个元件之间的连接关系和电路设计。通过查看和理解原理图,用户能够更好地使用这款开发板进行STM32F103C8T6芯片的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值