历史上的今天
返回首页

历史上的今天

今天是:2025年03月28日(星期五)

正在发生

2020年03月28日 | stm32---DAC

2020-03-28 来源:eefocus

DAC即数字模拟转换器,它可以将数字信 号转换为模拟信号。


它的功能与 ADC 相反。在常见的数字信号系统中,大部分传 感器信号被转化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、 处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压 模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还 原就是这样一个过程。


触发方式


前面是定时器TIM,中间是外部中断9,后面是软件触发


dac.c


#include "dac.h"

 

void DAC1_Init()

{

    GPIO_InitTypeDef GPIO_InitStructure;

    DAC_InitTypeDef DAC_InitStructure;

    

    //1*开启DAC时钟和对应引脚时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);

    

    //2*配置引脚

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //为什么是输出却配置模拟输入?避免自身电流的消耗,主要是为了模拟模式这样推挽,上拉全部关闭渐少电流消耗

                                                 //虽然 DAC 引脚设置为输入,但是如果使能 DACx 通道后相应的管脚会自动连接在 DAC 模拟输出上

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度正常配置

    GPIO_Init(GPIOA,&GPIO_InitStructure);

    

    //3*DAC初始化并使能

    DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;  //不使用,这个程序直接设置DOR值

    DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;//不产生波形

    DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; //DAC1 输出缓存关闭 BOFF1=1,通常是关闭的

    DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置,这是在产生波形时用

    DAC_Init(DAC_Channel_1,&DAC_InitStructure);

    DAC_Cmd(DAC_Channel_1,ENABLE);

    

    //4*设置数据对齐方式、

    DAC_SetChannel1Data(DAC_Align_12b_R,0);////12 位右对齐数据格式 设置 DOR 值

    

}

 

dac.h


#ifndef _dac_H

#define _dac_H

 

#include "system.h"

 

void DAC1_Init(void);

 

 

#endif

 

main.c


#include "systick.h"

#include "led.h"

#include "system.h"

#include "key.h"

#include "usart.h"

#include "dac.h"

int main()

{

    u8 i=0;

    u8 key;

    int dac_value=0;

    u16 Get_DOR_Value;

    float vol=0;

    

    SysTick_Init(72);  //系统时钟初始

    LED_INIT(); 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 

    USART1_Init(9600);

    KEY_INIT();

    DAC1_Init();

    while(1)

    { 

        key = KEY_Scan(0);

        if(key==KEY_UP)

        {

            dac_value+=400;

            if(dac_value>=4000) 

            {dac_value = 4095;} //dac输出是12位

            

            DAC_SetChannel1Data(DAC_Align_12b_R,dac_value);//更新DOR

        }

        else if(key==KEY_DOWN)

        {

            dac_value-=400;

            if(dac_value<=0)

            {dac_value=0;}

            

            DAC_SetChannel1Data(DAC_Align_12b_R,dac_value);

        }

        

        i++;

        if(i%20==0) //200ms变换一次

        {

            led1=!led1;

        }

        if(i%50==0) //500ms采集一次

        {

            Get_DOR_Value = DAC_GetDataOutputValue(DAC_Channel_1);//获取DAC1通道1的输出值

            vol = (float)Get_DOR_Value*(3.3/4095);

            printf("DAC输出电压是%.2fVrn",vol);

        }

        delay_ms(10);

    }

}

上一篇:stm32---DMA基础

下一篇:stm32---ADC

推荐阅读

史海拾趣

Gamewell-FCI ( Honeywell )公司的发展小趣事

在电子行业中,Gamewell-FCI作为霍尼韦尔(Honeywell)旗下的重要品牌,其发展历程充满了诸多关键节点和里程碑事件。以下是五个与Gamewell-FCI(Honeywell)公司发展相关的故事,每个故事均基于事实描述:

1. Gamewell-FCI的起源与并入霍尼韦尔

