<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Cortex-M3學(xué)習日志(五)-- -- DAC實(shí)驗

Cortex-M3學(xué)習日志(五)-- -- DAC實(shí)驗

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
終于逮了個(gè)忙里偷閑的機會(huì ),就再學(xué)一下LPC1768的外圍功能吧,循序漸進(jìn)是學(xué)習的基本規則,也許LPC1768的DAC與8位單片機16位單片機里面集成的DAC操作類(lèi)似,但是既然這是懶貓的學(xué)習日志,就順便把DAC再好好復習一下了,或許能品出個(gè)什么味來(lái)^_^DAC是Digital to Analog Converter的縮寫(xiě),中文名就是數模轉換器,D/A轉換器一般由數碼寄存器、模擬電子開(kāi)關(guān)電路、解碼網(wǎng)絡(luò )、求和電路及基準電壓等幾部分組成。如下圖所示:

本文引用地址:http://dyxdggzs.com/article/201611/319430.htm

圖1-1 DAC原理框圖

數字量以串行或并行方式輸入,存儲于數碼寄存器中,數碼寄存器輸出的名位數碼分別控制對應的模擬開(kāi)關(guān),使數碼為1的位在位權網(wǎng)絡(luò )上產(chǎn)生與其值成正比的電流值或電壓值,再由求和電路將各權值相加,即得到數字量對應的模擬量。按解碼網(wǎng)絡(luò )結構不同可以將DAC轉換器分成T型電阻網(wǎng)絡(luò )D/A轉換器、倒T型電阻網(wǎng)絡(luò )D/A轉換器、權電流D/A轉換器、權電阻網(wǎng)絡(luò )轉換器。

1、T型電阻網(wǎng)絡(luò )D/A轉換器,其簡(jiǎn)單模型如下圖所示:

圖1-2 T型電阻網(wǎng)絡(luò )D/A轉換器模型

2、倒T型電阻網(wǎng)絡(luò )D/A轉換器簡(jiǎn)易模型

圖1-3倒T型電阻網(wǎng)絡(luò )D/A轉換器

3、權電流D/A轉換器簡(jiǎn)易模型如下圖所示:

圖1-4權電流D/A轉換器簡(jiǎn)易模型

4、權電阻網(wǎng)絡(luò )轉換器簡(jiǎn)易模型如下圖所示:

1-5權電阻網(wǎng)絡(luò )轉換器簡(jiǎn)易模型

按模擬電子開(kāi)關(guān)的電路的不同,也可以將D/A轉換器分為CMOS開(kāi)關(guān)型D/A轉換器(速度要求不高),雙極型D/A轉換器。而雙極型D/A轉換器雙可以劃分為電流開(kāi)關(guān)型(速度要求較高)與ECL電流開(kāi)關(guān)型(轉換速度更高)兩種。如果對歐姆定律不陌生的話(huà),我想上面各個(gè)模型是如何輸出電壓的應該就可以理解了,在這里就不總結公式了,因為這只是模型,對應,實(shí)際電路與模型是有所出入的,在實(shí)際應用中要著(zhù)重關(guān)注一下以下幾個(gè)參數:

1、分辨率

D/A轉換器的分辨率用最小分辨電壓VLSB與滿(mǎn)量程輸出電壓VFSV的比值來(lái)表示:


從上式可以看出D/A轉換器的分辨率只與輸入二進(jìn)制數的位數n有關(guān),因此大部分情況下我們直接把n做為分辨率如8位,10位,12位等,由此我們也可以知道分辨率值越小,分辨能力越高。

2、轉換精度

在D/A轉換器中,一般用轉換誤差來(lái)描述轉換精度。DAC轉換誤差是指實(shí)際輸出模擬電壓值與理想值的最大偏差。轉換誤差是一個(gè)綜合性的靜態(tài)指標,主要由三部分構成:

1)非線(xiàn)性誤差:一般是由于模擬電子開(kāi)關(guān)的導通電阻和導通壓降及R、2R電阻值的偏差引起。

2)漂移誤差:一般是由于運算放大器的零點(diǎn)漂移引起。

3)增益誤差:一般是由于參考電壓偏離標準值、運放增益不穩定引起。

