




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機產品設計與制作
(stm32機型)石梅香項目7、利用DAC實現LED亮度控制任務7.1認識STM32單片機的DAC總目錄1項目1、利用GPIO和位帶操作實現溫度報警
2項目2、利用SysTick實現溫度報警與控制
3項目3、利用按鍵查詢實現參數設定及顯示
4項目4、利用外部中斷實現工件計數顯示
5項目5、利用定時器實現直流電動機PWM調速6項目6、利用計數器實現工件計數顯示和打包控制
7項目7、利用DAC實現LED亮度控制8項目8、利用ADC實現土壤濕度采集
項目總目標項目總目標具體工作任務利用STM32內部DAC控制LED亮度。亮度值可由按鍵設定。請進行方案設計、器件選型、電路和程序設計,并完成軟硬件調試。子目錄7項目7、利用外部中斷實現工件計數及顯示
7.1任務7.1 認識STM32單片機的DAC7.2任務7.2 方案及電路設計7.3任務7.3 程序設計7.4任務7.4 軟硬件深入(七)任務目標:了解STM32F103ZET6的DAC基本特性與原理,能看懂DAC結構框圖任務7.1認識STM32單片機的DAC分組討論自由發言,闡述對模擬量數字量的認識,查閱資料了解STM32的DAC。討論與發言舉一些例子說明自動化系統中哪些是模擬量,哪些是數字量。總結什么是模擬量,什么是數字量?二者有何區別?什么是DAC?什么是ADC?衡量ADC和DAC性能的指標有哪些?3、模擬信號的類型ADC和DAC設備允許的模擬信號多數為電壓、電流、電阻等。STM32F1xx的ADC是電壓輸入,允許輸入的范圍是VREF-
≤
VIN
≤
VREF+。STM32F1xx的DAC是電壓輸出,允許輸出的范圍也是VREF-
≤
VOUT
≤
VREF+。由于VREF-與VSSA接在一起,VREF-=0V,因此允許的模擬電壓輸入/輸出范圍就是0~VREF+。認識DAC和ADC4、DAC的位數及其影響ADC和DAC電路常見有8、12、14、16、24位等。STM32F1xx的ADC和DAC都是12位的。那么DAC的位數對其性能有什么影響呢?對于1位的DAC,如果VREF=3.3V,則理想狀態下,向DAC寫“0”時,引腳上輸出0V;向DAC寫“1”時,引腳上輸出3.3V。輸出電壓和數字的關系為:VOUT=D×3.3。向DAC寫入數值每增加或減小1,輸出電壓跳變3.3V。對于2位的DAC,可以向DAC寫“00”、“01”、“10”、“11”四個二進制數值,對應十進制為“0”、“1”、“2”、“3”。如果VREF=3.3V,則可將其設計為如下特性:向DAC寫“0”,即二進制“00”時,輸出電壓=0V;向DAC寫“1”,即二進制“01”時,輸出電壓=1.1V;向DAC寫“2”,即二進制“10”時,輸出電壓=2.2V;向DAC寫“3”,即二進制“11”時,輸出電壓=3.3V;輸出電壓和數字的關系為:VOUT=D×3.3/3。向DAC寫入數值每增加或減小1,輸出電壓跳變1.1V。認識DAC和ADC4、DAC的位數及其影響我們將DAC輸出電壓跳變的最小值稱為電壓分辨率。電壓跳變值越小,DAC的分辨率越高。分辨率越高,DAC的電壓控制越精細。顯然2位DAC比1位DAC的分辨率更高。繼續增大位數n,會怎樣呢?表7.1.1給出了VREF+=3.3V時,n=8、12、16三種情況下的數字量和電壓對應關系。表7.1.1VREF=3.3V時不同位數DAC的數字和電壓對應關系認識DAC和ADC位數數字電壓轉換公式及分辨率二進制十進制n=80000000000×3.3/255=0V轉換公式:VOUT=D×255/3.3分辨率:3.3/255≈13mV0000000111×3.3/255≈12.941mV0000001022×3.3/255≈25.882mV………………11111110254254×3.3/255≈3.287V11111111255255×3.3/255=3.3Vn=1200000000000000×3.3/4095=0V轉換公式:VOUT=D×4095/3.3分辨率:3.3/4095≈0.8mV00000000000111×3.3/4095≈0.806mV00000000001022×3.3/4095≈1.612mV………………11111111111140954095×3.3/4095=3.3Vn=16000000000000000000×3.3/65535=0V轉換公式:VOUT=D×65535/3.3分辨率:3.3/65535≈50μV000000000000000111×3.3/65535≈50.355μV000000000000001022×3.3/4095≈100.710μV………………11111111111111116553565535×3.3/65535=3.3V認識DAC結構
1、DAC結構框圖STM32F103的DAC結構如圖7.1.2所示。STM32F103DAC內部有兩個獨立的12位D/A轉換器,稱為DACx,x=1和2,它們是DAC的核心執行部件,能夠將DORx里存儲的數字量,轉換成0~VREF的模擬電壓,并輸出到DAC_OUTx引腳。DAC相關引腳除了DAC_OUTx(包括DAC_OUT1和DAC_OUT2),圖7.1.2中也標出了其它相關引腳。它們的功能及要求如表7.1.2所示。注意DAC_OUT1固定復用PA4,DAC_OUT2則復用PA5。認識STM32的DAC結構DAC相關引腳除了DAC_OUTx(包括DAC_OUT1和DAC_OUT2),圖7.1.2中也標出了其它相關引腳。它們的功能及要求如表7.1.2所示。注意DAC_OUT1固定復用PA4,DAC_OUT2則復用PA5。認識STM32的DAC結構名稱功能要求VDDA和VSSA供電電源正、負極2.4V≤VDDA≤VDD(最大不超過3.6V)VREF+和VREF-參考電源正、負極2.4V≤VREF+≤VDDAVREF-=VSSADAC_OUT1通道1的模擬電壓輸出復用PA4DAC_OUT2通道2的模擬電壓輸出復用PA5EXTI_9DAC外部觸發引腳復用尾號9的引腳例如PA9、PB9等,可指定4、DAC的數據寄存器DORx包括DOR1和DOR2,是數據輸出寄存器(DataOutputRegister),DORx的值決定了DACx輸出引腳上的電壓。例如DOR1=0,則DAC_OUT1引腳輸出0V;DOR1=4095,則DAC_OUT1引腳輸出電壓為VREF。DHRx是數據保持寄存器(DataHoldRegister)。編程時我們應將數據寫到DHRx里。DAC工作時,會按照一定的控制邏輯,將DHRx的值裝入DORx,之后進行D/A轉換。認識STM32的DAC結構DAC的數據疊加將DHRx的數據向DORx裝載時,有三種控制邏輯:不疊加:編程設置為不疊加時,直接將DHRx的數據向DORx裝載,不疊加任何其它數據。疊加偽噪聲:將DHRx的數據疊加上偽噪聲后,再裝載到DORx。疊加三角波:將DHRx的數據疊加上三角波后,再裝載到DORx。疊加偽噪聲的形式,或者疊加三角波的幅度,都可以編程設定,感興趣的可閱讀《STM32F1xx參考手冊》。本項目主要學習不疊加模式。認識STM32的DAC結構認識STM32的DAC結構DAC控制寄存器DAC控制寄存器能夠根據程序設置,發出諸如ENx、TSELx、TENx、DMAENx、WAVENx、MAMPx等命令,控制DAC1和DAC2的工作。例如編程使能DAC1則EN1=1,只有EN1=1,DAC1才能夠工作。再例如設置DAC2使能和不疊加,則EN2=1和WAVEN2=00,這種情況下DAC控制寄存器會控制DHR2中的數據直接進入DOR2不做任何疊加。認識STM32的DAC結構DAC的觸發DHR向DOR的裝載還需要觸發信號。可以編程設置為如下幾種觸發方式:外部觸發使能禁止(TENx=0)TEN就是TriggerEnable(觸發使能)。如果編程為“觸發使能禁止”,則CPU執行該語句后DAC控制器會發出TENx=0信號。這種情況下,不需要任何額外的觸發信號。向DHRx寄存器寫數據后,數據會自動裝入DORx,然后進行D/A轉換并向對應引腳輸出模擬電壓。2.如果編程設置為“觸發使能允許”,則執行后,DAC還需要一個額外的觸發信號,才能將DHRx中的數據裝入DORx。可以編程指定觸發源TSELx(TriggerSelection)來自以下八種之一:SWTRIGx(SoftWareTrigger),軟件觸發:DAC軟件觸發寄存器的SWTRIGx被軟件置位時,觸發對應通道的數據裝載。TIM2_TRGO、TIM4_TRGO~TIM8_TRGO,定時器TRGO事件觸發:當指定定時器(例如TIM2)發生TRGO事件時觸發數據裝載。EXTI_9,外部中斷9引腳觸發:當EXTI_9引腳上輸入有效信號時觸發數據裝載。本項目重點學習外部觸發禁止和軟件觸發兩種方式。認識STM32的DAC結構單DAC和雙DAC模式在STM32F1xxDAC內部,DHR寄存器實際上有9個,如圖7.1.3所示。DHR1和DHR2各有3個寄存器,它們在單DAC模式下工作。DHRD有3個寄存器,在雙DAC模式下工作。單DAC模式如圖(a)所示,兩個DAC獨立工作。向DHR12Rx、DHR12Lx或者DHR8Rx(x=1或2)六個寄存器中的任何一個寫數據,數據將按一定規則送到DORx寄存器。雙DAC的模式如圖(b)所示,向DHR12RD、DHR12LD或者DHR8RD三個寄存器中的任意一個寫數據,數據可以按照一定的規則同時或者分時送到DOR1和DOR2寄存器。本項目主要學習單DAC模式。圖7.1.3單DAC模式和雙DAC模式認識STM32的DAC結構DAC的數據對齊格式STM32F103的DAC是12位的,每個通道的DOR寄存器只需要12位數據。但是編程時,向圖7.1.3中的DHR寄存器寫入的數據是32位的。數據對齊格式規定了如何將12位數據存儲在32位里。共有12位右對齊、12位左對齊和8位右對齊三種格式。(1)單DAC模式以通道1為例,如果希望DAC_OUT1引腳輸出2V電壓,按照12位D/A轉換公式,應向DOR1寄存器送數據2V×4095/VREF=2V×4095/(3.3V)=2482,對應12位二進制數為100110110010。如果以12位右對齊格式寫數據,應將數據寫到DHR12R1寄存器,如圖7.1.4(a)所示。其規則是:將12位數據靠右(Right)放在D11~D0,D15~D12位補“0”,D31~D16不用。不用的位,是“1”還是“0”都不會對數值有影響,一般可以簡單地認為其值為“0”。12位右對齊這種格式,不會改變數據大小,除非數據大于4095。如果以12位左對齊格式寫數據,應將數據寫到DHR12L1寄存器,如圖(b)所示。其規則是:將12位數據靠左(Left)放在D15~D4,D3~D0位補“0”。相當于將數據左移4位,數據大小變為原來的16倍。如果以8位右對齊格式寫數據,應將數據寫到DHR8R1寄存器,如圖(c)所示。其規則是:將12位數據的最低4位舍棄,只留下8位,然后靠右(Right)存放,高8位補“0”。相當于數據被右移了4位,此時數據大小變為原來的1/16。以上以DOR1為例,DOR2也如此。表7.1.3三種數據格式下的DAC計算公式數據對齊格式轉換公式分辨率12位右對齊DDHR=VOUT×4095/VREFVREF/4095,DDHR每改變1,VOUT跳變一個12位分辨率12位左對齊DDHR=(VOUT×4095/VREF)×16=VOUT×65520/VREFVREF/4095,DDHR每改變16,VOUT跳變一個12位分辨率8位右對齊DDHR=(VOUT×4095/VREF)/16=VOUT×255/VREFVREF/255,DDHR每改變1,VOUT跳變一個8位分辨率認識STM32的DAC結構編程時,如果指定為12位右對齊格式,仍可按照DDHR=VOUT×4095/VREF公式,計算待輸出數字量的大小。注意DDHR應小于等于4095。如果指定為12位左對齊格式,應將數據乘16,才可得到同樣的電壓輸出。即公式變為:DDHR=(VOUT×4095/VREF)×16=VOUT×65520/VREF,注意D應小于等于65520。如果指定為8位右對齊格式,應將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論