STM32的PWM和DAC练习

一、用STM32F103输出一路PWM波形,建议采用定时器方法。

所用器材:野火Stm32F103指南者开发板
使用代码:野火自带的PWM输出波形工程文件
野火产品资料链接:
https://ebf-products.readthedocs.io/zh_CN/latest/

1.PWM简介

脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。
在野火资料包中打开高级定时器
找到工程文件
在这里插入图片描述
main.c

int main(void)
{	
	/* 高级定时器初始化 */
	ADVANCE_TIM_Init();
  while(1)
  {      
  }
}

其他代码:

static void ADVANCE_TIM_GPIO_Config(void) 
{
  GPIO_InitTypeDef GPIO_InitStructure;

  // 输出比较通道
	RCC_APB2PeriphClockCmd(ADVANCE_TIM_CH1_GPIO_CLK, ENABLE);
  GPIO_InitStructure.GPIO_Pin =  ADVANCE_TIM_CH1_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(ADVANCE_TIM_CH1_PORT, &GPIO_InitStructure);

  // 输出互补通道
	RCC_APB2PeriphClockCmd(ADVANCE_TIM_CH1N_GPIO_CLK, ENABLE);
  GPIO_InitStructure.GPIO_Pin =  ADVANCE_TIM_CH1N_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(ADVANCE_TIM_CH1N_PORT, &GPIO_InitStructure);
  
	// 默认输出低电平
	GPIO_ResetBits(ADVANCE_TIM_BKIN_PORT,ADVANCE_TIM_BKIN_PIN);	
}

2.最终结果

在这里插入图片描述

二、用STM32F103的DAC功能完成输出一个周期2khz的正弦波(循环)。

要求:此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;
所用软件:音频编辑工具Audiotion、UltraEdit、 notepad++
实验代码:野火自带的的工程文件
野火产品资料链接:
https://ebf-products.readthedocs.io/zh_CN/latest/

1.DAC

数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。

2.修改周期计算

输出一个周期为2kHz的正弦波,通过计算公式,我们可以得到,一共需要3600个采样点
在这里插入图片描述
打开野火的资料包里的这个文件
在这里插入图片描述
在这里插入图片描述
这里我选择的时matlab脚本
将其修改为3600等份

在matlab上运行此程序其生成的点会保存至下面这个文件
在这里插入图片描述
然后将下面文件的生成的点复制到
在这里插入图片描述
在这里插入图片描述
main.c:

int main(void)
{
	while(1)
	{

			DAC_Mode_Init();
	
	}  	  
}

3.连接设备

具体知识在野火资料库的pdf中可以找到
在这里插入图片描述

4.运行结果

在这里插入图片描述
可以听见滴滴的单音但声音很小。
在这里插入图片描述

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

1.音频截取

利用软件https://pan.baidu.com/share/init?surl=1QOMjvzfAqC285FF8eFceg
提取码:7egp
使用auditionr软件打开一个音频,截取一段右键存储选区为
截取不要过长
在这里插入图片描述
在这里插入图片描述
利用上面所说的软件
在这里插入图片描述
在打开文件中放入刚才生成的文件然后选择生成代码
在这里插入图片描述
然后选择保存代码将其生成代码复制
在这里插入图片描述
可以看到这里的生成字节数
下面把复制好的代码如上面的实验一样弄到这数组里
在这里插入图片描述

2.运行结果

将hex文件烧录后开发板连接示波器后
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值