3、轉換速度

轉換速度一般由建立時(shí)間決定,從輸入由全0突變全1起,到輸出電壓穩定(最大輸出電壓正負二分之一最小輸出電壓)止,稱(chēng)為DAC轉換時(shí)間。它是DAC最大響應時(shí)間。例如,DAC 5G7520響應時(shí)間不大于500ns。

除了以上三個(gè)常見(jiàn)的指標D/A轉換器的指標還包括電源抑制比、功率消耗、溫度系數以及輸入高、低邏輯電平的數值等技術(shù)指標。關(guān)于D/A的應用,應該說(shuō)在電子系統中應用相當廣泛,除了在微機系統中將數字量轉換為模擬量典型應用之外,還常用于波形生成,名種數字式的或編程應用等。

好了,關(guān)于D/A轉換器的知識暫時(shí)總結到這,更深入的知道還需要翻一下模電,信號與線(xiàn)性系統(好像里面有奈奎斯特定理,與采樣有關(guān)),微電子,放大器等方面的書(shū)籍。下面簡(jiǎn)單總結一下LPC1768內部集成的D/A轉換器。LPC1768內部集成的是10位模數轉換器,它是電阻串聯(lián)結構的,并且帶有緩沖輸出,最大輸出頻率為1MHz。電阻串聯(lián)結構模型如下圖所示:

1-6電阻串聯(lián)結構

涉及到D/A的引腳主要有DAC輸出腳P0.26,參考電壓引腳,用來(lái)給D/A轉換器提供參考電壓,模擬電源與數字電源VDD/VSS,這個(gè)兩個(gè)電源要分開(kāi)提供,再不使用DAC時(shí)也要將這兩個(gè)引腳連接到電源,不能懸空,不然系統會(huì )不穩定。

DAC的配置也很簡(jiǎn)單,首先就是將P0.26設置為DAC模式,再一個(gè)就是配置DAC控制寄存器DACDR。DAC的控制寄存器DACDR的6-15位是DAC的輸出電壓數字值,這個(gè)數字決定了要輸出的電壓大小,DAC輸出電壓的計算方法是:


公式中VDAC即指AC的控制寄存器DACDR的6-15位的值,VREF指的是參考電壓,在這次實(shí)驗電路中用的是3.3V。LPC1768的DAC功能還有DAM中斷和定時(shí)控制功能,它采用又緩沖方式輸出。在這里簡(jiǎn)單總結一下DAM模式,所謂的DAM模式也就是Direct Memory Access,漢語(yǔ)的意思就是直接內存訪(fǎng)問(wèn),是一種不經(jīng)過(guò)CPU而直接從內存存取數據的數據交換模式。在DMA模式下,CPU只須向DMA控制器下達指令,讓DMA控制器來(lái)處理數據的傳送,數據傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率,可以大大節省系統資源。DMA模式又可以分為Single-Word DMA(單字節DMA)和Multi-Word DMA(多字節DMA)兩種,其中所能達到的最大傳輸速率也只有16.6MB/s。DMA有兩個(gè)技術(shù)特征,首先是直接傳送,其次是塊傳送。

DMA工作過(guò)程

當進(jìn)程要求設備輸入數據時(shí),CPU把準備存放輸入數據的內存起始地址以及要傳送的字節數分別送入DMA控制器中的內存地址寄存器和傳送字節計數器。

發(fā)出數據傳輸要求的進(jìn)行進(jìn)入等待狀態(tài)。此時(shí)正在執行的CPU指令被暫時(shí)掛起。進(jìn)程調度程序調度其他進(jìn)程占據CPU。

輸入設備不斷地竊取CPU工作周期,將數據緩沖寄存器中的數據源源不斷地寫(xiě)入內存,直到所要求的字節全部傳送完畢。

DMA控制器在傳送完所有字節時(shí),通過(guò)中斷請求線(xiàn)發(fā)出中斷信號。CPU在接收到中斷信號后,轉入中斷處理程序進(jìn)行后續處理。

中斷處理結束后,CPU返回到被中斷的進(jìn)程中,或切換到新的進(jìn)程上下文環(huán)境中,繼續執行。