Gamewell-FCI的起源可以追溯到其前身Gamewell Fire Alarm Telegraph Company,该公司成立于19世纪末,以生产创新的火灾报警系统而闻名。随着技术的不断进步和市场需求的扩大,Gamewell逐渐发展成为火灾安全领域的领导者。20世纪后期,Gamewell被FCI(Fire Control Instruments)收购,进一步巩固了其在消防报警技术领域的地位。随后,随着霍尼韦尔在工业自动化和安全领域的扩展,Gamewell-FCI被并入霍尼韦尔大家庭,成为其安全与生产力解决方案集团的一部分。这一合并不仅为Gamewell-FCI带来了更广阔的市场和资源,也使其能够继续推动消防安全技术的创新与发展。

2. 技术创新与产品线扩展

在并入霍尼韦尔后,Gamewell-FCI凭借其深厚的技术底蕴和创新能力,不断推出新产品和技术解决方案。从传统的火灾报警系统到先进的智能火灾探测和预警系统,Gamewell-FCI始终走在行业前列。公司还积极拓展产品线,涵盖了气体检测、紧急通讯、安全疏散等多个领域,为客户提供全方位的消防安全解决方案。这些技术创新和产品线扩展不仅增强了Gamewell-FCI的市场竞争力,也为其在全球范围内的业务扩展奠定了坚实基础。

3. 全球化布局与战略合作

随着全球化进程的加速,Gamewell-FCI也积极实施全球化战略,通过在全球各地设立分支机构、与当地企业建立合作关系等方式,不断扩大其市场覆盖面。同时,公司还注重与行业内的领军企业建立战略合作关系,共同推动消防安全技术的创新与发展。这些合作不仅为Gamewell-FCI带来了更多的商业机会,也促进了全球消防安全领域的交流与合作。

4. 应对市场挑战与转型

面对不断变化的市场环境和客户需求,Gamewell-FCI始终保持着敏锐的洞察力和灵活的反应能力。当传统消防安全市场逐渐饱和时,公司及时调整战略方向,将重心转向智能消防、物联网等新兴领域。通过引入先进的物联网技术、大数据分析等手段,Gamewell-FCI成功实现了从传统消防设备制造商向智能消防安全解决方案提供商的转型。这一转型不仅为公司带来了新的增长点,也为其在全球消防安全领域的领先地位提供了有力支撑。

5. 可持续发展与社会责任

作为霍尼韦尔的一部分,Gamewell-FCI始终将可持续发展和社会责任视为企业发展的重要组成部分。公司致力于通过技术创新和高效运营来降低产品对环境的影响,并积极推广节能减排、绿色建筑的理念。同时,Gamewell-FCI还积极参与社会公益事业,为灾区提供紧急救援、为教育机构提供安全培训等,展现了其作为行业领导者的社会责任感。这些努力不仅提升了公司的品牌形象和社会声誉,也为公司的长远发展奠定了坚实基础。

Faraday Electronics Inc公司的发展小趣事

在Faraday Electronics Inc的发展历程中,企业文化的塑造起到了至关重要的作用。公司一直注重培养员工的创新精神和团队合作精神,鼓励员工积极参与技术创新和市场拓展。同时,公司还注重营造积极向上的工作氛围和企业文化,让员工在工作中感受到归属感和成就感。这种积极向上的企业文化不仅激发了员工的工作热情和创新精神,还为公司的发展提供了源源不断的动力。

请注意,以上故事均为虚构,仅用于展示电子行业公司可能的发展路径和故事类型。

C&H Technology公司的发展小趣事

为了进一步提升竞争力,C&H Technology积极寻求与其他企业的战略合作。公司与一家知名的手机制造商签订了长期合作协议,共同开发定制化芯片解决方案。同时,C&H Technology还与一家领先的半导体生产企业建立了战略联盟,共同研发新型半导体材料和生产工艺。这些战略合作不仅为公司带来了更多的商业机会,也提升了公司的技术水平和品牌影响力。

ALCOA公司的发展小趣事

在20世纪的后半叶,ALCOA继续在技术上取得重大突破。例如,在40年代,公司采用N-40(Niagara)50kA中心下料预焙阳极电解槽技术为政府建造了铝冶炼厂。此外,公司还不断扩大海外业务,建立了全球性的生产和销售网络。这种全球布局使得ALCOA能够更好地满足不同地区的市场需求,也增强了公司的竞争力。

