匿名
未登录
登录
丢石头百科
搜索
查看“STM32CubeMX系列教程8:数模转换(DAC)”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
STM32CubeMX系列教程8:数模转换(DAC)
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<b style="font-size: 14px; line-height: 16.8px; widows: auto; background-color: inherit;">1.DAC单次转换</b> 本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA5管脚配置为DAC输出通道2。 [[File:142757jpvce9ls11xtic1o.png]] [[File:142757vedjdyro6cc7c7e8.png]] DAC配置为默认配置不需修改。 [[File:142758h6f71t11udzbzpbp.png]] 生成报告以及代码,编译程序。在adc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_dac.h头文件中可以看到DAC的操作函数。 <syntaxhighlight lang="python"> /** @addtogroup DAC_Exported_Functions_Group2 * @{ */ /* I/O operation functions ****************************************************/ HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel); HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel); HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment); HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel); uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel); /** * @} */ /** @addtogroup DAC_Exported_Functions_Group3 * @{ */ /* Peripheral Control functions ***********************************************/ HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel); HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);</syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> 在main()函数中添加程序设置DAC输出的数据为12位右对齐,数值为2048.则实际输出的电压为</syntaxhighlight> <syntaxhighlight lang="python"> 2048/4096x3.3V=1.65V,使能ADC通道2开始转换。</syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> /* USER CODE BEGIN 2 */ /*##-1- Set DAC channel1 DHR12RD register ################################################*/ HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, 2048); /*##-2- Enable DAC Channel1 ################################################*/ HAL_DAC_Start(&hdac, DAC_CHANNEL_2); /* USER CODE END 2 */</syntaxhighlight> <code style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; color: rgb(0, 130, 0) !important; font-size: 1em !important; background-color: inherit;"> </syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> 编译程序并下载到开发板。如果没有出错用万用表测PA5管脚的电压为1.65V。 </syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> <b style="background-color: inherit;">2.定时器控制DAC产生三角波</b> </syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> 复制刚才的工程,修改文件夹名</syntaxhighlight>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)。 [[File:142758x39192cshz28dc77.png]] 开启定时器2,并设置如下,触发事件选择TRGO(Trigger Event Selection TRGO)为更新事件。</code> [[File:142758luraop70wrod79u0.png]] TRGO为触发信号,在第三章的基本定时器中可以找到触发信号TRGO,当定时器发送更新事件时,即发生溢出等事件时,定时器会发送触发信号TRGO到DAC,触发DAC转换输出模拟量 [[File:142759jltijl2q8vii0403.png]] 生成报告以及代码,编译程序。在main函数中添加应用程序开启定时器2,并开启ADC通道2转换。 <h3> </h3><syntaxhighlight lang="python"> /* USER CODE BEGIN 2 */ printf("\r\n DAC EXAMPLE !!!\r\n"); /*##-1- Start the TIM Base generation in interrupt mode ####################*/ HAL_TIM_Base_Start(&htim2); /*##-2- Enable DAC Channel1 ################################################*/ HAL_DAC_Start(&hdac, DAC_CHANNEL_2); /* USER CODE END 2 */</syntaxhighlight> <syntaxhighlight lang="python"> </syntaxhighlight> <syntaxhighlight lang="python"> 编译程序并下载到开发板。用示波器观测PA5管脚是否产生三角波。接上Analog Test Board模块到SPI1接口,并给模块接上5V电源。按下复位会听到喇叭发声响声。</syntaxhighlight>
返回至
STM32CubeMX系列教程8:数模转换(DAC)
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志