历史上的今天
返回首页

历史上的今天

今天是:2025年05月28日(星期三)

正在发生

2021年05月28日 | cortex_m3_STM32嵌入式学习笔记18之DAC实验

2021-05-28 来源:eefocus

STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。 DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。 DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。 DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下, 2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输出。


本节实验,我们将利用按键(或 USMART) 控制 STM32 内部 DAC1来输出电压,通过 ADC1的通道1 采集 DAC的输出电压,在 LCD 模块上面显示 ADC 获取到的电压值以及 DAC 的设定输出电压值等信息。


STM32 的 DAC 模块主要特点有:

① 2 个 DAC 转换器:每个转换器对应 1 个输出通道

② 8 位或者 12 位单调输出

③ 12 位模式下数据左对齐或者右对齐

④ 同步更新功能

⑤ 噪声波形生成

⑥ 三角波形生成

⑦ 双 DAC 通道同时或者分别转换

⑧ 每个通道都有 DMA 功能


当 DAC 的参考电压为 Vref+的时候(对 STM32F103RC 来说就是 3.3V), DAC 的输出电压是线性的从 0~Vref+, 12 位模式下 DAC 输出电压与 Vref+以及 DORx 的计算公式如下:

DACx 输出电压=Vref*( DORx/4095)


我的ADC和DAC的理解是:


ADC可以采集电压把电压转换为数字,DAC可以把数字转换为电压的形式并输出


配置步骤:


1)开启PA口时钟,设置PA4为模拟输入。


STM32F103RCT6 的 DAC 通道 1 在 PA4 上,所以,我们先要使能 PORTA 的时钟,然后设置 PA4 为模拟输入。 DAC 本身是输出,但是为什么端口要设置为模拟输入模式呢?因为一但使能 DACx 通道之后,相应的 GPIO 引脚( PA4 或者 PA5)会自动与 DAC 的模拟输出相连,设置为输入,是为了避免额外的干扰。


2)使能DAC1时钟。

3) 初始化DAC,设置DAC的工作模式。

4) 使能DAC转换通道

5) 设置DAC的输出值。


主函数。。通过按键来调节DAC输出电压的强度,WKUP增强,KEY0减弱(也可以通过USMART组件设置)


