Cortex-M3學習日志(五)-- -- DAC實驗
圖1-1 DAC原理框圖
數(shù)字量以串行或并行方式輸入,存儲于數(shù)碼寄存器中,數(shù)碼寄存器輸出的名位數(shù)碼分別控制對應的模擬開關,使數(shù)碼為1的位在位權網絡上產生與其值成正比的電流值或電壓值,再由求和電路將各權值相加,即得到數(shù)字量對應的模擬量。按解碼網絡結構不同可以將DAC轉換器分成T
1、
圖1-2 T型電阻網絡D/A轉換器模型
2、
圖1-3
3、
圖1-4
4、
圖
按模擬電子開關的電路的不同,也可以將D/A轉換器分為CMOS開關型D/A轉換器(速度要求不高),雙極型D/A轉換器。而雙極型D/A轉換器雙可以劃分為電流開關型(速度要求較高)與ECL電流開關型(轉換速度更高)兩種。如果對歐姆定律不陌生的話,我想上面各個模型是如何輸出電壓的應該就可以理解了,在這里就不總結公式了,因為這只是模型,對應,實際電路與模型是有所出入的,在實際應用中要著重關注一下以下幾個參數(shù):
1、
D/A轉換器的分辨率用最小分辨電壓VLSB與滿量程輸出電壓VFSV的比值來表示:
從上式可以看出D/A轉換器的分辨率只與輸入二進制數(shù)的位數(shù)n有關,因此大部分情況下我們直接把n做為分辨率如8位,10位,12位等,由此我們也可以知道分辨率值越小,分辨能力越高。
2、
在D/A轉換器中,一般用轉換誤差來描述轉換精度。DAC轉換誤差是指實際輸出模擬電壓值與理想值的最大偏差。轉換誤差是一個綜合性的靜態(tài)指標,主要由三部分構成:
1)非線性誤差:一般是由于模擬電子開關的導通電阻和導通壓降及R、2R電阻值的偏差引起。
2)漂移誤差:一般是由于運算放大器的零點漂移引起。
3)增益誤差:一般是由于參考電壓偏離標準值、運放增益不穩(wěn)定引起。
3、
轉換速度一般由建立時間決定,從輸入由全0突變全1起,到輸出電壓穩(wěn)定(最大輸出電壓正負二分之一最小輸出電壓)止,稱為DAC轉換時間。它是DAC最大響應時間。例如,DAC 5G7520響應時間不大于500ns。
除了以上三個常見的指標D/A轉換器的指標還包括電源抑制比、功率消耗、溫度系數(shù)以及輸入高、低邏輯電平的數(shù)值等技術指標。關于D/A的應用,應該說在電子系統(tǒng)中應用相當廣泛,除了在微機系統(tǒng)中將數(shù)字量轉換為模擬量典型應用之外,還常用于波形生成,名種數(shù)字式的或編程應用等。
好了,關于D/A轉換器的知識暫時總結到這,更深入的知道還需要翻一下模電,信號與線性系統(tǒng)(好像里面有奈奎斯特定理,與采樣有關),微電子,放大器等方面的書籍。下面簡單總結一下LPC1768內部集成的D/A轉換器。LPC1768內部集成的是10位模數(shù)轉換器,它是電阻串聯(lián)結構的,并且?guī)в芯彌_輸出,最大輸出頻率為1MHz。電阻串聯(lián)結構模型如下圖所示:
圖
涉及到D/A的引腳主要有DAC輸出腳P0.26,參考電壓引腳,用來給D/A轉換器提供參考電壓,模擬電源與數(shù)字電源VDD/VSS,這個兩個電源要分開提供,再不使用DAC時也要將這兩個引腳連接到電源,不能懸空,不然系統(tǒng)會不穩(wěn)定。
DAC的配置也很簡單,首先就是將P0.26設置為DAC模式,再一個就是配置DAC控制寄存器DACDR。DAC的控制寄存器DACDR的6-15位是DAC的輸出電壓數(shù)字值,這個數(shù)字決定了要輸出的電壓大小,DAC輸出電壓的計算方法是:
公式中VDAC即指AC的控制寄存器DACDR的6-15位的值,VREF指的是參考電壓,在這次實驗電路中用的是3.3V。LPC1768的DAC功能還有DAM中斷和定時控制功能,它采用又緩沖方式輸出。在這里簡單總結一下DAM模式,所謂的DAM模式也就是Direct Memory Access,漢語的意思就是直接內存訪問,是一種不經過CPU而直接從內存存取數(shù)據的數(shù)據交換模式。在DMA模式下,CPU只須向DMA控制器下達指令,讓DMA控制器來處理數(shù)據的傳送,數(shù)據傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率,可以大大節(jié)省系統(tǒng)資源。DMA模式又可以分為Single-Word DMA(單字節(jié)DMA)和Multi-Word DMA(多字節(jié)DMA)兩種,其中所能達到的最大傳輸速率也只有16.6MB/s。DMA有兩個技術特征,首先是直接傳送,其次是塊傳送。
DMA工作過程
⑴
⑵
⑶
⑷
⑸
DMA與中斷的區(qū)別
⑴
⑵
在DMA方式中,由于I/O設備直接同內存發(fā)生成塊的數(shù)據交換,因此I/O效率比較高。由于DMA技術可以提高I/O效率,因此在現(xiàn)代計算機系統(tǒng)中,得到了廣泛的應用。許多輸入輸出設備的控制器,特別是塊設備的控制器,都支持DMA方式。
通過上述分析可以看出,DMA控制器功能的強弱,是決定DMA效率的關鍵因素。DMA控制器需要為每次數(shù)據的傳送做大量的工作,數(shù)據傳送單位的增大意味著傳送次數(shù)的減少。另外,DMA方式竊取了時鐘周期,CPU處理效率降低了,要想盡量少地竊取時鐘周期,就要設法提高DMA控制器的性能,這樣可以較少地影響CPU出理效率。
好了,關于DAM的知識先總結到這,要想使用LPC1768的DAM功能,需要配置D/A轉換控制寄存器DACCTRL與DAC轉換計數(shù)寄存器DACCNTVAL。這次實驗只是簡單的學習怎樣使用DAC,所以沒有用到DAM。下面說一下實驗電路,就是把DAC轉換的電壓通過放大器輸出到Speaker,電壓值不同,則Speaker的響度就不一樣,如下圖所示:
圖
關于LM386M已經是爛大街的芯片,關于它的應用網上有成大堆的資料可供參考,這里就不總結它的用法了,下面貼上這次實驗的程序:
關于LM386M已經是爛大街的芯片,關于它的應用網上有成大堆的資料可供參考,這里就不總結它的用法了,下面貼上這次實驗的程序:
一、dac.c程序源代碼
#include"includes.h"
void DACInit( void )
{
}
void DacOut(unsigned int val)
{
}
二、main.c程序部分源代碼
void DacConver(unsigned int val)
{
}
int main(void)
{
}
程序很簡單,就是簡單的測試,能從Speaker聽到響聲,同時我也把結果發(fā)送到了串口顯示,下面是實驗的結果:
圖
評論