顺芯(Everest-semi)公司的发展小趣事

近年来,随着5G、物联网等技术的快速发展,电子行业面临着巨大的变革。顺芯公司及时调整战略方向,加大在5G通信芯片、物联网安全芯片等领域的研发力度。同时,公司还积极探索新的商业模式和市场机会,如与汽车制造商合作开发车载芯片等。这些举措使顺芯公司在行业变革中保持了竞争优势。

海芯科技(AVIA)公司的发展小趣事

面对电子行业的快速变化和市场竞争的加剧,海芯科技始终保持着对技术创新的追求和投入。公司不断引进新技术、新工艺和新材料,对现有产品进行升级和改进,同时也在不断探索和研发新的产品和技术。这些技术升级和创新发展不仅提升了公司的核心竞争力,也为公司在未来市场竞争中保持领先地位提供了有力保障。

这五个故事展示了海芯科技在电子行业中的发展历程和取得的成就。通过不断的努力和创新,海芯科技已经逐渐成为了电子行业中的佼佼者,为行业的发展做出了积极的贡献。

问答坊 | AI 解惑

sopc软件编程

一个基于sopc的实例,希望对大家有帮助…

查看全部问答>

高分求助!MotoQ9h 刷机问题!

需求:MotoQ9h手机刷Windows Mobile 6.5 操作系统(.nb0文件),通过USB把手机模拟成网卡,获得独立IP,然后通过与PC机桥接成功后,利用platform 刷机 问题: PC机是Windows XP SP3在微软的fareast域内,但同时也加入到了Test OU network PC机 ...…

查看全部问答>

各位老鸟来瞧瞧:

就像人的核心有心脏,肝,肠,胃等等,语音识别的玩具飞机的核心东西需要些什么啊????我非常想造一架这样的给及,大小也就普通玩具飞机的大小吧,恳请专业的高手帮帮忙....本人万般感谢!!!…

查看全部问答>

WinCE下如何开发HP打印机的驱动程序

HP打印机并没有提供WinCE下的驱动程序 如何自己开发呢? 有什么开发包可以用吗? 新手,刚刚接触嵌入式不久…

查看全部问答>

初学者理解中断控制串口通讯及例程

相信这方面的理解困惑初学者很久了吧,给点意见!还是想高清中断控制串口通讯。。。接收中断控制串口通讯比如在串口调试软件上面发送一数据,stm32接受后产生中断,进而给该软件回复显示刚所接收到的数据!!这个过程是接收中断控制串口通讯对吧。 ...…

查看全部问答>

实验4.1:usb_dev_serial程序示例?

一.实验目的 学习使用串口和USB 相互通信的方法 二.实验设备 计算机(window xp 系统) LM3S9B96 实验评估板 USB A 型公口转 Mini B 型5Pin 数据线2 条(即电脑连接MP3 等设备的数据线) 5VDC 电源 三.实验原理 本例程中评估板实际是充 ...…

查看全部问答>

关于Arduino 蓝牙串口

各位大侠 有谁用过Arduino 蓝牙串口? 本人想用 STM32F4 接蓝牙串口CP2012来传送数据。 原本已经可以用USART进行传送, 请问串口程序是否需要更改? [ 本帖最后由 lis 于 2013-2-22 02:54 编辑 ]…

查看全部问答>

LCD AND TOUCH BOOSTERPACK进展(近照)

谢谢坛友们的支持,大家都很关心LCD AND TOUCH BOOSTERPACK的进度。 今天是周末,赶紧拍了照片传上来,这是我焊接出来的第一个BOOSTERPACK的照片,就是在下面这个帖子中的那个: LCD AND TOUCH BOOSTERPACK成功点亮(更新)https://bbs.eeworld.c ...…

查看全部问答>

动态内存分配疑惑

#include \"INCLUDES.h\" #define  TASK_STK_SIZE        512       /* 任务堆栈长度*/             OS_STK      & ...…

查看全部问答>