Stm32G431时钟触发的DAC+OPAMP

这是一个卑微电子信息学员的开始
2月18日工作记录

这是学习stm32的第n天

寒假开始了,卑微电子信息学员开始了stm32的学习过程。

重做DAC

我发现在网上使用Stm32G系列的人很少,没有什么参考的例子

基础的DAC

使用的开发板:Stm32G431RB
简单的事物往往只需要简单的**
最简单的DAC
在这里插入图片描述

// An highlighted block
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
// 一句话完事,或者不设三角波,在使能DAC前设定输出值
HAL_DAC_SetValue(&hdac3, DAC_CHANNEL_2, DAC_ALIGN_12B_R, (1.0 / 3.3 * 4096));
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);

时钟触发的DAC
在这里插入图片描述
在这里插入图片描述
count period 可以大一点 反正我2分频是没问题的(85M)

// 注意记得使能时钟
if (HAL_TIM_Base_Start(&htim15) != HAL_OK){
  Error_Handler();
}
// An highlighted block
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
// 一句话完事,或者不设三角波,在使能DAC前设定输出值
HAL_DAC_SetValue(&hdac3, DAC_CHANNEL_2, DAC_ALIGN_12B_R, (1.0 / 3.3 * 4096));
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);

时钟触发的DAC+DMA
在这里插入图片描述
左边word右边halfword
这个很重要 一般都是死在这里

// 注意记得使能时钟
#include "main.h"
uint16_t sinewave[60];
uint16_t i;
for(i=0;i<60;i++){
	sinewave[i]=sin(i/60.0*2*3.1415926)*500+1000;
}
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1,(uint32_t *)sinewave,60,DAC_ALIGN_12B_R);
if (HAL_TIM_Base_Start(&htim15) != HAL_OK){
  Error_Handler();
}

代码包见结尾

DAC+OPAMP 的进阶应用

如果直接用dac输出,波形的上端和下端极限值处都会有明显的失真(懂得都懂)
所以我们要使用运算放大器
我用的是ST官方卖的开发板:Stm32G431RB

dac配置如下
在这里插入图片描述
out2和out1一样 懒

opamp配置如下
在这里插入图片描述
opamp1和opamp3一样 懒
timer和上面基础的一样 懒

代码很简单

	HAL_OPAMP_Start(&hopamp1);
	HAL_DAC_Start(&hdac3, DAC_CHANNEL_1);
	HAL_OPAMP_Start(&hopamp3);
	HAL_DAC_SetValue(&hdac3, DAC_CHANNEL_2, DAC_ALIGN_12B_R, (1.0 / 3.3 * 4096));//这句话很有意思 ennn 看后面
	HAL_DAC_Start(&hdac3, DAC_CHANNEL_2);
	
	if (HAL_TIM_Base_Start(&htim15) != HAL_OK)
  {
    /* DAC conversion start error */
    Error_Handler();
  }

怎么加dam就和上面基础一样 懒
代码包见结尾

DAC+OPAMP 的发现

G系列还是挺有意思的
第一个有意思的发现是他的三角波是通过计数器累加实现的
所以如果设定输出三角波的时候HAL_DAC_SetValue就可以将三角波的初始值上调,同时,如果超出4096就会翻转(反正就是到下面 懂得都懂)就像我前面写的一样
第二个有意思的是不知道为什么我这块板子adc3的out1无法输出,明明和out2的配置一模一样(可能是那里的引脚复用);写了out1半年没反应,结果out2一下子就好了。辣鸡。。。

具体的文件嘛 一个是你直接问我要(我不一定在线)
或者直接问我买 哈哈哈哈哈 气不死你
https://download.csdn.net/download/mohaoyuan/15356110
本文仅供学习使用,禁止一切转载或调用,最终解释权由作者本人享有。


版权声明:本文为mohaoyuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。