1.DAC单次转换
本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA5管脚配置为DAC输出通道2。
0
|
|
|
|
DAC配置为默认配置不需修改。
|
|
|
|
|
生成报告以及代码,编译程序。在adc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_dac.h头文件中可以看到DAC的操作函数。
01 | /** @addtogroup DAC_Exported_Functions_Group2 |
04 | /* I/O operation functions ****************************************************/ |
05 | HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel); |
06 | HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel); |
07 | HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment); |
08 | HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel); |
09 | uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel); |
14 | /** @addtogroup DAC_Exported_Functions_Group3 |
17 | /* Peripheral Control functions ***********************************************/ |
18 | HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel); |
19 | HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data); |
|
|
|
|
|
在main()函数中添加程序设置DAC输出的数据为12位右对齐,数值为2048.则实际输出的电压为
2048/4096x3.3V=1.65V,使能ADC通道2开始转换。
[color=rgb(160, 160, 160) !important]view source
[color=rgb(160, 160, 160) !important]print[color=rgb(160, 160, 160) !important]?
2 | /*##-1- Set DAC channel1 DHR12RD register ################################################*/ |
3 | HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, 2048); |
5 | /*##-2- Enable DAC Channel1 ################################################*/ |
6 | HAL_DAC_Start(&hdac, DAC_CHANNEL_2); |
[size=1em]编译程序并下载到开发板。如果没有出错用万用表测PA5管脚的电压为1.65V。
|
|
|
|
|
[size=1em]2.定时器控制DAC产生三角波
[size=1em]
复制刚才的工程,修改文件夹名DAC_SignalsGeneration。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA5管脚配置为DAC输出通道2。DAC配置触发(Trigger)为定时器2触发,波形生成模式(Wave generation mode)为三角波发生器(Triangle wave generation).最大三角波幅(Maximum Triangle Amplitude)为4095,即为3.3V(参考电压为3.3V)。
|
|
|
|
|
开启定时器2,并设置如下,触发事件选择TRGO(Trigger Event Selection TRGO)为更新事件。
|
|
|
|
|
TRGO为触发信号,在第三章的基本定时器中可以找到触发信号TRGO,当定时器发送更新事件时,即发生溢出等事件时,定时器会发送触发信号TRGO到DAC,触发DAC转换输出模拟量
|
|
|
|
|
生成报告以及代码,编译程序。在main函数中添加应用程序开启定时器2,并开启ADC通道2转换。
2 | printf("rn DAC EXAMPLE !!!rn"); |
3 | /*##-1- Start the TIM Base generation in interrupt mode ####################*/ |
4 | HAL_TIM_Base_Start(&htim2); |
6 | /*##-2- Enable DAC Channel1 ################################################*/ |
7 | HAL_DAC_Start(&hdac, DAC_CHANNEL_2); |
编译程序并下载到开发板。用示波器观测PA5管脚是否产生三角波。接上Analog Test Board模块到SPI1接口,并给模块接上5V电源。按下复位会听到喇叭发声响声。
|
|
|
|
|
|
STM32 需要的找我 。一三七五一一九二九七零 0755-66658299
|
|
|
|
|
找你做,,,,,,,,,,,,,,,,,,,,,???????????????
|
|
|
|
|