完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、PWM
1.PMM相关知识 PWM PMM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式。 脉宽调制(PWM)基本原理 控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率 。 2.输出PWM波形 首先我们要知道PWM波形是什么样子的,首先我们要学习到PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。PWM 模式分为两种,PWM1 和 PWM2。相关波形如下: (图源来自百度百科) 3.PWM输出波形实验 了解了这么多现在开始实验。 首先我们找到代码,这里使用的野火开发板,他自带有相关代码,我们直接用。 打开一看 我们只输入1路,这个是4路,找到bsp_GeneralTim.c文件,找到输出比较通道GPIO初始化部分,把通道2、3、4都注释掉。注销掉主要是怕之后需要又找不到。 上图2、3、4路都用注销掉。 然后我们连接开发板,配置,然后进行烧录(连接和配置的关键点之前的博客有提到,可以看一下)然后开发板和示波器相连。最后得到如下波形: 二、 DAC 1.DAC相关知识 DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。 STM32具有片上DAC外设,它的分辯率可配置为8位或12位的数字输入信号,具有两个DAC输出通道,这两个通道互不影响,每个通道都可以使用DMA功能,都具有出错检测能力,可外部触发。 DAC构成特点 DAC主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。 根据位权网络的不同,可以构成不同类型的DAC,如权电阻网络DAC、R–2R倒T形电阻网络DAC和单值电流型网络DAC等。权电阻网络DAC的转换精度取决于基准电压VREF,以及模拟电子开关、运算放大器和各权电阻值的精度。它的缺点是各权电阻的阻值都不相同,位数多时,其阻值相差甚远,这给保证精度带来很大困难,特别是对于集成电路的制作很不利,因此在集成的DAC中很少单独使用该电路 。 它由若干个相同的R、2R网络节组成,每节对应于一个输入位。节与节之间串接成倒T形网络。R–2R倒T形电阻网络DAC是工作速度较快、应用较多的一种。和权电阻网络比较,由于它只有R、2R两种阻值,从而克服了权电阻阻值多,且阻值差别大的缺点 。 电流型DAC则是将恒流源切换到电阻网络中,恒流源内阻极大,相当于开路,所以连同电子开关在内,对它的转换精度影响都比较小,又因电子开关大多采用非饱和型的ECL开关电路,使这种DAC可以实现高速转换,转换精度较高 。 2.DAC条件波形输出 输出一个周期2khz的正弦波 我们用的野火开发板,官方代码如下位置 打开工程 输出一个周期为2kHz的正弦波,通过计算公式,我们可以得到,一共需要3600个采样点。对代码进行修改。或者我们不用采样,直接改周期节点,找到bsp_dac.c文件,找到TIM2基本定时器配置部分,为了输出2khz正弦波,把箭头所指的定时周期从(20-1)改为(1125-1) 然后我们进行编译并配置成功后把程序烧录到开发板,顺便把示波器连接到开发板上。显示如下 3.把一段数字音频歌曲数据转换为模拟音频波形输出 使用软件:Audition、UltraEdit、notepad++ 先准备一段音频然后进行切割,切割不超过5秒,不然会出现转换字符上万你删都删不完的大型我人傻了.jpg场景。 老Audition用户了,由于这个操作比较简单就不赘述了。我们快马加鞭进入关键步骤: 用UltraEdit软件打开刚刚的wav文件: 然后快捷键Ctrl+A快速全选,点击右键十六进制复制所选视图,复制完成后新建文件,粘贴。题外话,我们一开始不会全选就在那儿慢慢选浪费了很多时间。 先放记事本里,然后打开工程,以上生成的内容全部粘贴到bsp_dac.c文件的波形数据部分,截太长就会显示内存不够!内存不够解决方法:点击魔术棒-》C/C++,把优化等级从Level 0调至Leval 2,优化等级越高程序优化的越多;如果还是行不通,只能把你的数据删减掉一部分,使数据能存储。 复制进去后开始修改配置烧录老三样。 然后就能听到音乐了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1574 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1519 浏览 1 评论
949 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
672 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1565 浏览 2 评论
1852浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
622浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
507浏览 3评论
512浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
494浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 18:17 , Processed in 0.676886 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号