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

2021-10-22 22:56:45 字數 3241 閱讀 1848

關注+星標公眾

dac,digital-to-analog converter(數模轉換器),da轉換和ad轉換有著同樣重要的作用,在許多場合都能看到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位,對齊格式分為左對齊和右對齊。在單通道和雙通道模式下的對齊格式如下圖:

4.dac觸發選擇

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

stm32 dac的功能可能不同型號之間略有差異,具體細節內容可查閱晶元對應的手冊。

嵌入式專欄

stm32 dac 引數配置

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

1.stm32cubemx配置

使用stm32cubemx工具可「一鍵」配置相關的引數:使能buffer、 觸發源選擇、 使能三角波形等。

想要在專案中快速使用stm32 dac功能,建議使用stm32cubemx工具「一鍵」配置,避免遺漏配置,或者錯誤配置引起的不必要麻煩。

2.標準外設庫配置

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

void dac_configuration(void)

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

嵌入式專欄

stm32 dac 常見問題

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

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

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

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

tim_selectoutputtrigger(tim2, tim_trgosource_update);
還比如:定時器引數不對,導致定時觸發頻率不對。

tim_timebasestructure.tim_prescaler

tim_timebasestructure.tim_period

問題二:dac輸出電壓不穩定問題stm32部分型號沒有參考電壓引腳,就使用vdda模擬電源作為參考電壓。

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

問題三:dac無法輸出0v問題

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

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

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

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

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

dac_initstructure.dac_outputbuffer = dac_outputbuffer_disable;
覆盤一下

▼dac 引數配置:stm32cubemx工具可「一鍵」配置、標準外設庫配置;

▼dac 常見問題:dac轉換觸發源選擇和配置問題、dac輸出電壓不穩定問題、dac無法輸出0v問題;

CSS基礎內容 學習筆記

cascading style sheets 層疊樣式表!樣式表 顯示的效果!層疊 可以對同一元素設定相同屬性的不同值 更改其顯示效果!html 頁面顯示內容的骨架!沒毛的鸚鵡!css 對頁面顯示的骨架內容進行美化!長了一身很漂亮羽毛的鸚鵡!方式一 行內引入 直接將css 寫在標籤的內部 每乙個ht...

C 基礎及CLR基礎學習筆記

一 clr的fcl cts和cls 1.clr為common language runtime,為微軟.net framework的公共語言執行時。2.cts為common type system 通用型別系統 其是微軟制定的乙個正式的規範來描述型別的定義和行為,使得一種程式語言寫的 能和另一種程式...

Swift 個人學習筆記 02 基礎內容

以下還是有很多沒看懂 不確定的地方,我會以 存疑 的註解指出。在此感謝中文版翻譯者,這極大地加快了 swift 的學習速度。中文版 swift 3 程式語言 int型別與處理器位寬相同。同理uint。這一點類似於 c 裡面的 long 型別。另有 uint8,int8,uint16,int16,ui...