TA的每日心情 | 奋斗 2023-7-6 08:48 |
---|
签到天数: 169 天 连续签到: 1 天 [LV.7]常住居民III
|
回顾:
【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(); }} |
|