找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3640|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32的DAC輸出電壓步驟與程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:305566 發(fā)表于 2019-1-21 19:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
DAC和ADC兩者之間好像DAC要簡單許多

可以簡單分為幾個(gè)步驟:

         1、使能GPIO和DAC時(shí)鐘;

               RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );      //使能PORTA通道時(shí)鐘
               RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );      //使能DAC通道時(shí)鐘

         2、初始化DAC相應(yīng)的GPIO,并將其模式設(shè)置為模擬輸出(這也是最重要的);

               GPIO_InitTypeDef GPIO_InitStructure;

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                 // 端口配置
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;          //模擬輸入
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
                GPIO_SetBits(GPIOA,GPIO_Pin_4)    ;//PA.4 輸出高

         3、初始化DAC工作模式

                DAC_InitType.DAC_Trigger=DAC_Trigger_None;    //不使用觸發(fā)功能 TEN1=0
                DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形發(fā)生
                DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值設(shè)置
                DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;    //DAC1輸出緩存關(guān)閉 BOFF1=1
                DAC_Init(DAC_Channel_1,&DAC_InitType);     //初始化DAC通道1

         4、使能DAC

                DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC1

         5、設(shè)置DAC的值,用于改變輸出的電壓

                DAC_SetChannel1Data(DAC_Align_12b_R, 0);  //12位右對(duì)齊數(shù)據(jù)格式設(shè)置DAC值

         6、當(dāng)然你還可以再封裝一個(gè)函數(shù)用于設(shè)置DAC的值

             //設(shè)置通道1輸出電壓
             //vol:0~3300,代表0~3.3V
             void Dac1_Set_Vol(u16 vol)
             {
                    float temp=vol;
                    temp/=1000;
                    temp=temp*4096/3.3;
                    DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右對(duì)齊數(shù)據(jù)格式設(shè)置DAC值
             }



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:135253 發(fā)表于 2019-1-22 19:43 | 只看該作者
  2、初始化DAC相應(yīng)的GPIO,并將其模式設(shè)置為模擬輸出(這也是最重要的);

               GPIO_InitTypeDef GPIO_InitStructure;

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                 // 端口配置
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;          //模擬輸入
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
                GPIO_SetBits(GPIOA,GPIO_Pin_4)    ;//PA.4 輸出高
補(bǔ)充一下說明:
1:DAC的通道1在PA4上,查一下芯片的數(shù)據(jù)手冊(cè)即可!
2:DAC本身是輸出的,此地PA4設(shè)置為模擬輸入,有沒有錯(cuò)誤,沒有!因?yàn)槭鼓蹹AC通道之后,PA4就與DAC的模擬輸出相連接!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表