STM32F4 DAC簡單操作【使用庫函數】


STM32F4的DAC是一個12位,電壓輸出的DAC。可被配置為12位或者8位,也能和DMA聯合使用。DAC具有兩個獨立轉換通道。在雙DAC模式下,DA抓換可被配置成獨立模式或者同步工作模式。兩路DAC參考電壓以及ADC都是VREF。

【主要特性】

1、兩路  2、12bit時數據可被配置成左對齊或右對齊  3、具有同步更新能力  4、噪聲產生  5、三角波產生  6、兩個通道獨立轉換或同步轉換  7、每個通道都有DMA能力  8、DMA出錯檢測 9、可外部觸發

輸出電壓計算公式:

Vout = VREF×DOR/4095 = 參考電壓×DAC數據寄存器值/4095

【實驗內容】

利用DAC輸出指定的電壓,軟件觸發DAC轉換。

【初始化要點】

1、GPIO配置成AIN/AN即模擬功能。記着開時鍾

void DAC_GPIO_Config(void)
{
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
 
}

2、DAC觸發方式設置為軟件觸發(DAC_Trigger_Software)

void DAC_Config(void)
{
  DAC_GPIO_Config();
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
  DAC_Init(DAC_Channel_1,&DAC_InitStructure);
 
  DAC_Cmd(DAC_Channel_1,ENABLE);
  DAC_SetChannel1Data(DAC_Align_12b_R,0x0000);
 
  DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}

3、主函數中使用:

向輸出寄存器寫數據,數據可根據上邊公式得到

DAC_SetChannel1Data(DAC_Align_12b_R,0xF0F0);

然后,然間觸發

DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);

這時,在引腳上GPIOA-4上將會有電壓輸出。

 

當然也可以設置成定時器觸發,TIM6和TIM7 是專公DAC轉換用的定時器。初始化也很方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM