用STM32F103输出一路PWM波形和DAC功能完成波形输出

一、 PWM相关概念

占空比:就是输出的PWM中,高电平保持的时间 与 该PWM的时钟周期的时间 之比
如,一个PWM的频率是1000Hz,那么它的时钟周期就是1ms,就是1000us,如果高电平出现的时间是200us,那么低电平的时间肯定是800us,那么占空比就是200:1000,也就是说PWM的占空比就是1:5。
分辨率也就是占空比最小能达到多少,如8位的PWM,理论的分辨率就是1:255(单斜率), 16位的的PWM理论就是1:65535(单斜率)
频率就是这样的,如16位的PWM,它的分辨率达到了1:65535,要达到这个分辨率,T/C就必须从0计数到65535才能达到,如果计数从0计到80之后又从0开始计到80…,那么它的分辨率最小就是1:80了,但是,它也快了,也就是说PWM的输出频率高了。
双斜率 / 单斜率
假设一个PWM从0计数到80,之后又从0计数到80… 这个就是单斜率。
假设一个PWM从0计数到80,之后是从80计数到0… 这个就是双斜率。
可见,双斜率的计数时间多了一倍,所以输出的PWM频率就慢了一半,但是分辨率却是1:(80+80) =1:160,就是提高了一倍。
假设PWM是单斜率,设定最高计数是80,我们再设定一个比较值是10,那么T/C从0计数到10时(这时计数器还是一直往上计数,直到计数到设定值80),单片机就会根据你的设定,控制某个IO口在这个时候是输出1还是输出0还是端口取反,这样,就是PWM的最基本的原理了。

PWM控制的基本原理

理论基础:
冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。
用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。SPWM波形——脉冲宽度按正弦规律变化而和正弦波等效的PWM波形。
在这里插入图片描述

二、用STM32F103输出一路PWM波形

从参考网址获取完整代码
(点击这里)
在这里插入图片描述

打开并烧录连上示波器
得到如下波形

在这里插入图片描述

三、DAC的介绍

1.DAC(数字/模拟转换模块)

把输入的数字编码,转换成对应的模拟电压输出。

2.ADC(模拟/数字转换模块)

把输入的模拟信号,转换成对应的数字信号。

3.DAC的特点

2个DAC转换器
8位或12位单调输出
12位模式下数据的左对齐或者右对齐
同步更新功能
噪声波形生成
三角波形生成
双DAC通道同时或者分别转换
每个通道都有DMA功能

4.DAC模块功能框图

在这里插入图片描述

四、输出周期2khz的正弦波

用matlab打开sinwave文件在这里插入图片描述
得到取样点并复制取样点
在这里插入图片描述
并将取样点保存到之前路径下的dac_sinWave.c文件
将这些数据复制到工程代码中的const uint16_t Sine12bit函数中
在这里插入图片描述
烧录并连接示波器得到波形图在这里插入图片描述

五、将一段数字音频歌曲数据转换为模拟音频波形输出

1.使用Audition截取一段喜欢的音乐
在这里插入图片描述
将音频转为代码
在这里插入图片描述
随便复制其中一些数据替换掉工程程序中的const uint16_t Sine12bit数据
烧录并调试示波器得到两种波形(我也不知道那种是正确的)
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值