STM32 DAC簡介
大容量的STM32F103具有內部DAC,戰(zhàn)艦STM32選擇的是STM32F103ZET6屬于大容量產品,所以是帶有DAC模塊的。
STM32的DAC模塊(數字/模擬轉換模塊)是12位數字輸入,電壓輸出型的DAC。DAC可以配置為8位或12位模式,也可以與DMA控制器配合使用。DAC工作在12位模式時,數據可以設置成左對齊或右對齊。DAC模塊有2個輸出通道,每個通道都有單獨的轉換器。在雙DAC模式下,2個通道可以獨立地進行轉換,也可以同時進行轉換并同步地更新2個通道的輸出。DAC可以通過引腳輸入參考電壓VREF+以獲得更精確的轉換結果。
STM32的DAC模塊主要特點有:
① 2個DAC轉換器:每個轉換器對應1個輸出通道
② 8位或者12位單調輸出
③ 12位模式下數據左對齊或者右對齊
④ 同步更新功能
⑤ 噪聲波形生成
⑥ 三角波形生成
⑦ 雙DAC通道同時或者分別轉換
⑧ 每個通道都有DMA功能
單個DAC通道的框圖如圖24.1.1所示:
圖24.1.1 DAC通道模塊框圖
圖中VDDA和VSSA為DAC模塊模擬部分的供電,而Vref+則是DAC模塊的參考電壓。DAC_OUTx就是DAC的輸出通道了(對應PA4或者PA5引腳)。
從圖24.1.1可以看出,DAC輸出是受DORx寄存器直接控制的,但是我們不能直接往DORx寄存器寫入數據,而是通過DHRx間接的傳給DORx寄存器,實現對DAC輸出的控制。前面我們提到,STM32的DAC支持8/12位模式,8位模式的時候是固定的右對齊的,而12位模式又可以設置左對齊/右對齊。單DAC通道x,總共有3種情況:
DAC模塊的通道1來輸出模擬電壓,其詳細設置步驟如下:
1)開啟PA口時鐘,設置PA4為模擬輸入。
STM32F103ZET6的DAC通道1是接在PA4上的,所以,我們先要使能PORTA的時鐘,然后設置PA4為模擬輸入(雖然是輸入,但是STM32內部會連接在DAC模擬輸出上)。
2)使能DAC1時鐘。
同其他外設一樣,要想使用,必須先開啟相應的時鐘。STM32的DAC模塊時鐘是由APB1提供的,所以我們先要在APB1ENR寄存器里面設置DAC模塊的時鐘使能。
3)設置DAC的工作模式。
該部分設置全部通過DAC_CR設置實現,包括:DAC通道1使能、DAC通道1輸出緩存關閉、不使用觸發(fā)、不使用波形發(fā)生器等設置。
4)設置DAC的輸出值。
通過前面3個步驟的設置,DAC就可以開始工作了,我們使用12位右對齊數據格式,所以我們通過設置DHR12R1,就可以在DAC輸出引腳(PA4)得到不同的電壓值了。
最后,再提醒一下大家,本例程,我們使用的是3.3V的參考電壓,即Vref+連接VDDA。





