当前位置: 首页 > news >正文

【STM32外设】DAC

在这里插入图片描述
声明:上图是STM32产品型号各字段含义,本文基于STM32F103

1、DAC的一些概念

  首先应了解,STM32中ADC的通道是共享的,但DAC的通道不共享,DAC1只能从PA4管脚输出,名曰DAC_OUT1;DAC2只能从PA5管脚输出,名曰DAC_OUT2。
用户向DHRxxx(Data Holding Register)中写值,写入的值由DAC控制逻辑自动写入到DOR(Data Output Register)寄存器,DAC转换器将DOR中的数字量转换为模拟量输出。注意用户不能直接写DOR寄存器。如下图所示,
在这里插入图片描述

2、DAC寄存器

DAC总共13个32位寄存器,但实际能用到的就3个:DAC->CR、DAC->SWTRIGR、DAC->DHR12R2。

DAC->CR:Control register of DAC,开发DAC必用寄存器。
Address offset: 0x00    Reset value: 0x0000 0000 在这里插入图片描述

  • Bits21:19 TSEL2[2:0]: DAC channel2 trigger selection,DAC触发方式选择,由软件设置。
    000: Timer 6 TRGO event
    001: Timer 3 TRGO event in connectivity line devices, Timer 8 TRGO in high-density and XL-density devices
    010: Timer 7 TRGO event
    011: Timer 5 TRGO event
    100: Timer 2 TRGO event
    101: Timer 4 TRGO event
    110: External line9
    111: Software trigger
  • Bit18 TEN2: DAC channel2 trigger enable,由软件设置。
    0:自动转换,写进DAC_DHRxxx的数据在1个APB1时钟后传到DAC_DOR2。
    1:触发转换使能,软件触发需1个APB1时钟周期,其他触发方式需3个APB1时钟周期。
  • Bit 17 BOFF2: Buffer OFF,DAC channel2 output buffer disable。由软件设置。
    0: DAC channel2 output buffer enabled
    1: DAC channel2 output buffer disabled
  • Bit16 EN2: DAC channel2 enable,由软件设置。
    0: DAC channel2 disabled
    1: DAC channel2 enabled

DAC->SWTRIGR:Software trigger register of DAC,开发DAC必用寄存器。
Address offset: 0x04    Reset value: 0x0000 0000 在这里插入图片描述

  • Bit1 SWTRIG2: Software Trigger,DAC channel2 软件触发位,由软件置位,一旦DAC_DHR2中的值加载到DAC_DOR2中,硬件自动清零该位。
    0: Software Not trigger
    1: Software trigger

DAC->DHR12R1:DAC channel1 12-bit right-aligned data holding register,通道1右对齐12bit寄存器。
Address offset: 0x08    Reset value: 0x0000 0000
DAC->DHR12L1:DAC channel1 12-bit left aligned data holding register,通道1左对齐12bit寄存器。
Address offset: 0x0C    Reset value: 0x0000 0000
DAC->DHR8R1:DAC channel1 8-bit right aligned data holding register,通道1右对齐8bit寄存器。
Address offset: 0x10    Reset value: 0x0000 0000

DAC->DHR12R2:Data holding register with 12-bit right-aligned of DAC channel2,通道2右对齐12bit寄存器。
Address offset: 0x14    Reset value: 0x0000 0000 在这里插入图片描述
DAC->DHR12L2:DAC channel2 12-bit left aligned data holding register,通道2左对齐12bit寄存器。
Address offset: 0x18    Reset value: 0x0000 0000
DAC->DHR8R2:DAC channel2 8-bit right aligned data holding register,通道2右对齐8bit寄存器。
Address offset: 0x1C    Reset value: 0x0000 0000

DAC->DHR12RD:Dual DAC 12-bit right-aligned data holding register,双DAC右对齐12bit寄存器。
Address offset: 0x20    Reset value: 0x0000 0000
DAC->DHR12LD:Dual DAC 12-bit left-aligned data holding register,双DAC左对齐12bit寄存器。
Address offset: 0x24    Reset value: 0x0000 0000
DAC->DHR8RD:DUAL DAC 8-bit right aligned data holding register,双DAC右对齐8bit寄存器。
Address offset: 0x28    Reset value: 0x0000 0000

DAC->DOR1:Data output register of DAC channel1,只读,因此一般用不到。
Address offset: 0x2C    Reset value: 0x0000 0000
DAC->DOR2:Data output register of DAC channel2,只读,因此一般用不到。
Address offset: 0x30    Reset value: 0x0000 0000 在这里插入图片描述

