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
本文仅供学习使用,禁止一切转载或调用,最终解释权由作者本人享有。

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: STM32G431是一款集成了操作放大器(OPAMP)功能的微控制器。OPAMP是一种电子器件,可以将输入信号放大到更高的电压、电流或功率水平。STM32G431OPAMP功能使其能够实现各种应用,如放大、滤波、比较、采样和传感器接口等。 STM32G431具有三个独立的OPAMP模块,每个模块可以配置成不同的工作模式,包括非反相放大器、比较器和跟随器等。这意味着STM32G431可以同时执行多个不同的OPAMP任务,从而提高系统的灵活性和性能。 此外,STM32G431OPAMP模块还支持多种功耗模式,以满足不同应用场景下的要求。例如,低功耗模式可以降低功耗,延长电池寿命;高速模式可以提高数据传输速率,适用于对响应时间有严格要求的应用。 STM32G431OPAMP模块还具有多种内部参考电压源和外部反馈电阻设置,可以根据应用需求进行灵活配置。通过这些配置选项,可以实现不同的放大倍数、增益调节、偏置电压及电流等功能。 总而言之,STM32G431OPAMP功能为电子系统设计提供了一种高度集成、灵活可配置的放大器解决方案。无论是在工业自动化、医疗设备、通信技术还是家电等领域,STM32G431OPAMP模块都可以发挥重要作用,满足各种应用需求。 ### 回答2: STM32G431是STMicroelectronics(意法半导体)推出的一款具有OPAMP(运算放大器)功能的微控制器芯片。 OPAMP是一种重要的电子器件,常用于信号放大、滤波、比较、运算等电路中。在STM32G431中,集成了多个OPAMP模块,方便设计师在嵌入式系统中实现各种功能。每个OPAMP模块都包括两个独立的运算放大器,可以同时处理不同的信号。此外,OPAMP还具有高增益、低功耗、稳定性好等特点。 STM32G431OPAMP模块采用偏移校正技术,可以减小运算放大器的偏移电压,提高信号放大的准确性。此外,还具有低噪声和低失调特性,这使得其在音频放大、传感器接口等领域具有广泛的应用前景。 STM32G431OPAMP模块支持各种输入模式,如电压跟随器、非反相输入、反相输入等。它还提供了开环增益和闭环增益两种工作模式,可以根据实际需求进行配置。此外,还支持自动校准和自动关断功能,可进一步提高系统的性能和节能能力。 总之,STM32G431OPAMP模块提供了强大的信号放大和处理能力,适用于各种嵌入式系统设计。它通过集成多个独立的运算放大器、偏移校正技术和低噪声特性,为系统设计师提供了高性能、低功耗的解决方案。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值