潘多拉STM32L475裸机例程学习 DAC实验

DAC实验

此文章仅限于记录个人知识盲区,没有指导作用,如果有任何疑问,欢迎在评论区提问讨论~

DAC

STM32L475 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。DAC 可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。DAC 工作在 12 位模式时,数 据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下,2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输 出。DAC 可以通过引脚输入参考电压 Vref+(通 ADC 共用)以获得更精确的转换结果。

STM32L475 的 DAC 模块主要特点有:

  • 1 个 DAC 转换器,最多两个输出通道

  • 12 位模式下数据左对齐或者右对齐

  • 同步更新功能

  • 噪声波形生成

  • 三角波形生成

  • 双 DAC 通道同时或者分别转换

每个通道都有 DMA 功能 单个 DAC 通道的框图如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3g0sNtI-1592472732968)(C:\Users\EDZ\AppData\Roaming\Typora\typora-user-images\image-20200618162634100.png)]

配置过程

本实验将使用 DAC1 的通道 1 来输出模拟电压。这里我们用到的库函数以及相关定义分布在文件 stm32l4xx_hal_dac.c 以及头文件 stm32l4xx_hal_dac.h 中。

实现上面功能的详细设置步骤如下:

1)开启 DAC 和 PA 口时钟,设置 PA4 为模拟输入。

2)初始化 DAC,设置 DAC 的工作模式。

3)使能 DAC 转换通道

4)设置 DAC 的输出值。

HAL库配置函数

1)开启 DAC 和 PA 口时钟,设置 PA4 为模拟输入。

一般在HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)函数内:

__HAL_RCC_DAC_CLK_ENABLE();  //使能 DAC 时钟     
__HAL_RCC_GPIOA_CLK_ENABLE();  //开启 GPIOA 时钟       
GPIO_Initure.Pin=GPIO_PIN_4;             //PA4     
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //模拟     
GPIO_Initure.Pull=GPIO_NOPULL;        //不带上下拉     
HAL_GPIO_Init(GPIOA,&GPIO_Initure); 

2)初始化 DAC,设置 DAC 的工作模式。

成员变量DAC_Trigger用来设置DAC触发类型,DAC_OutputBuffer用来设置输出缓冲

DAC_HandleTypeDef DAC1_Handler; DAC_ChannelConfTypeDef DACCH1_Config; 
DAC1_Handler.Instance=DAC; HAL_DAC_Init(&DAC1_Handler); //初始化 DAC     
DACCH1_Config.DAC_Trigger=DAC_TRIGGER_NONE;   //不使用触发功能 
DACCH1_Config.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE; HAL_DAC_ConfigChannel(&DAC1_Handler,&DACCH1_Config,DAC_CHANNEL_1); //该函数用来配置DAC通道的出发类型以及输出缓冲。

3)使能 DAC 转换通道

HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel); 

4)设置 DAC 的输出值。

HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac,  
                                   uint32_t Channel, 															uint32_t Alignment, 
                                   uint32_t Data); 

Alignment:

DAC_ALIGN_12B_R 12位右对齐

DAC_ALIGN_12B_L 12位左对齐

DAC_ALIGN_8B_R

Data:

要设置的DAC的值(0~ 4096)(000000000000~111111111111)

PS:在实验中可以配置ADC连接ADC和DAC, 用ADC测量DAC输出值。ADC的具体配置在上篇文章中涉及。

由0~ 4096到0~3.3v的公式:

temp = (float)adcx * (3.2 / 4096);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值