• STM32F4 DAC简单操作【使用库函数】


    STM32F4的DAC是一个12位,电压输出的DAC。可被配置为12位或者8位,也能和DMA联合使用。DAC具有两个独立转换通道。在双DAC模式下,DA抓换可被配置成独立模式或者同步工作模式。两路DAC参考电压以及ADC都是VREF。

    【主要特性】

    1、两路  2、12bit时数据可被配置成左对齐或右对齐  3、具有同步更新能力  4、噪声产生  5、三角波产生  6、两个通道独立转换或同步转换  7、每个通道都有DMA能力  8、DMA出错检测 9、可外部触发

    输出电压计算公式:

    Vout = VREF×DOR/4095 = 参考电压×DAC数据寄存器值/4095

    【实验内容】

    利用DAC输出指定的电压,软件触发DAC转换。

    【初始化要点】

    1、GPIO配置成AIN/AN即模拟功能。记着开时钟

    void DAC_GPIO_Config(void)
    {
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
      GPIO_Init(GPIOA,&GPIO_InitStructure);
     
    }

    2、DAC触发方式设置为软件触发(DAC_Trigger_Software)

    void DAC_Config(void)
    {
      DAC_GPIO_Config();
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
      DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
      DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
      DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
      DAC_Init(DAC_Channel_1,&DAC_InitStructure);
     
      DAC_Cmd(DAC_Channel_1,ENABLE);
      DAC_SetChannel1Data(DAC_Align_12b_R,0x0000);
     
      DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
    }

    3、主函数中使用:

    向输出寄存器写数据,数据可根据上边公式得到

    DAC_SetChannel1Data(DAC_Align_12b_R,0xF0F0);

    然后,然间触发

    DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);

    这时,在引脚上GPIOA-4上将会有电压输出。

    当然也可以设置成定时器触发,TIM6和TIM7 是专公DAC转换用的定时器。初始化也很方便。

  • 相关阅读:
    Solr服务在Linux上的搭建详细教程
    Linux服务器上安装JDK小白教程
    request和response中文乱码问题后台处理办法
    Redis的五种数据类型及方法
    Java类装载器ClassLoader
    Git快速入门和常用命令
    redis在Linux上的部署和jedis简单使用
    Linux常用基础命令
    JDK1.7中HashMap底层实现原理
    微信电脑版无法显示图片无法下载文件
  • 原文地址:https://www.cnblogs.com/zyqgold/p/3103343.html
Copyright © 2020-2023  润新知