1.概述STM32DAC
2.STM32F407庫函數總結
3.輸出模擬電壓配置過程
---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
1.概述STM32DAC
-12位數字輸入電壓輸出(8/12對齊方式可編程)
-支持DMA
-數據是由DAC_DHRX寄存器經過一個或三個APB1時鍾周期后傳入DAC_DORX,不可以對DAC_DORX寄存器操作,再經過T(和電源電壓,模擬輸出負載有關。典型3u,最大6u)后輸出有效,1/T可知最大的轉換速度為333KHZ左右
-DACx_OUT=Vref*DORx/4095.
-觸發方式可選(軟件或者硬件觸發,其中硬件觸發又包括定時器和外部中斷倆大類)
-有噪聲生成和三角波生成功能(需要使能觸發)
-雙DAC通道轉換功能
2.STM32F407庫函數總結
/* Function used to set the DAC configuration to the default reset state *****/
void DAC_DeInit(void);
/* DAC channels configuration: trigger, output buffer, data format functions */
void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);
void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);軟件出發使能函數
void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);
void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);
void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);設置多通道數據
uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);
/* DMA management functions ***************************************************/
void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);
/* Interrupts and flags management functions **********************************/
void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);
void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
3.輸出模擬電壓配置過程
(1)開啟PA時鍾設置PA4為模擬輸入,GPIO時鍾線AHB1,STM32中復用DAC_OUT1/2分別復用為PA4/5
(2)使能DAC時鍾,時鍾線為APB1
(3)初始化DAC,DAC_Init();包含以下參數
.DAC_LFSRUnmask_TriangleAmplitude=設置屏蔽和幅值選擇器(做波形發生器時使用)
.DAC_OutputBuffer=輸出緩存一般不用
.DAC_Trigger=是否使用觸發功能
.DAC_WaveGeneration=是否使用波形發生(三角和噪聲波)
(4)使能DAC,DAC_CMD();
(5)設置DACx輸出值:DAC_Setchannle1Data()
(6)讀取DAC:DAC_GetDataoutputValue();