航順芯片HK32F103xC/D/E-DAC的應用及注意事項
HK32F103x/C/D/E是推出的中大容量的103系列芯片。作為32位MCU常用的外設DAC是12位數(shù)字輸入,電壓輸出的數(shù)字/模擬轉(zhuǎn)換器。DAC可以配置為8位或12位模式,也可以與DMA控制器配合使用。DAC工作在12位模式時,數(shù)據(jù)可以設置成左對齊或右對齊。DAC模塊有2個輸出通道,每個通道都有單獨的轉(zhuǎn)換器。在雙DAC模式下,2個通道可以獨立地進行轉(zhuǎn)換,也可以同時進行轉(zhuǎn)換并同步地更新2個通道的輸出。DAC可以通過引腳輸入?yún)⒖茧妷篤REF+以獲得更精確的轉(zhuǎn)換結(jié)果。DAC主要特性
●2個DAC轉(zhuǎn)換器:每個轉(zhuǎn)換器對應1個輸出通道
●8位或者12位單調(diào)輸出
●12位模式下數(shù)據(jù)左對齊或者右對齊
●同步更新功能
●噪聲波形生成
●三角波形生成
●雙DAC通道同時或者分別轉(zhuǎn)換
●每個通道都有DMA功能
●外部觸發(fā)轉(zhuǎn)換
●輸入?yún)⒖茧妷篤REF+
DAC通道模塊框圖
DAC 引腳
DAC數(shù)字格式
根據(jù)選擇的配置模式,數(shù)據(jù)按照下文所述寫入指定的寄存器:單DAC通道x,有3種情況
☝ 8位數(shù)據(jù)右對齊:用戶須將數(shù)據(jù)寫入寄存器DAC_DHR8Rx[7:0]位(實際是存入寄存器DHRx[11:4]位)
☝ 12位數(shù)據(jù)左對齊:用戶須將數(shù)據(jù)寫入寄存器DAC_DHR12Lx[15:4]位(實際是存入寄存器DHRx[11:0]位)
☝ 12位數(shù)據(jù)右對齊:用戶須將數(shù)據(jù)寫入寄存器DAC_DHR12Rx[11:0]位(實際是存入寄存器DHRx[11:0]位)
根據(jù)對DAC_DHRyyyx寄存器的操作,經(jīng)過相應的移位后,寫入的數(shù)據(jù)被轉(zhuǎn)存到DHRx 寄存器中(DHRx是內(nèi)部的數(shù)據(jù)保存寄存器x)。隨后,DHRx寄存器的內(nèi)容或被自動地傳送到DORx寄存器,或通過軟件觸發(fā)或外部事件觸發(fā)被傳送到DORx寄存器。
單DAC通道模式的數(shù)據(jù)寄存器
雙DAC通道,有3種情況
☝ 8位數(shù)據(jù)右對齊:用戶須將DAC通道1數(shù)據(jù)寫入寄存器DAC_DHR8RD[7:0]位(實際是存入寄存器DHR1[11:4]位),將DAC通道2數(shù)據(jù)寫入寄存器DAC_DHR8RD[15:8]位(實際是存入寄存器 DHR2[11:4]位)
☝ 12位數(shù)據(jù)左對齊:用戶須將DAC通道1數(shù)據(jù)寫入寄存器DAC_DHR12LD[15:4]位(實際是存入寄存器DHR1[11:0]位),將DAC通道2數(shù)據(jù)寫入寄存器DAC_DHR12LD[31:20]位(實際是存入寄存器DHR2[11:0]位)
☝ 12位數(shù)據(jù)右對齊:用戶須將DAC通道1數(shù)據(jù)寫入寄存器DAC_DHR12RD[11:0]位(實際是存入寄存器DHR1[11:0]位),將DAC通道2數(shù)據(jù)寫入寄存器DAC_DHR12RD[27:16]位(實際是存入寄存器 DHR2[11:0]位)
根據(jù)對DAC_DHRyyyD寄存器的操作,經(jīng)過相應的移位后,寫入的數(shù)據(jù)被轉(zhuǎn)存到DHR1 和DHR2寄存器中(DHR1和DHR2是內(nèi)部的數(shù)據(jù)保存寄存器x)。隨后,DHR1和DHR2的內(nèi)容或被自動地傳送到DORx寄存器,或通過軟件觸發(fā)或外部事件觸發(fā)被傳送到DORx寄存器。
雙DAC通道模式的數(shù)據(jù)寄存器
DAC轉(zhuǎn)換
不能直接對寄存器DAC_DORx寫入數(shù)據(jù),任何輸出到DAC通道x的數(shù)據(jù)都必須寫入AC_DHRx寄存器(數(shù)據(jù)實際寫入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、DAC_DHR12LD、或者DAC_DHR12RD寄存器)。如果沒有選中硬件觸發(fā)(寄存器DAC_CR1的TENx位置’0’),存入寄存器DAC_DHRx的數(shù)據(jù)會在一個APB1時鐘周期后自動傳至寄存器DAC_DORx。如果選中硬件觸發(fā)(寄存器DAC_CR1 的TENx位置’1’),數(shù)據(jù)傳輸在觸發(fā)發(fā)生以后3個APB1時鐘周期后完成。一旦數(shù)據(jù)從DAC_DHRx 寄存器裝入DAC_DORx寄存器,在經(jīng)過時間tSETTLING之后,輸出即有效,這段時間的長短依電源電壓和模擬輸出負載的不同會有所變化。
TEN=0觸發(fā)失能時轉(zhuǎn)換的時間框圖
DAC輸出電壓
數(shù)字輸入經(jīng)過DAC被線性地轉(zhuǎn)換為模擬電壓輸出,其范圍為0到VREF+。任一DAC通道引腳上的輸出電壓滿足下面的關(guān)系:DAC輸出=VREFx(DOR/4095)
HK32F103xC/D/E在操作DAC需要注意的地方
用戶在使用HK32F103xC/D/E的DAC在使用過程中,當輸出一個較低電壓,例如0.41V,當對DAC->CR.BOFF 1 bit進行操作時,不管是從0->1,還是從1->0,均會出現(xiàn)一個高于實際DAC輸出很高的電壓值,且不會自行恢復,需要手動給一個trig信號或者將DAC->CR.BOFF1回到上一次觸發(fā)之前的狀態(tài)才能恢復正常。舉例說明:DAC 配置為軟件觸發(fā),DAC->CR.BOFF1=0,輸出一個0.41V電壓(DHR12R1設置為0x1FF),從PA4輸出,當正常輸出以后配置DAC->CR.BOFF1=1,此時電壓會跳變到2.9V左右,且不會自行恢復,當給DAC_SWTRIGR.SWTRIG1配置為1以后即可自行恢復。
解決方案:
1. DAC BUFF輸出功能,在程序上電初始化配置完畢以后,程序運行中不要更改。
2. 如果需要在程序運行中更改,且對輸出電壓的短暫跳變不敏感,那么可通過更改觸發(fā)方式為DAC_Trigger_T1_TRGO等循環(huán)自動觸發(fā)方式或者在DAC->CR.BOFF1 bit發(fā)生改變以后手動給一次觸發(fā)信號。
以上有關(guān)寄存器的介紹可以參考我們HK的HK32F103xC/D/E的應用手冊。
如需要了解更多航順MCU產(chǎn)品,請聯(lián)系航順核心代理商,穎特新科技,或者掃碼聯(lián)系我們!
在之前的介紹中,我們也為大家介紹了《航順芯片HK32F103xC/D/E-Timer的應用及注意事項》,也是目前我們主推的非常成熟的解決方案!
編輯:zzy 最后修改時間:2022-06-20