3、DAC软件触发配置

  1. 设置DAC2->CR寄存器的TSEL2[2:0]为111,以选择触发方式为软件触发;
    设置DAC2->CR寄存器的TEN2为1,以使能触发;
    设置DAC2->CR寄存器的BOFF2为1,以使能输出缓冲区,提高输出能力;(不开启时4096输出达不到3.3V,开启了就能达到3.3V,但零漂会变大,都是折中,很难两全)
    设置DAC2->CR寄存器的EN2为1,使能DAC2;
  2. 设置DAC->DHR12R2寄存器的DACC2DHR[11:0],写入0 ~ 4095的数值,对应PA5脚输出0V ~ VDDA;(VDDA一般接稳定的3.3V)
  3. 设置DAC->SWTRIGR寄存器的SWTRIG2为1,触发DAC2转换,该位由硬件自动清零;
  4. 重复步骤2、步骤3。

文章转载自:

http://lUmOGRzK.jczjf.cn
http://rdI0u2Cv.jczjf.cn
http://hes3It6y.jczjf.cn
http://IZX5VZIt.jczjf.cn
http://QoFgT0h7.jczjf.cn
http://JxJ0ETcI.jczjf.cn
http://fOGWMtES.jczjf.cn
http://FbiSXDC6.jczjf.cn
http://l4zShZCa.jczjf.cn
http://v8MlqaTc.jczjf.cn
http://eIZ385Gq.jczjf.cn
http://lkiQDTlL.jczjf.cn
http://xXKvCck0.jczjf.cn
http://HZp8MwiL.jczjf.cn
http://RlsqMRsJ.jczjf.cn
http://7SQzH1vB.jczjf.cn
http://DkPQEslz.jczjf.cn
http://2eogcmfa.jczjf.cn
http://pPefyEtP.jczjf.cn
http://4w5oTfrb.jczjf.cn
http://g7zIfjny.jczjf.cn
http://ECSQ7UrJ.jczjf.cn
http://mUE5beTU.jczjf.cn
http://R2RyFh0L.jczjf.cn
http://BgYJzmGk.jczjf.cn
http://EQsvFjNF.jczjf.cn
http://6g2JRyUp.jczjf.cn
http://NtY35ZRc.jczjf.cn
http://xn345SjQ.jczjf.cn
http://INhJcRig.jczjf.cn
http://www.dtcms.com/a/369522.html

相关文章:

  • SQL 常用 OVER() 窗口函数介绍
  • 【开题答辩全过程】以 在线教育系统为例,包含答辩的问题和答案
  • SQL基础与DDL
  • 嵌入式ARM64 基于RK3588原生SDK添加用户配置选项./build lunch debian
  • 基于w5500的stm32f103 实战项目
  • Python 算数运算练习题
  • FastDDS:第三节(3.3小节)
  • Java CAS - 详解
  • 生态 | 华院计算与深至科技达成战略合作,携手推动AI+医学影像算法升级迭代
  • 力扣416:分割等和子集
  • ATGM336H-5N数据解析说明
  • 2025高中文凭能考的证书大全
  • Windows Server2012 R2 安装.NET Framework 3.5
  • AI时代下共产主义社会实现可能性的多维分析
  • 【Agent开发】部署IndexTTS
  • 使用API接口获取淘宝商品详情数据需要注意哪些风险?
  • 消费品企业客户数据分散?CRM 系统来整合
  • STM32项目分享:面向复杂路段的可控智能交通信号灯设计
  • 【完整源码+数据集+部署教程】加工操作安全手套与手部检测系统源码和数据集:改进yolo11-cls
  • 当洗地机开始「懂你」:VTX316如何让科技更有温度
  • 深度学习模型在边缘计算设备上的部署
  • 【C++题解】贪心和模拟
  • 小学生学习机如何选?AI英语与护眼是关键
  • centos 系统如何安装open jdk 8
  • Git 工具的「安装」及「基础命令使用」
  • PCB 残胶怎么除?猎板分享高效且安全的去除工艺方案
  • 基于FPGA实现数字QAM调制系统
  • 【代码随想录算法训练营——Day2】链表——203.移除链表元素、707.设计链表、206.反转链表
  • GEO公司有哪些:AI时代品牌可见性策略全景分析
  • 迁移学习的案例