DAC

大简介

大容量的 STM32F103 具有内部 DAC

大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器

  • 输入:8位或12位(数据可以设置成左对齐或右对齐 )
  • 输出:  0~VREF+(可通过引脚输入获得更高精确度,2.4V ≤ VREF+ ≤ VDDA (3.3V))

      DAC输出 = VREF x (DOR / 4095)。

  • 通道:DAC模块有2个输出通道DAC_Channel_1/2,可以同时工作(每个通道都有单独的转换器)
  • 高级功能:
    • 噪声波形生成
    • 三角波形生成
  • 寄存器相关开关
    • DAC使能[使能通道1(DAC1)或通道2(DAC2))]
    • DMA使能
    • 触发使能
    • 其它高级开关
  • 输出缓存:DAC 输出缓存有问题,使得输出达不到0,不推荐开启
  • 使能:  通道的使能位ENx,代表模拟输出的供电,只是‘A’的开关,'D'这部分(模拟输出前的准备工作)还是一直有的
  • GPIO:  为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5应当设置成模拟输入(AIN)[没有模拟输出],一但 使能 DACx 通道之后,相应的 GPIO 引脚(PA4 或者 PA5)会自动与 DAC 的模拟输出相连

  • 细节:  不能在已使能状态下(ENx),修改触发设置(变TSELx[2:0])
  • DMA:  一旦有外部触发(而不是软件触发)发生,则产生一个DMA请求
  • 双DAC:若使用双DAC且两个DAC输出一样时,可操作DHR8RD、DHR12RD和DHR12LD同时控制

库函数

  • 使能RCC_APB1Periph_DAC
  • 初始:DAC_Init
    • 是否使用触发
    • 是否产生波形
    • 是否设置输出缓存
    • 设置屏蔽/幅值选择器(产生波形时用)
  • 使能:DAC_Cmd(DAC_Channel_1, ENABLE); //使能 DAC1
  • 输出:DAC_SetChannel1Data(DAC_Align_12b_R, 20);//设置输出值(寄存器值,非电压值)//DAC的工作形式:连续取该寄存器的值不断转换,so只要设置该寄存器的值就一切ok,等待个3,4us输出就更新了

    • DAC_GetDataOutputValue(DAC_Channel_1);//获得输出值

原文地址:https://www.cnblogs.com/2cats/p/3588642.html