DMA與中斷的區別

中斷方式是在數據緩沖寄存器滿(mǎn)之后發(fā)出中斷,要求CPU進(jìn)行中斷處理,而DMA方式則是在所要求傳送的數據塊全部傳送結束時(shí)要求CPU進(jìn)行中斷處理。這就大大減少了CPU進(jìn)行中斷處理的次數。

中斷方式的數據傳送是在中斷處理時(shí)由CPU控制完成的,而DMA方式則是在DMA控制器的控制下,不經(jīng)過(guò)CPU控制完成的。這就排除了CPU因并行設備過(guò)多而來(lái)不及處理以及因速度不匹配而造成數據丟失等現象。

在DMA方式中,由于I/O設備直接同內存發(fā)生成塊的數據交換,因此I/O效率比較高。由于DMA技術(shù)可以提高I/O效率,因此在現代計算機系統中,得到了廣泛的應用。許多輸入輸出設備的控制器,特別是塊設備的控制器,都支持DMA方式。

通過(guò)上述分析可以看出,DMA控制器功能的強弱,是決定DMA效率的關(guān)鍵因素。DMA控制器需要為每次數據的傳送做大量的工作,數據傳送單位的增大意味著(zhù)傳送次數的減少。另外,DMA方式竊取了時(shí)鐘周期,CPU處理效率降低了,要想盡量少地竊取時(shí)鐘周期,就要設法提高DMA控制器的性能,這樣可以較少地影響CPU出理效率。

好了,關(guān)于DAM的知識先總結到這,要想使用LPC1768的DAM功能,需要配置D/A轉換控制寄存器DACCTRL與DAC轉換計數寄存器DACCNTVAL。這次實(shí)驗只是簡(jiǎn)單的學(xué)習怎樣使用DAC,所以沒(méi)有用到DAM。下面說(shuō)一下實(shí)驗電路,就是把DAC轉換的電壓通過(guò)放大器輸出到Speaker,電壓值不同,則Speaker的響度就不一樣,如下圖所示:

1-7 DAC實(shí)驗電路圖

關(guān)于LM386M已經(jīng)是爛大街的芯片,關(guān)于它的應用網(wǎng)上有成大堆的資料可供參考,這里就不總結它的用法了,下面貼上這次實(shí)驗的程序:

關(guān)于LM386M已經(jīng)是爛大街的芯片,關(guān)于它的應用網(wǎng)上有成大堆的資料可供參考,這里就不總結它的用法了,下面貼上這次實(shí)驗的程序:

一、dac.c程序源代碼

#include"includes.h"

void DACInit( void )

{

PINCON -> PINSEL1 = 0x00200000;

}

void DacOut(unsigned int val)

{

DAC -> DACR = ((val << 16)/3300) | DAC_BIAS;

}

二、main.c程序部分源代碼

void DacConver(unsigned int val)

{

unsigned int hi = 0;

unsigned int low = 0;

hi= val/1000;

low = val00/100;

DacVal[16]= (unsigned char)hi + 0x30;

DacVal[18]= (unsigned char)low + 0x30;

DacOut(val);

UARTSend(0,DacVal,25);

}

int main(void)

{

unsigned int i = 0;

SystemInit();

SysTick_Config(SystemFrequency/1000 - 1);

PortInit();

DACInit();

UARTInit(0,19200);

for(i=0;i<7;i++)

{

UARTSend(0,OpenString[i],50);

}

DacConver(2000);// 2.0v

DacConver(2500);// 2.5v

DacConver(3000);// 3.0v

DacConver(3300);// 3.0v

//LedOnMeg[4] = 4+0x30;

//UART0_SendString (KeyMeg);

while(1)

{

KeyScan();//按鍵掃描

KeyHandle(); //按鍵處理

LedHandle(); // Led處理程序

}

}

程序很簡(jiǎn)單,就是簡(jiǎn)單的測試,能從Speaker聽(tīng)到響聲,同時(shí)我也把結果發(fā)送到了串口顯示,下面是實(shí)驗的結果:


1-8實(shí)驗執行結果



關(guān)鍵詞: Cortex-M3DAC實(shí)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>