intmain(void) { u16adcnum=0; u16dacnum=0; floattem; u8key,t=0; init(); while(1) { t++; key=KEY_Scan(0); if(key==WK_UP_PRES) { if(dacnum<4000)dacnum+=200; DAC_SetChannel1Data(DAC_Align_12b_R,dacnum); } elseif(key==KEY0_PRES) { if(dacnum>200)dacnum-=200; elsedacnum=0; DAC_SetChannel1Data(DAC_Align_12b_R,dacnum); } if(t==10||key==WK_UP_PRES||key==KEY0_PRES) { adcnum=Dac1_Get_Vol();dacnum=adcnum; LCD_ShowxNum(124,150,adcnum,4,16,0);//显示DAC寄存器值 tem=(float)adcnum*(3.3/4096);//得到DAC电压值 adcnum=tem; LCD_ShowxNum(124,170,tem,1,16,0);//显示电压值整数部分 tem-=adcnum;tem*=1000; LCD_ShowxNum(140,170,tem,3,16,0X80);//显示电压值的小数部分 adcnum=Get_Adc_Average(ADC_Channel_1,10); tem=(float)adcnum*(3.3/4096); adcnum=tem; LCD_ShowxNum(124,190,tem,1,16,0); tem-=adcnum;tem*=1000; LCD_ShowxNum(140,190,tem,3,16,0X80); t=0; LED0=!LED0; } delay_ms(10); } }

最后在通过杜邦线将PA1和PA4连起来就好了。。至于为什么要连这两个口 看图


ADC1 和DAC1 分别挂在了 PA1和PA4上,所以我们想要通过ADC1采集DAC1输出的电压,就要将这两点连起来


推荐阅读

史海拾趣

ATO SOLUTION公司的发展小趣事

在电子行业的激烈竞争中,ATO SOLUTION公司通过一项创新性的技术突破,成功引领了市场的新潮流。该公司研发出了一款高效能的半导体芯片,极大地提升了电子设备的性能和能效比。这一技术的问世,迅速获得了行业内外的广泛关注和认可,为公司赢得了大量合作伙伴和客户,奠定了市场领先地位。

CCS[Custom Computer Services]公司的发展小趣事

随着数字化时代的到来,CCS公司积极拥抱数字化转型。公司投入大量资源进行信息化建设,引入了先进的信息管理系统和生产设备,实现了生产过程的自动化和智能化。数字化转型不仅提高了公司的生产效率和管理水平,还为客户提供了更加便捷和高效的服务体验。展望未来,CCS公司将继续加大在数字化转型方面的投入力度,不断探索新的业务模式和技术创新,为公司的可持续发展注入新的动力。

这些故事虽然基于虚构,但它们的逻辑和结构都是基于电子行业发展的一般规律和常识。希望这些故事能够满足您的需求,并为您了解电子行业中的公司发展提供一定的参考。

Andigilog公司的发展小趣事

CCS公司深知人才是企业发展的核心竞争力。因此,公司高度重视人才培养和团队建设。公司建立了完善的人才培养和激励机制,通过定期的培训、学习和实践锻炼,不断提升员工的专业技能和综合素质。同时,CCS公司还注重团队建设,通过团队建设活动和文化建设,增强员工的凝聚力和归属感,为公司的发展提供有力的人才保障。

扬州国芯(Gcore)公司的发展小趣事

随着业务的不断发展,CCS公司意识到市场拓展的重要性。公司积极寻求与国内外知名企业的合作,通过战略合作的方式共同开拓市场。通过与这些企业的合作,CCS公司不仅获得了更多的业务机会,还提高了自身的品牌知名度和市场影响力。同时,CCS公司还积极参加各类行业展会和交流活动,与同行建立广泛的联系和合作关系,为公司的长远发展奠定了坚实的基础。

Eon公司的发展小趣事

在数字化浪潮的推动下,E.ON也在不断探索技术创新和数字化转型。公司利用大数据、人工智能等先进技术优化能源生产和供应流程,提高运营效率。此外,E.ON还积极与科技公司合作,开发新的能源应用和服务,为客户提供更加便捷、高效的能源解决方案。

以上五个故事概述了E.ON公司(特别是与能源相关的E.ON集团)发展的重要阶段和事件。虽然每个故事的详细程度可能无法完全达到500字的要求,但它们共同勾勒出了E.ON公司从诞生到发展成为全球能源巨头的历程。

川土(Chipanalog)公司的发展小趣事

经过数月的紧张研发与测试,川土微电子成功推出了其首款自研产品——一款高性能的隔离器芯片。这款芯片的问世不仅填补了国内市场的空白,也标志着川土微电子在模拟芯片领域的初步成功。随后,公司开始逐步扩大产品线,涵盖了接口、高性能模拟等多个系列。

问答坊 | AI 解惑

PXA27x+WMMX指令

各位英雄:      本人想在PXA27x处理器下用WMMX指令对H.264编解码做优化,本人的开发环境是Visual Studio.NET 2005,在Windows CE操作系统下。      暂时没有安装任何其它的编译器,请问该怎么编译WMMX ...…

查看全部问答>

关于bsp 中 动态链接库 和 驱动 、应用程序的一些疑惑

1 在bsp中可以放入应用程序:SOURCES,MAKEFILE,DIRS,应用程序代码。但是在platform.bib/.reg里并没有任何该应用程序的信息,所以这个应用程序,只能被编译,但并不会被加到nk里?如果要加到nk里,就要在platform.bib里将它导入?在bsp里的应用 ...…

查看全部问答>

请给一个platbuild的下载地址啊!

在网上找了半天没找到platbuild的下载地址很郁闷啊。。。要做毕业设计急需,希望谁给我个下载地址啊,谢谢!…

查看全部问答>

请问除了MS哪里有Windows ce 5.0下载

请问除了microsoft网站哪边还有比较快的windows ce 5.0的下载地址…

查看全部问答>

求购TI Cortex-M3开发板

有谁愿意转让TI EKK8962评估套件,TI LM3S9000系列开发套件,或者周立功 EasyARM8962开发板。要求物品齐全,资料齐全。请联系QQ:25159290.…

查看全部问答>

【为C2000做贡献】基于TMS320F2812的USB通讯C源码(初始化)

本想收费,看在maylove美女的面子上就不收费了,我发了我两年多时间收集的资料。本来有更多的资料,可以因为系统重装,有些资料就丢失了,真可惜。 [ 本帖最后由 fxw451 于 2011-4-7 09:29 编辑 ]…

查看全部问答>

手把手教你Altium Designer如何将SCH设计更新到PCB 之一

手把手教你Altium Designer如何将SCH设计更新到PCB 之一 手把手教你Altium Designer如何将SCH设计更新到PCB 之十  手把手教你Altium Designer如何将SCH设计更新到PCB 之九   手把手教你Altium Designer如何将SCH设计更新到 ...…

查看全部问答>

LM3S8962控制TEA5767

最近用LM3S8962 玩了一个收音机。跟各位分享一下哦。…

查看全部问答>

有没有人用过意法半导体的L6201PS

现在使用过程中出现一个问题,在很偶然的情况下,上电后6201直接烧掉了。原来都用的好好的,怎么会突然烧掉呢?出现三四次了 大家有没有用过,碰到过这种情况没有?…

查看全部问答>

救命呀各位大神!救救我的期末考试!是关于MSP430G2553的!!

只是一个很小的问题。。我们期末考试要用开发板做一个作品,我和我的组员想做电子琴。但是。。。。。我们不知道使用薄膜键盘的简易电子琴的蜂鸣器代码是什么?(其实我觉得这个问题好拗口,但是我的搭档是这样描述的,那大概就是类似的问题了)。 ...…

查看全部问答>