【 ST NUCLEO-G071RB测评】ADC_DAC
<div class='showpostmsg'> 本帖最后由 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”,如果采用软件滤波应该能克服这一现象。
附件:工程文件
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 这个帖子发的真不容易,这次应该最少是第7次了。现在采用的方式是先发部分内容然后再二次编辑修改,但过程中依然会出现错误提示。忽然想到会不会是帖子中有插入的代码文本造成的?于是就将文中代码文本删除了,好像能正常发。一会儿再发个帖子看看正常不。下面是发帖时返回的页面:
页:
[1]