STM32 DAC简介
大容量的STM32F103具有内部DAC,战舰STM32选择的是STM32F103ZET6属于大容量产品,所以是带有DAC模块的。
STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
STM32的DAC模块主要特点有:
① 2个DAC转换器:每个转换器对应1个输出通道
② 8位或者12位单调输出
③ 12位模式下数据左对齐或者右对齐
④ 同步更新功能
⑤ 噪声波形生成
⑥ 三角波形生成
⑦ 双DAC通道同时或者分别转换
⑧ 每个通道都有DMA功能
图中VDDA和VSSA为DAC模块模拟部分的供电,而Vref+则是DAC模块的参考电压。DAC_OUTx就是DAC的输出通道了(对应PA4或者PA5引脚)。
从图24.1.1可以看出,DAC输出是受DORx寄存器直接控制的,但是我们不能直接往DORx寄存器写入数据,而是通过DHRx间接的传给DORx寄存器,实现对DAC输出的控制。前面我们提到,STM32的DAC支持8/12位模式,8位模式的时候是固定的右对齐的,而12位模式又可以设置左对齐/右对齐。单DAC通道x,总共有3种情况:
DAC模块的通道1来输出模拟电压,其详细设置步骤如下:
1)开启PA口时钟,设置PA4为模拟输入。
STM32F103ZET6的DAC通道1是接在PA4上的,所以,我们先要使能PORTA的时钟,然后设置PA4为模拟输入(虽然是输入,但是STM32内部会连接在DAC模拟输出上)。
2)使能DAC1时钟。
同其他外设一样,要想使用,必须先开启相应的时钟。STM32的DAC模块时钟是由APB1提供的,所以我们先要在APB1ENR寄存器里面设置DAC模块的时钟使能。
3)设置DAC的工作模式。
该部分设置全部通过DAC_CR设置实现,包括:DAC通道1使能、DAC通道1输出缓存关闭、不使用触发、不使用波形发生器等设置。
4)设置DAC的输出值。
通过前面3个步骤的设置,DAC就可以开始工作了,我们使用12位右对齐数据格式,所以我们通过设置DHR12R1,就可以在DAC输出引脚(PA4)得到不同的电压值了。
最后,再提醒一下大家,本例程,我们使用的是3.3V的参考电压,即Vref+连接VDDA。
关键字:STM32 DAC输出 相关设置
引用地址:
STM32实现DAC输出的相关设置
推荐阅读最新更新时间:2024-11-06 14:40
STM32的PVD、POR、PDR简介
先看一下这2张截自STM32参考手册的图片: 下面这张表截自STM32F103x8/B的数据手册,对上图的参数给出了具体数值: 下面对上面2张图和表格中的数据做一个简要的解释: 1)PVD = Programmable Votage Detector 可编程电压监测器 它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固定的差值,这就是表中的VPVDhyst(PVD迟滞)这个参数,通过列出的PVD阀值数据
[单片机]
STM32接口FSMC/FMC难点详解
STM32F767的FMC将外部存储器划分为6个固定大小的256M的存储区域,如下图 STM32F767的FMC 存储块 1(Bank1 )被分为 4个区,每个区管理64M 字节空间,每个 区都有独立的寄存器对所连接储进行配置。Bank1 的 256M 字节空间由 28 根地址线 根地址线(HADDR )寻址。 这里 HADDR 是内部AHB地址总线,其中地址总线HADDR 来自外部存储器地址FMC_A (FMC_A 会接到外部存储器的地址线上,也就是HADDR内部总线的 来自外部存储器地址线), 而 HADDR 对4个区进行寻址。如表 18.1.2.1所示: 比如外部存储器接到FMC_
[单片机]
RTOS为什么要搞两种API?
本文以FreeRTOS为例,如果我们自己在官网下载源码然后手动移植代码就是使用FreeRTOS的原生API接口,如果我们使用STM32CubeMX来配置工程就是使用的CMSIS-API接口,是对FreeRTOS的原生API接口进行了封装。 一、RTOS为什么要搞两种API? CMSIS-RTOS API是ARM公司为RTOS内核制定的一套通用接口协议,它提供了一套「标准的API接口」,可以移植到各种各样的RTOS上,使得上层的软件、中间件、库以及其他组件在不同的RTOS之上都可以正常工作。 简单的说就是:STM32是ARM内核的,这大家都知道。FreeRTOS是一种免费的开源的嵌入式操作系统。那它肯定就不属于ARM公司的对不对
[单片机]
stm32学习笔记--spi与iic
关于上次说的要改程序的问题, //读ADXL345寄存器 //addr:寄存器地址 //返回值:读到的值 u8 ADXL345_RD_Reg(u8 addr) { u8 temp=0; IIC_Start(); IIC_Send_Byte(ADXL_WRITE); //发送写器件指令 temp=IIC_Wait_Ack(); IIC_Send_Byte(addr); //发送寄存器地址 temp=IIC_Wait_Ack(); IIC_Start(); //重新启动 IIC_Send_Byte(ADXL_READ); //发送读器件指令 temp=IIC_Wait_Ac
[单片机]
【32位MCU】9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介
9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介 一,准备EWARM + AN2557软件包 1,在http://www.mcu123.com/news/Soft/embsof/arm/201001/514.html 上 下载 IAR Embedded Workbench for ARM version 5.41 (2010.1.5更新) 软件 CD-EWARM-5411-1760_mcu123.zip http://esoft.mcu123.com/MCU123_temp_20100103@/ARM/CD-EWARM-5411-1760_mcu123.zip 相关文件 IAR_EWARM5.4和谐文
[单片机]
STM8S/32的读保护
一、代码写入及加读保护的步骤: 1.准备工作:HEX文件和JLINK驱动(JLinkARM_V420以上,4.08中secure chip可能出现灰色不可选) 安装完毕后,可以在开始--所有程序--SEGGER--J-Flash ARM打开该应用程序 先设置要写入的芯片和写入方式, 选择JATG还是SWD 选择芯片型号:Option-- Project settings-- CPU-- Device(型号不对程序写入不了,设置Option-- Project settings-- Production,选中Securechip;) 2.打开要烧写的HEX文件:File--Open data file ,可以下拉选择HEX文件类型 3
[单片机]
STM32单片机内存管理器实用代码解析与工程应用指南
本代码适用于无操作系统的STM32单片机开发,功能强大。 可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便。 直接复制粘贴如下代码即可: memory.h: #ifndef __MEMORY_H__ #define __MEMORY_H__ #include stdio.h #include string.h #include includes.h //用户使用 typedef struct { void *addr;//申请到的内存的起始地址 uint32_t size;//申请到的内存的大小,按照块大小分配,大于等于申请大小 uint16_t tb; //申请表序号,申
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(五 )ADC采样
前言 ADC采样是一种常见的功能 1、STM系列ADC的参数: 手册中关于ADC的介绍 ● 12位分辨率 ● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断 ● 单次和连续转换模式 ● 从通道0到通道n的自动扫描模式 ● 自校准 ● 带内嵌数据一致性的数据对齐 ● 采样间隔可以按通道分别编程 ● 规则转换和注入转换均有外部触发选项 ● 间断模式 ● 双重模式(带2个或以上ADC的器件) ● ADC转换时间: ─ STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs) ─ STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs) ─ STM3
[单片机]