查看: 1615|回复: 0

【STM32746G-Discovery】DAC的使用

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-6 08:48
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-7-12 10:12:22 | 显示全部楼层 |阅读模式
    分享到:
    回顾:
    【STM32746G-Discovery】jpg图片解码显示
    https://jingyan.eeboard.com/article/75261
    【STM32746G-Discovery】基于FreeRTOS的Fatfs文件系统
    https://jingyan.eeboard.com/article/75259
    【STM32F746G-Discovery】网络LwIP
    https://jingyan.eeboard.com/article/75254
    大厂风范——Intel Edison开发板
    https://jingyan.eeboard.com/article/75253
    魔兽世界插件开发语言的开发环境
    https://jingyan.eeboard.com/article/75252
    【STM32746G-Discovery】ADC的使用
    https://jingyan.eeboard.com/article/75267
    DAC 模块是12 位电压输出数模转换器。DAC 可以按8 位或12 位模式进行配置,并且可与DMA 控制器配合使用。在12 位模式下,数据可以采用左对齐或右对齐。DAC 有两个输出通道,每个通道各有一个转换器。在DAC 双通道模式下,每个通道可以单独进行转换;当两个通道组合在一起同步执行更新操作时,也可以同时进行转换。可通过一个输入参考电压引脚VREF+(与ADC 共享)来提高精度。
    DAC 主要特性:

    DAC 通道框图:

    使能DAC 通道x 后,相应GPIO 引脚(PA4 PA5)将自动连接到模拟转换器输出(DAC_OUTx)。为了避免寄生电流消耗,应首先将PA4 PA5 引脚配置为模拟模式(AIN)
    对于DAC 单通道x,有三种可能的方式:
    1、8 位右对齐
    2、12 位左对齐
    3、12 位右对齐

    DAC通道一个配置函数如下:
    static void DAC_Ch1_EscalatorConfig(void){  /*##-1- Initialize the DAC peripheral*/  if (HAL_DAC_Init(&DacHandle) != HAL_OK)  {    /* Initialization Error */    Error_Handler();  }  /*##-1- DAC channel1 Configuration*/  sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO;  sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;  if (HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DACx_CHANNEL) != HAL_OK)  {    /* Channel configuration Error */    Error_Handler();  }  /*##-2- Enable DAC selected channel and associated DMA */  if (HAL_DAC_Start_DMA(&DacHandle, DACx_CHANNEL, (uint32_t *)aEscalator8bit, 6, DAC_ALIGN_8B_R) != HAL_OK)  {    /* Start DMA Error */    Error_Handler();  }}三角波配置程序
    static void DAC_Ch1_TriangleConfig(void){  /*##-1- Initialize the DAC peripheral */  if (HAL_DAC_Init(&DacHandle) != HAL_OK)  {    /* DAC initialization Error */    Error_Handler();  }  /*##-2- DAC channel2 Configuration */  sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO;  sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;  if (HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DACx_CHANNEL) != HAL_OK)  {    /* Channel configuration Error */    Error_Handler();  }  /*##-3- DAC channel2 Triangle Wave generation configuration */  if (HAL_DACEx_TriangleWaveGenerate(&DacHandle, DACx_CHANNEL, DAC_TRIANGLEAMPLITUDE_1023) != HAL_OK)  {    /* Triangle wave generation Error */    Error_Handler();  }  if (HAL_DAC_Start(&DacHandle, DACx_CHANNEL) != HAL_OK)  {    /* Start Error */    Error_Handler();  }   if (HAL_DAC_SetValue(&DacHandle, DACx_CHANNEL, DAC_ALIGN_12B_R, 0x100) != HAL_OK)  {    /* Setting value Error */    Error_Handler();  }}
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 10:24 , Processed in 0.117125 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.