STM32學習筆記—DAC基礎內容及常見問題

DAC,Digital-to-Analog Converter(數模轉換器),DA轉換和AD轉換有著同樣重要的作用,在許多場合都能看到DAC的應用。

今天是第8篇分享,《STM32學習筆記》之DAC基礎內容及常見問題

DA轉換器是把數字量轉變成模擬量的器件,按模擬量輸出類型通常分為:電流和電壓輸出類型。常見的DAC是電壓輸出型,在STM32中集成的DAC轉換模塊為電壓輸出型數模轉換器。


STM32 DAC 基礎內容

STM32內部集成的DAC輸出通道和功能與型號有關,一般有1到3個通道。

下面結合STM32F4描述一下DAC基本的參數信息:

1. DAC分辨率

分辨率決定了DAC的轉換精度,目前STM32內部集成的DAC分辨率為12位。

對於大部分應用來說,12位分辨率的DAC已經足夠了,同時還可通過軟件配置成 8 位分辨率。

2. DAC參考電壓

參考電壓是DA轉換輸出電壓的參考基準,STM32大部分芯片具有DAC和ADC共用的參考電壓引腳VREF+、VREF-。沒有參考電壓引腳的芯片使用VDDA作為參考電壓。

STM32參考電壓要求:1.8V ≤ 參考電壓 ≤ 3.6V,而且參考電壓≤VDDA。不同系列不同型號參考電壓範圍有差異,具體請參看數據手冊。

3. DAC對齊格式

STM32數據位數可配置為12位或者8位,對齊格式分為左對齊和右對齊。在單通道和雙通道模式下的對齊格式如下圖:

STM32學習筆記—DAC基礎內容及常見問題

4.DAC觸發選擇

STM32觸發DAC轉換有多種選擇,外部引腳、定時器、軟件觸發等,可根據實際情況選擇。

STM32學習筆記—DAC基礎內容及常見問題

放一張STM32F4的DAC框圖和引腳讓大家更加直觀瞭解DAC:

STM32學習筆記—DAC基礎內容及常見問題

STM32 DAC的功能可能不同型號之間略有差異,具體細節內容可查閱芯片對應的手冊。


STM32 DAC 參數配置

使用STM32的DAC功能只需要很簡單的配置即可,不管是使用STM32CubeMX配置,還是使用標準外設庫配置都很簡單。

1.STM32CubeMX配置

使用STM32CubeMX工具可“一鍵”配置相關的參數:使能Buffer、 觸發源選擇、 使能三角波形等。

STM32學習筆記—DAC基礎內容及常見問題

想要在項目中快速使用STM32 DAC功能,建議使用STM32CubeMX工具“一鍵”配置,避免遺漏配置,或者錯誤配置引起的不必要麻煩。

2.標準外設庫配置

STM32部分系列提供標準外設庫,對於DAC來說,包含:DAC時鐘、引腳、使能Buffer、 觸發源選擇、 使能三角波形等一些最基礎的參數。

<code>

void

DAC_Configuration

(

void

)

{ DAC_InitTypeDef DAC_InitStructure; DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); DAC_Cmd(DAC_Channel_1, ENABLE); }/<code>

這是最基礎的配置參數,如果還使用了定時器觸發、DMA等功能,就需要配置對應的內容。


STM32 DAC 常見問題

STM32的DAC功能比較簡單,往往容易忽視一些細節問題,換一個硬件環境可能問題就暴露出來了。


問題一:DAC轉換觸發源選擇和配置問題

觸發DAC轉化的方式有多種,選擇了對應的觸發源就需要進行相關的配置,有不少人配置都遺漏一些相關配置,從而導致無輸出電壓,或者電壓輸出不同步等問題。

比如:選擇了定時器觸發,但定時器沒有配置成對應觸發源。

<code>

TIM_SelectOutputTrigger

(TIM2, TIM_TRGOSource_Update);/<code>

還比如:定時器參數不對,導致定時觸發頻率不對。

<code>

TIM_TimeBaseStructure

.TIM_Prescaler

TIM_TimeBaseStructure

.TIM_Period

/<code>

解決辦法:參考官方例程,不遺漏配置、不把參數配錯。或者使用STM32CubeMX工具配置。


問題二:DAC輸出電壓不穩定問題

STM32部分型號沒有參考電壓引腳,就使用VDDA模擬電源作為參考電壓。

在實際應用中,系統的電壓受到負載的影響比較常見,如果STM32數字電源、模擬電源和參考電壓共用一個電源,就會存在參考電壓不穩定的情況,從而導致DAC輸出電壓不穩定的情況。

解決辦法:增加電源輸出功率、使用獨立VDDA模擬電源、更換使用有參考電壓引腳的芯片等。


問題三:DAC無法輸出0V問題

相信有不少人都遇到過這樣的問題:DAC無法輸出0V。

引起這個問題有可能是因為使能了Buffer(輸出緩衝器),STM32的DAC輸出緩衝器,與常人思維的理解可能有點不同。

輸出緩衝器作用是減小輸出阻抗,可用來降低輸出阻抗並在不增加外部運算放大器的情況下直接驅動外部負載

STM32學習筆記—DAC基礎內容及常見問題

在數據手冊中還有一點說明:使能緩衝器之後,輸出電壓下限為0.2V。(同時,上限電壓為VDDA - 0.2)。

解決辦法:關閉輸出緩衝器。(關閉之後,驅動能力會減弱,建議添加電壓跟隨器或運放電路)

<code>

DAC_InitStructure.DAC_OutputBuffer

= DAC_OutputBuffer_Disable/<code>


分享到:


相關文章: