學(xué)習(xí)筆記 | DAC基礎(chǔ)內(nèi)容及常見(jiàn)問(wèn)題
DAC,Digital-to-Analog Converter(數(shù)模轉(zhuǎn)換器),DA轉(zhuǎn)換和AD轉(zhuǎn)換有著同樣重要的作用,在許多場(chǎng)合都能看到DAC的應(yīng)用。
DA轉(zhuǎn)換器是把數(shù)字量轉(zhuǎn)變成模擬量的器件,按模擬量輸出類(lèi)型通常分為:電流和電壓輸出類(lèi)型。常見(jiàn)的DAC是電壓輸出型,在STM32中集成的DAC轉(zhuǎn)換模塊為電壓輸出型數(shù)模轉(zhuǎn)換器。
嵌入式專(zhuān)欄
1
下面結(jié)合STM32F4描述一下DAC基本的參數(shù)信息:
1. DAC分辨率
分辨率決定了DAC的轉(zhuǎn)換精度,目前STM32內(nèi)部集成的DAC分辨率為12位。
對(duì)于大部分應(yīng)用來(lái)說(shuō),12位分辨率的DAC已經(jīng)足夠了,同時(shí)還可通過(guò)軟件配置成 8 位分辨率。
2. DAC參考電壓
參考電壓是DA轉(zhuǎn)換輸出電壓的參考基準(zhǔn),STM32大部分芯片具有DAC和ADC共用的參考電壓引腳VREF+、VREF-。沒(méi)有參考電壓引腳的芯片使用VDDA作為參考電壓。
STM32參考電壓要求:1.8V ≤ 參考電壓 ≤ 3.6V,而且參考電壓≤VDDA。不同系列不同型號(hào)參考電壓范圍有差異,具體請(qǐng)參看數(shù)據(jù)手冊(cè)。
3. DAC對(duì)齊格式
STM32數(shù)據(jù)位數(shù)可配置為12位或者8位,對(duì)齊格式分為左對(duì)齊和右對(duì)齊。在單通道和雙通道模式下的對(duì)齊格式如下圖:
4.DAC觸發(fā)選擇
STM32觸發(fā)DAC轉(zhuǎn)換有多種選擇,外部引腳、定時(shí)器、軟件觸發(fā)等,可根據(jù)實(shí)際情況選擇。
放一張STM32F4的DAC框圖和引腳讓大家更加直觀(guān)了解DAC:
STM32 DAC的功能可能不同型號(hào)之間略有差異,具體細(xì)節(jié)內(nèi)容可查閱芯片對(duì)應(yīng)的手冊(cè)。
嵌入式專(zhuān)欄
2
1.STM32CubeMX配置
想要在項(xiàng)目中快速使用STM32 DAC功能,建議使用STM32CubeMX工具“一鍵”配置,避免遺漏配置,或者錯(cuò)誤配置引起的不必要麻煩。
2.標(biāo)準(zhǔn)外設(shè)庫(kù)配置
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);}
這是最基礎(chǔ)的配置參數(shù),如果還使用了定時(shí)器觸發(fā)、DMA等功能,就需要配置對(duì)應(yīng)的內(nèi)容。
嵌入式專(zhuān)欄
3
問(wèn)題一:DAC轉(zhuǎn)換觸發(fā)源選擇和配置問(wèn)題
觸發(fā)DAC轉(zhuǎn)化的方式有多種,選擇了對(duì)應(yīng)的觸發(fā)源就需要進(jìn)行相關(guān)的配置,有不少人配置都遺漏一些相關(guān)配置,從而導(dǎo)致無(wú)輸出電壓,或者電壓輸出不同步等問(wèn)題。
比如:選擇了定時(shí)器觸發(fā),但定時(shí)器沒(méi)有配置成對(duì)應(yīng)觸發(fā)源。
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);
還比如:定時(shí)器參數(shù)不對(duì),導(dǎo)致定時(shí)觸發(fā)頻率不對(duì)。
TIM_TimeBaseStructure.TIM_PrescalerTIM_TimeBaseStructure.TIM_Perio
解決辦法:參考官方例程,不遺漏配置、不把參數(shù)配錯(cuò)?;蛘呤褂肧TM32CubeMX工具配置。
問(wèn)題二:DAC輸出電壓不穩(wěn)定問(wèn)題
STM32部分型號(hào)沒(méi)有參考電壓引腳,就使用VDDA模擬電源作為參考電壓。
在實(shí)際應(yīng)用中,系統(tǒng)的電壓受到負(fù)載的影響比較常見(jiàn),如果STM32數(shù)字電源、模擬電源和參考電壓共用一個(gè)電源,就會(huì)存在參考電壓不穩(wěn)定的情況,從而導(dǎo)致DAC輸出電壓不穩(wěn)定的情況。
解決辦法:增加電源輸出功率、使用獨(dú)立VDDA模擬電源、更換使用有參考電壓引腳的芯片等。
問(wèn)題三:DAC無(wú)法輸出0V問(wèn)題
相信有不少人都遇到過(guò)這樣的問(wèn)題:DAC無(wú)法輸出0V。
引起這個(gè)問(wèn)題有可能是因?yàn)槭鼓芰薆uffer(輸出緩沖器),STM32的DAC輸出緩沖器,與常人思維的理解可能有點(diǎn)不同。
輸出緩沖器作用是減小輸出阻抗,可用來(lái)降低輸出阻抗并在不增加外部運(yùn)算放大器的情況下直接驅(qū)動(dòng)外部負(fù)載。
在數(shù)據(jù)手冊(cè)中還有一點(diǎn)說(shuō)明:使能緩沖器之后,輸出電壓下限為0.2V。(同時(shí),上限電壓為VDDA - 0.2)。
解決辦法:關(guān)閉輸出緩沖器。(關(guān)閉之后,驅(qū)動(dòng)能力會(huì)減弱,建議添加電壓跟隨器或運(yùn)放電路)
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
復(fù)盤(pán)一下
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀(guān)點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!