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