本帖最后由 lising 于 2019-1-21 15:49 编辑
本次实验使用的NUCLEO-G071RB开发板由
https://www.stmcu.com.cn/index.p ... /261/layout/product提供,更多相关资讯请进入查询。本次实验是利用NUCLEO-G071RB开发板上STM32G071RBT6微控制器的ADC及DAC模块共同完成的,利用DAC1_OUT2(PA5)通道输出预置电压,经ADC1_IN0(PA0)通道采集处理,再通过LPURAT1发送至PC端串口调试助手进行显示。
一、实验资源
1、NUCLEO-G071RB开发板;
2、Keil v5.25.2.0;
3、STM32CubeMX v5.0.1;
4、逻辑分析仪;
二、实验过程
1、资源分配。ADC及DAC是两个应用比较广泛的模块。STM32G071RBT6的DAC模块是一个12位电压输出的数模转换器,本次利用了DAC1_OUT2(PA5),此引脚上还与LD4连接,在DAC1_OUT2输出电压达到某一阈值时LD4会被点亮便于观察;微控制器集成的ADC模块是一个12位的逐次逼近型的模数转换器,这里配置为12位、右对齐,采样周期设置成了最大以提高精度;另外还开了定时器TIM6,利用它产生1s定时中断。时钟被配置为HSI。硬件上通过一根杜邦线将PA0与PA5相连。下面是在STM32CubeMX中的一些相关配置,有些参数均按软件默认然后再在工程中进行二次修改:
2、程序实现。由于工程比较简单,关键的内容STM32CubeMX都给做好了,自己写的相应程序也没几句。首先是设置了一个数组,用于配置DAC输出通道的参数,还另写了一DAC预置电压的函数:
在TIM6中断回调函数中每秒向DAC预置一个参数,同时利用ADC进行采集,DAC预置参数及ADC采集数据通过LPUART1送PC端串口通信助手进行显示:
三、实验结果
在过程中还可以同时看到LD4亮度的变化。
四、实验总结
这次实验一共使用了ADC1、DAC1、TIM6、LPUART1等四个模块,当时想能同时多学习一些内容但过程中发现忽略了很多的细节研究,下来以后还要继续深究。在这项实验中,DAC预置数据为“0”时ADC采集的数据并不为“0”,如果采用软件滤波应该能克服这一现象。
附件:工程文件
ADC DAC.rar
(7.78 MB, 下载次数: 65)