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);//获得输出值
-