本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的DAC外设,输出任意指定电压值。
1. 准备工作
硬件准备
软件准备
2.生成MDK工程
选择芯片型号
打开STM32CubeMX,打开MCU选择器:
搜索并选中芯片STM32L431RCT6:
配置时钟源
这里我都使用外部时钟:
配置串口
小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:
这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。
接下来开始配置USART1:
配置DAC
确定DAC输出通道
查看小熊派E53接口的原理图:
配置DAC
选择DAC1,开启输出通道2,配置保持默认即可:
配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:
生成工程设置
代码生成设置
最后设置生成独立的初始化文件:
生成代码
点击GENERATE CODE即可生成MDK-V5工程:
3. 在MDK中编写、编译、下载用户代码
重定向printf( )函数
参考: 【STM32Cube】(八)基于串口发送函数实现printf()。
编写测试代码
首先设置DAC输出的数据为12位右对齐,然后指定输出的值0-4096,实际输出的电压为
value/4096x3.3V,最后使能DAC转换,代码如下:
int main(void)
{
/* USER CODE BEGIN 1 */
uint16_t i = 0;
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DAC1_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
printf("DAC Test...rn");
HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
for(i = 0; i < 4096; i++)
{
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, i);
HAL_Delay(2);
}
printf("DAC test finish, test again!rn");
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
至此,我们已经学会如何使用DAC输出任意指定电压值。
关键字:STM32Cube DAC输出
引用地址:
【STM32Cube_21】使用DAC输出任意指定电压
推荐阅读最新更新时间:2024-11-06 17:45
ADI公司的低功耗、单通道16位DAC支持高密度模拟输出模块
中国,北京 -- Analog Devices, Inc. (ADI) 今日推出一款数模转换器(DAC) AD5758。它集成了ADI公司第二代动态功率控制(DPC)功能,支持高密度模拟输出(AOUT)模块并且不需要降额使用(即不会因热量累积而需关闭通道),从而实现更低成本、更紧凑的设计。这款带DPC的单通道电流/电压DAC设计用于工厂自动化、过程自动化和电机控制中的通道间隔离工业应用。AD5758是ADI公司功耗最低的工业DAC。 AD5758大小为5 mm x 5 mm,在业界同类产品中尺寸最小。其结构坚固,所需外部保护元件更少,支持更小、更低成本的设计。它配备先进的诊断技术,有助于了解系统性能状况,以实现更高的可
[测试测量]
STM32cube HAL库 UART串口中断方式收发任意长度 调试笔记
STM32Cube对于新项目的开发能节省不少时间,从繁琐芯片初始化中解脱出来 1.STM32 UART初始化部分,配置好工程,采用STM32cube生成代码,初始化即已经完成。 2.串口中断方式的发动作:HAL_UART_Transmit_IT 没做任何处理的情况下,我们在程序中使用printf会把信息打印到显示屏中去,这时我们需要将printf重定向就能将printf的消息打印到串口中 去。在主函数中添加如下函数: int fputc(int ch, FILE *f) { HAL_UART_Transmit_IT(&huart1, (uint8_t *)&ch, 1); osDelay(1);
[单片机]
STM32_DAC输出三角波形
今天讲解“STM32F103 DAC输出三角波形”,比较基础,但对于初次使用该功能的朋友来说,还有有借鉴价值。 今天提供并讲解的软件工程,基于昨天的软件工程“DDAC输出三角波形”修改而来。若有疑问,请关注微信公众号“EmbeddDeveloper”获取更多信息。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): https://yunpan.cn/cPi8GB2DyeKzI 访问密码 1a45 STM32F10x的资料可以在我
[单片机]
利用16位电压输出DAC实现高精度电平设置
利用电压输出DAC实现真正的16位性能不仅要求选择适当的DAC,而且要求选择适当的配套支持器件。针对精密16数模转换应用,本 电路 使用AD5542A/AD5541A电压输出DAC、ADR421基准电压源以及用作基准电压缓冲的AD8675 超低失调运算放大器,提供了一款低风险解决方案。 基准电压缓冲对于设计至关重要,因为DAC基准输入的输入阻抗与码高度相关,如果DAC基准电压源未经充分缓冲,将导致线性误差。开环增益高达120 dB的AD8675已经过验证和测试,符合本电路应用关于建立时间、失调电压和低阻抗 驱动 能力的要求。 需要时,精密、低失调OP1177 可以用作可选的输出缓冲器。 这一器件组合可以提供业界领先的16位分
[电源管理]
【STM32Cube_10】使用ADC读取气体传感器数据(MQ-2)
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取MQ-2气体传感器的数据并通过串口发送。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): MQ-2模块 MQ-2气体传感器一般用于家庭和工厂的气体泄漏监测装置,适用于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测,如图: MQ-2的原理图如下: 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; 准备一个串口调试助手,这里我使用的是Serial Port Utility; 选择芯片型号 打开STM32CubeM
[单片机]
用stm32Cube生成103c8t6的usb驱动
开发板是用的stm32f103c8t6的核心板淘宝上最便宜最常见的那种(还是上图吧) stm32f1系列的hal驱动库中把usb驱动放在了“Middlewares(中间件)”文件夹下,且有“STM32_USB_Device_Library”和“STM32_USB_Host_Library”两个驱动库。若是想直接利用驱动库新建工程可在这两个库的目录下复制Core文件夹和Class文件夹下所需文件。 使用stm32cube直接生成工程: 先勾选Peripherals的USB- Device才能在MiddleWares下的USB_Devics下选择IP核,下拉后有六个选项,分别对应USB设备的六大分类: 分类 功能
[单片机]
意法半导体STM32Cube.AI生态系统加强对高效机器学习的支持
中国,2021年8月23日——意法半导体 STM32Cube.AI 开发环境为用户提供各种机器学习技术,为他们尽可能高效地解决分类、聚类和新颖性检测三种算法挑战提供更多灵活性。 除了能够在STM32*微控制器(MCU)上开发用于边缘推理的神经网络外,最新的STM32Cube.AI版本(7.0版)还支持新的监督和半监督方法,这些方法可以处理更小的数据集和更少的CPU周期。其中包括孤立森林异常检测(iForest)和单类支持向量机(OC-SVM)新颖性检测,以及K-means和SVM分类器算法,现在,用户无需人工写代码就能实现这些算法。 除神经网络之外,这些经典机器学习算法让开发人员通过易于使用的技术在STM32微控制器
[嵌入式]