版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32单片机应用与全案例实践——DAC及其应用1学习目标STM32有12位的DAC外设模块STM32的DACDAC配置DAC应用实例难点——DAC的基本应用重点——DAC的特性与初始化设置STM32单片机应用与全案例实践——DAC及其应用2STM32的DAC及其基本应用STM32的DAC概述1STM32的数字/模拟转换模块DAC是12位数字输入、电压输出的数字/模拟转换器DAC可以配置成8位或者12位模式DAC工作在12位模式时,数据可以设置成左对齐,也可以设置成右对齐可以与DMA控制器配合使用DAC有2个输出通道,每个通道都有单独的转换器————在双DAC模式。在此模式下,可以同步地更新2个通道的输出,这2个通道的转换可以同时进行——独立工作DAC可以通过管脚输入参考电压VREF+以获得更精确的转换结果数字输入经过DAC转换成模拟电压输出,其范围为0到VREF+任一DAC通道管脚上的输出电压与DOR数字量输入之间的关系————DAC输出电压=VREF×DOR/4095一旦使能DAC通道,相应的GPIO管脚(PA4或者PA5)就会自动与DAC的模拟输出相连(DAC_OUTx)为了避免寄生的干扰和额外的功耗,管脚PA4或者PA5在之前应当设置成模拟输入(AIN)。Caution!STM32单片机应用与全案例实践——DAC及其应用3STM32的DAC及其基本应用DAC主要特征2——2个DAC转换器1个输出通道对应1个转换器——8位或者12位单调输出——12位模式下数据左对齐或者右对齐,8位数据右对齐——噪声波形生成、三角波形生成——双DAC通道同时或者分别转换,有同步更新功能——每个通道都有DMA功能——外部触发转换——可外接参考电压VREF+范围为:2.4V≤VREF+≤VDDA(3.3V)STM32单片机应用与全案例实践——DAC及其应用4STM32的DAC及其基本应用DAC配置的基本过程3以通道1为例,其基本过程如下。(1)开启PA口时钟,设置PA4为模拟输入。STM32F1的DAC1通道在PA4上,所以要先使能PORTA的时钟,然后设置PA4为模拟输入。DAC本身是输出,但是为什么端口模式要设置为模拟输入呢?因为一旦使能DACx通道之后,相应的GPIO引脚(PA4或PA5)将自动与DAC的模拟输出相连,设置为输入,是为了避免额外的干扰。(2)使能DAC1时钟。同其他外设一样,使用前必须开启相应的时钟。STM32F1的DAC模块的时钟是由APB1提供的,所以要使能DAC模块的时钟。(3)初始化DAC,设置DAC的工作模式。该部分设置全部通过寄存器DAC_CR设置实现,包括:DAC1通道使能、DAC1通道输出缓存关闭、不使用触发、不使用波形发生器等设置。(4)使能DAC转换通道。初始化DAC之后,要使能DAC转换通道。(5)设置DAC的输出值。完成前面4个步骤的设置,DAC就可以开始工作了。当使用12位右对齐数据格式时,就可以在DAC输出引脚(PA4)上得到不同的电压值。(6)部分应用也可能要读取DAC的数值。STM32单片机应用与全案例实践——DAC及其应用5DAC的配置设备配置解析11.使能DACSTM32F1有两路DAC。DAC的配置界面如图10.2所示。单击DAC,可以看到STM32F103ZET6可使用的DAC通道。如图10.3所示,当选择所需DAC通道后,下方Configuration区域会显示配置信息,右侧芯片会显示所占用引脚,用初始命名格式DAC_OUTx对引脚进行命名。将DAC_CR寄存器中ENx位置位,以启动DAC。DAC启动后,便开始正常工作。ExternalTrigger用于外部触发DAC,勾选该复选框后,右侧芯片引脚PF9高亮显示,并以“DAC_EXTI9”命名。STM32单片机应用与全案例实践——DAC及其应用6DAC的配置设备配置解析22.DAC参数配置DAC参数配置包含两部分:输出缓存器设置与触发方式设置。STM32F1系列单片机的DAC集成了两个输出缓存器,可用于降低输出阻抗,并直接驱动外部负载,而无须添加外部运算放大器。每个DAC通道输出缓存区可以使用DAC_CR寄存器中相应的BOFFx位来启用和禁用。一般将输出缓存器状态配置为使能。但是输出电压不能低于20mV,若需要设计低电压输出,则可以不使能输出缓存器。如图10.4所示,DAC的Configuration区域的ParameterSettings选项卡中显示了DAC两路输出的配置。默认使能DAC输出缓存器。DAC的触发方式可以通过Trigger下拉列表来选择,有定时器触发、软件触发和外部触发三种,用户可以根据自身需求进行配置。注意,触发方式中None(无触发)和Softwaretrigger(软件触发)是有区别的:None表示只在向DAC数据存储器DHR写入数据之后,DAC自动转换一次;Softwaretrigger表示向软件触发寄存器SWTRIGR中写入命令时触发转换(将DOR寄存器中的数据进行转换),但是在这之前需要将数据写入DAC数据存储器DHR。STM32单片机应用与全案例实践——DAC及其应用7DAC的配置设备配置解析33.DMA请求两个DAC通道都具有DMA能力。当DMAENx位置位时,外部触发器(不是软件触发器)触发将引发DAC的DMA请求。然后,将DAC_DHRx寄存器的值传输到DAC_DORx寄存器。DMA请求在Configuration区域的DMASettings选项卡中设置。DAC的DMA参数配置与ADC等其他模块的DMA的参数配置相同,如图10.5所示。STM32单片机应用与全案例实践——DAC及其应用8DAC的配置接口函数1HAL库中DAC的接口函数定义在stm32f1xx_hal_dac.c源文件中,DAC库函数声明与相关的结构体定义在stm32f1xx_hal_dac.h头文件中。本节对用户可用的接口函数进行解析。1.初始化及复位函数函数原型:HAL_DAC_Init(DAC_HandleTypeDef*hdac)应用范例:if(HAL_DAC_Init(&hdac)!=HAL_OK)Error_Handler();STM32单片机应用与全案例实践——DAC及其应用9DAC的配置接口函数2HAL库中DAC的接口函数定义在stm32f1xx_hal_dac.c源文件中,DAC库函数声明与相关的结构体定义在stm32f1xx_hal_dac.h头文件中。本节对用户可用的接口函数进行解析。2.复位函数(将DAC外围寄存器恢复到其默认值或初始状态)函数原型:HAL_DAC_DeInit(ADC_HandleTypeDef*hdac)应用范例:HAL_DAC_DeInit(&hdac);STM32单片机应用与全案例实践——DAC及其应用10DAC的配置接口函数3HAL库中DAC的接口函数定义在stm32f1xx_hal_dac.c源文件中,DAC库函数声明与相关的结构体定义在stm32f1xx_hal_dac.h头文件中。本节对用户可用的接口函数进行解析。3.DAC轮询方式启停(1)启动DAC的通道转换。函数原型:HAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)应用范例:HAL_DAC_Start(&hdac,DAC_CHANNEL_1)//启用DAC输出通道1(2)DAC的通道输出固定数据。输出正弦等波形数据时,需要放在循环中。Data的范围是0~4095。函数原型:HAL_DAC_SetValue(DAC_HandleTypeDef*hdac,uint32_tChannel,uint32_tAlignment,uint32_tData)应用范例:HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,4095);//DAC1输出3.3V。(3)暂停DAC的通道转换。函数原型:HAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel)应用范例:HAL_DAC_Stop(&hdac,DAC_CHANNEL_1);//停止DAC输出通道1STM32单片机应用与全案例实践——DAC及其应用11DAC的配置接口函数4HAL库中DAC的接口函数定义在stm32f1xx_hal_dac.c源文件中,DAC库函数声明与相关的结构体定义在stm32f1xx_hal_dac.h头文件中。本节对用户可用的接口函数进行解析。4.DAC-DMA方式启停(1)以DMA方式启动DAC的通道。输出转换长度为Length、存放在地址pData中的数据波形。Alignment用于设定输出分辨率与对齐方式,一般采用12位右对齐。函数原型:HAL_DAC_Start_DMA(DAC_HandleTypeDef*hdac,uint32_tChannel,constuint32_t*pData,uint32_tLength,uint32_tAlignment)应用范例:HAL_DAC_Start_DMA(&hdac,DAC_CHANNEL_1,pData,128,DAC_ALIGN_12B_R);//以DMA方式启动DAC1,输出128个数据,存放在首地址为pData的区域。分辨率为12位,右对齐(2)关闭DAC的指定通道的DMA。函数原型:HAL_DAC_Stop_DMA(DAC_HandleTypeDef*hdac,uint32_tChannel)应用范例:HAL_DAC_Stop_DMA(&hdac,DAC_CHANNEL_1);STM32单片机应用与全案例实践——DAC及其应用12DAC的配置接口函数5HAL库中DAC的接口函数定义在stm32f1xx_hal_dac.c源文件中,DAC库函数声明与相关的结构体定义在stm32f1xx_hal_dac.h头文件中。本节对用户可用的接口函数进行解析。5.状态获取(1)读取DAC通道当前输出的数据值。函数原型:HAL_DAC_GetValue(constDAC_HandleTypeDef*hdac,uint32_tChannel)应用范例:HAL_DAC_GetValue(&hdac,DAC_CHANNEL_1);(2)读取DAC当前状态。函数原型:HAL_DAC_GetState(constDAC_HandleTypeDef*hdac)应用范例:HAL_DAC_GetState(&hdac);STM32单片机应用与全案例实践——DAC及其应用13STM32的DAC应用实例DAC输出正弦波11.功能描述正弦波具有周期性和简谐振动的特点,在各领域都有广泛应用,如电力系统、音频系统。正弦波振幅在时间轴上按照正弦函数变化。振幅变化可以用如下公式描述:
式中,A为振幅;ω为圆频率;t为时间;φ为初始相位。为使DAC输出光滑、连续的正弦波,需要大量采样点。可以通过MATLAB对正弦波进行采样,采样代码如下。该代码的运行结果是1个周期的正弦波,采样点数是32个。用户可以根据需要,自行调整正弦波相关参数。N=32;% 采样点数n=0:N-1;t=n/N;y=int16(2047.5*sin(2*pi*t)+2047.5);STM32单片机应用与全案例实践——DAC及其应用14STM32的DAC应用实例DAC输出正弦波22.软件设计具体操作步骤如下。(1)新建STM32CubeIDE工程,选择MCU。(2)DAC功能参数设置。第一步:配置RCC。第二步:配置DAC。第三步:配置系统时钟和ADC时钟。(3)生成工程代码。单击“保存”按钮,IDE弹出是否生成代码文件的提示,选择生成即可。(4)编写应用程序。STM32单片机应用与全案例实践——DAC及其应用15STM32的DAC应用实例DAC输出三角波11.功能描述三角波是一种周期信号,其波形类似于等腰直角三角形,在电子学和通信领域中非常常见,在音频合成、图像处理和测试设备中都有广泛应用。在音频合成中,可以将一系列三角波叠加来模拟复杂的声音波形。在图像处理中,可以使用三角波来产生灰度条纹,以检查扫描仪或打印机的性能。在测试仪器中,可以使用三角波来测试信道带宽、进行光谱分析和时序测量等。三角波可以由不同方式产生,如RC电路、IC和计算机软件等。在本实例中,将使用STM32的DAC自带的波形发生器生成三角波。在对应寄存器中,需要将WAVEx[1:0]位设置为“10”,选择DAC生成三角波;通过DAC_CR寄存器中的MAMPx[3:0]位配置三角波振幅。在每个触发器事件之后,内部的三角波计数器等待3个APB1时钟周期后累加1。计数器的值与DAC_DHRx寄存器的数值相加并丢弃溢出位后写入DAC_DORx寄存器。在传入DAC_DORx寄存器的数值小于MAMP[3:0]位定义的最大振幅时,三角波计数器逐步累加。一旦达到设置的最大幅度,计数器的值就开始递减,达到0后再开始累加,周而复始。STM32单片机应用与全案例实践——DAC及其应用16STM32的DAC应用实例DAC输出三角波22.软件设计具体操作步骤如下。(1)新建STM32CubeIDE工程,选择MCU。(2)DAC功能参数设置。第一步:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 右心衰竭的护理实践指南
- 2026年幼儿园教育活动春天
- 2026年幼儿园小班消灭蛀牙虫
- 2026年幼儿园资源开发与利用教研
- 2026年幼儿园中班单双数课件
- 收音机设计仿真技巧课程设计
- iptables防火墙策略课程设计
- 诚信创业行为承诺书7篇
- 基于Spark的实时日志分析平台扩展与建议课程设计
- 2026年小学结业英语测试题及答案
- 过华清宫绝句三首其一知识讲解课件
- 2025年上半年中国铁路武汉局集团有限公司校招笔试题带答案
- 小初衔接家长培训课件
- 浙江省温州市2024-2025学年高一下学期期末教学质量统一检测数学试题(B卷)(含解析)
- 血液透析器凝血原因及护理对策
- 个人独资企业退股协议书模板
- 【MOOC】3D工程图学应用与提高-华中科技大学 中国大学慕课MOOC答案
- 初中物理全册知识点总结(教科版)
- 无偿租赁合同
- 高考专题复习:小说情节题指导
- 勿以善小而不为勿以恶小而为之
评论
0/150
提交评论