PWM DAC应用试验
PWM DAC原理
PWM本质上是周期一定,高低电平占空比可调的方波
函数表示:
展开傅里叶级数:
N:PWM波一周期中高电平的计数脉冲个数,即STM32ARR-1的值
n:PWM波一周期中高电平的计数脉冲个数,即STM32CCRx的值
VH和VL分别是PWM波的高低电平电压值,k为谐波次数,t为时间
将②式中的谐波过滤掉,则可以得到从PWM波到电压输出DAC的转换:PWM波解调(滤波器)
②式变成:
若VL=0,则f(t)=[n/N Vh];
分辨率:log2(N)
PWM DAC硬件
二阶RC滤波截止频率计算公式:f=1/2 πRC
实验程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "key.h"
#include "pwmdac.h"int main(void)
{u16 adcx;float temp;u8 t=0;u16 pwmval =0;u8 key;NVI_PriorityGroupConfig(NVIC_PriorityGroup_2);delay_init(168);uart_init(115200);LED_Init();LCD_Init();Adc_Init();KEY_Init();//初始化TIM9_CH2_PWM_Init(255,0);//TIM4 PWM 初始化,Fpwm=168M/256POINT_COLOR=RED;LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");LCD_ShowString(30,70,200,16,16,"PWM DAC TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(30,110,200,16,16,"2014/5/6"); LCD_ShowString(30,130,200,16,16,"WK_UP:+ KEY1:-"); POINT_COLOR=BLUE; LCD_ShowString(30,150,200,16,16,"DAC VAL:"); LCD_ShowString(30,170,200,16,16,"DAC VOL:0.000V"); LCD_ShowString(30,190,200,16,16,"ADC VOL:0.000V");TIM_SetCompare2(TIM9,pwmval); //初始值
while(1){t++;key=KEY_Scan(0); if(key==4){ if(pwmval<250)pwmval+=10;TIM_SetCompare2(TIM9,pwmval); //输出}else if(key==2) {if(pwmval>10)pwmval-=10;else pwmval=0;TIM_SetCompare2(TIM9,pwmval); //输出} if(t==10||key==2||key==4) { adcx=TIM_GetCapture2(TIM9);;LCD_ShowxNum(94,150,adcx,3,16,0); //DAC寄存器值temp=(float)adcx*(3.3/256);; //得到DAC电压值adcx=temp;LCD_ShowxNum(94,170,temp,1,16,0); //显示电压值整数部分temp-=adcx;temp*=1000;LCD_ShowxNum(110,170,temp,3,16,0x80); //小数部分adcx=Get_Adc_Average(ADC_Channel_5,20); //得到ADC转换值temp=(float)adcx*(3.3/4096); //得到ADC电压值adcx=temp;LCD_ShowxNum(94,190,temp,1,16,0); //显示电压值整数部分temp-=adcx;temp*=1000;LCD_ShowxNum(110,190,temp,3,16,0x80); //显示电压值小数部分t=0;LED0=!LED0; } delay_ms(10); }
}
PWM DAC应用试验相关推荐
- 用PWM实现DAC功能
现在单片机型号很多,但是内部拥有12位DAC且性价比较高的芯片恨少,导致在芯片选型时,捉襟见肘.没办法,就想着用PWM实现DAC的功能,这只是初步理论,还没有实践过,先贴出来,后续实现再看效果如何吧. ...
- 正点原子:STM32F103(战舰)、STM32F407(探索者)、STM32F103(MINI)原理图和PCB
目录 1.STM32F103(战舰) 2.STM32F407(探索者) 3.STM32F103(MINI) 为各位嵌入式好朋友分享三个重磅资源,正点原子三件套,可直接打样使用~ 1.STM32F103 ...
- 咦?智能颈部按摩仪还能语音播报,快搞起来!
一.档位切换实现 1.档位实现原理 按摩仪共设置15个档位,可以控制按摩的力度,通过BOOST升压电路实现. 通过P8口产生PWM波,调节PWM输出的正占空比来实现升压,详细的硬件原理可参考硬件部分关 ...
- 基于WT588F02B语音芯片的智能语音感应洗手液器设计方案
随着人类文明的进步,人们对健康卫生越来越重视,特别是在当前新冠疫情的情景下,出门戴口罩,回家消毒洗手尤为重要,其中洗手已经成为人们日常生活中必不可少的一个环节.这就诞生了很多与洗手有关的产品,这里主要 ...
- STM32F4开发板硬件简介
参考:STM32F4开发板硬件平台简介 作者:SKY丶丿平才 发布时间: 2021-03-20 10:44:41 网址:https://blog.csdn.net/weixin_48264057/ar ...
- 语音芯片排行榜,为何唯创知音WT588F语音芯片如此受欢迎
随着智能家居.智能玩具.智能机器人等领域的快速发展,语音芯片逐渐成为智能硬件的重要组成部分.在众多语音芯片中,唯创知音WT588F语音芯片备受关注,成为市场上备受欢迎的产品.那么,WT588F语音芯片 ...
- ARM Mbed在线IDE编程意法半导体(ST)开发板
硬件 软件 介绍 STM32F407发现板不直接支持MBED在线IDE. 但是该板上的MCU也用于另一块官方MBED板上(Seeed Studio Arch Max v1.1). 因此,可以通过将发现 ...
- STM32F4开发板硬件平台简介
文章目录 前言 一.ALIENTEK 探索者 STM32F4 开发板资源初探 1.开发板资源图 2.ALIENTEK 探索者 STM32F4 开发板板载资源汇总 3.ALIENTEK 探索者 STM3 ...
- STM32F4 | 最小系统设计 | 开发板资源介绍 | 开发环境搭建 | 程序下载
文章目录 一.STM32最小系统设计 1.什么叫MCU最小系统? 2.STM32最小系统 2.1 供电电路(电源部分) 2.2 复位电路 2.3 时钟电路 2.4 BOOT启动模式选择 2.5 下载电 ...
最新文章
- SAP freelancer接SAP项目应有底线思维
- 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
- python3 爬虫--Chrome以及 Chromedriver安装配置
- C语言 回调函数 produce(arr,len,getRand)
- 可以闭眼入的O'REILLY机器学习神书出新版了!
- android 格式化分区,Android FAT分区格式化
- linux 运行段错误,在linux下代码运行出现段错误,求大神
- 为什么坚持一件事总是那么难,而且有时候总是三分钟热度?
- SQL_delete删除数据
- 从多路搜索树到 B-树
- [原创]UUID的介绍和使用
- Android studio配置Google play服务
- php 执行bat文件,bat执行PHP文件
- 计算机模式识别科学家年薪,年薪可达80万,学人工智能要去这些学校
- 网络广告投放基础,广告
- Mac系统升级Git
- 项目管理过程中六种冲突解决方法
- python3ide安卓版官网下载_Pydroid3官方版-Pydroid3最新版下载v4.01 - 7230手游网
- 【蓝桥杯】【Python】次数差
- rangeOfString 与containsString