SPI與模擬量轉(zhuǎn)換課件_第1頁
SPI與模擬量轉(zhuǎn)換課件_第2頁
SPI與模擬量轉(zhuǎn)換課件_第3頁
SPI與模擬量轉(zhuǎn)換課件_第4頁
SPI與模擬量轉(zhuǎn)換課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第十章SPI與模擬量轉(zhuǎn)換主要內(nèi)容SPI的基本工作原理GP32的SPI模塊編程基礎(chǔ)A/D和D/A轉(zhuǎn)換的基本問題MC908GP32內(nèi)部A/D轉(zhuǎn)換模塊GP32MCUA/D轉(zhuǎn)換編程實(shí)例*利用SPI進(jìn)行高位擴(kuò)A/D展接口*利用SPI進(jìn)行高位擴(kuò)D/A展接口*擴(kuò)展實(shí)現(xiàn)D/A轉(zhuǎn)換*常用傳感器及采樣電路簡介

《嵌入式技術(shù)基礎(chǔ)與實(shí)踐》10.1SPI的基本工作原理10.1.1SPI的主要特性

①全雙工。 ②主、從工作方式。 ③發(fā)送和接收的數(shù)據(jù)寄存器相互獨(dú)立從而實(shí)現(xiàn)雙緩存操作。 ④主機(jī)可以設(shè)定4種工作頻率(最大可達(dá)總線頻率的二分之一)。 ⑤從機(jī)最大工作頻率等于總線頻率。 ⑥發(fā)送結(jié)束、接收結(jié)束、工作方式錯(cuò)誤和溢出錯(cuò)誤四種中斷標(biāo)志。 ⑦一個(gè)主控MCU和幾個(gè)從控MCU相互連接。 ⑧幾個(gè)MCU相互連接構(gòu)成一個(gè)多主機(jī)系統(tǒng)。 ⑨一個(gè)主控MCU和一個(gè)或多個(gè)從屬外設(shè)相互連接。10.1.2SPI的數(shù)據(jù)傳輸

利用SPI進(jìn)行MCU之間的數(shù)據(jù)傳輸時(shí),主機(jī)的程序控制著數(shù)據(jù)傳輸,從機(jī)的程序配合主機(jī)工作,完成傳輸過程。圖10-1是SPI的主-從連接示意圖。具體工作過程:

從主機(jī)CPU發(fā)出啟動傳輸信號開始,此時(shí)要傳送的數(shù)據(jù)裝入8位移位寄存器,同時(shí)產(chǎn)生8個(gè)時(shí)鐘信號從SPSCK引腳依次送出;在SPSCK信號的控制下,主機(jī)中8位移位寄存器中的數(shù)據(jù)依次從MOSI引腳送出,到從機(jī)的MOSI引腳送入它的8位移位寄存器;在此過程中,從機(jī)的數(shù)據(jù)也通過MISO引腳到主機(jī)中。圖10-1SPI全雙工主-從連接

移位寄存器移位寄存器MISOMISO主MCUMOSI

MOSI波特率發(fā)生器從MCUSPSCKSPSCK10.1.3SPI模塊的時(shí)序圖10-3CPHA=0,CPOL=1時(shí)的數(shù)據(jù)/時(shí)鐘時(shí)序圖

SPSCK周期CPOL=1MOSIFROMMASTERMISOFROMSLAVE信號捕捉點(diǎn)10.1.3SPI模塊的時(shí)序圖10-4CPHA=1,CPOL=0時(shí)的數(shù)據(jù)/時(shí)鐘時(shí)序圖SPSCK周期CPOL=0MOSIFROMMASTERMISOFROMSLAVE信號捕捉點(diǎn)10.1.3SPI模塊的時(shí)序圖10-5CPHA=1,CPOL=1時(shí)的數(shù)據(jù)/時(shí)鐘時(shí)序圖

SPSCK周期CPOL=1MOSIFROMASTERMISOFROMSLAVE信號捕捉點(diǎn)10.2.2SPI模塊的寄存器

SPI模塊有3個(gè)寄存器:數(shù)據(jù)寄存器SPDR,控制寄存器SPCR,狀態(tài)和控制寄存器SPSCR。(1)數(shù)據(jù)寄存器SPDR(SPIDataRegister)

SPDR由兩個(gè)獨(dú)立的數(shù)據(jù)寄存器組成:只能寫入的發(fā)送數(shù)據(jù)寄存器和只能讀出的接收數(shù)據(jù)寄存器,它們共用一個(gè)地址$0012。寫入時(shí),為要發(fā)送的8位數(shù)據(jù),記為:T7~T0;讀出時(shí),為接收的8位數(shù)據(jù),記為:R7~R0。(2)控制寄存器SPCR(SPIControlRegister)

SPCR復(fù)位時(shí)寫一次,以后不再對其寫入,不再更改對SPI的設(shè)置,地址是$0010,各位定義:SPI接收中斷允許位

DMA選擇位

SPI發(fā)送中斷允許位

SPI允許位

SPI線或模式位

時(shí)鐘相位位

時(shí)鐘極性選擇位

SPI主機(jī)位

數(shù)據(jù)位D7D6D5D4D3D2D1D0定義SPRIEDMASSPMSTRCPOLCPHASPWOMSPESPTIE復(fù)位001010003.SPI狀態(tài)和控制寄存器SPSCR(SPIStatusandControlRegister)

SPSCR的地址:$0011,定義為:SPI的波特率=CGMOUT/(2xBD)。上式中:CGMOUT為時(shí)鐘產(chǎn)生模塊CGM的基準(zhǔn)時(shí)鐘輸出。BD是分頻系數(shù),由SPR1、SPR0位決定:SPR1、SPR0=00011011BD=2832128SPI接收器滿標(biāo)志位

錯(cuò)誤中斷允許位

SPI波特率選擇位

模式錯(cuò)誤標(biāo)志允許位

SPI發(fā)送器空標(biāo)志位

模式錯(cuò)誤標(biāo)志位

溢出標(biāo)志位數(shù)據(jù)位D7D6D5D4D3D2D1D0定義SPRFERRIEOVRFMODFSPTEMODFENSPR1SPR0復(fù)位0000100010.3A/D和D/A轉(zhuǎn)換的基本問題1A/D轉(zhuǎn)換

A/D轉(zhuǎn)換模塊(AnalogToDigitalConvertModule),即模數(shù)轉(zhuǎn)換,是將電壓信號轉(zhuǎn)換為對應(yīng)的數(shù)字信號。 進(jìn)行A/D轉(zhuǎn)換的基本問題:(1)采樣精度數(shù)字量變化一個(gè)最小量時(shí)模擬信號的變化量,即采樣位數(shù)。(2)采樣速率完成一次A/D采樣所要花費(fèi)的時(shí)間。(3)濾波對采樣的數(shù)據(jù)進(jìn)行篩選去掉誤差較大的毛刺。(4)物理量回歸把A/D采樣值與實(shí)際物理量對應(yīng)起來。

2D/A轉(zhuǎn)換(1)D/A轉(zhuǎn)換器的轉(zhuǎn)換精度有兩種衡量方法

分辨率:D/A轉(zhuǎn)換器在理論上可達(dá)到的精度。其定義,電路所能分辨的最小輸出電壓VLSB(輸入的n位數(shù)字代碼最低有效位LSB為1,其余都為0)與最大輸出電壓Vm(此時(shí)輸入數(shù)字代碼所有各位全為1)之比。轉(zhuǎn)換誤差:D/A轉(zhuǎn)換器實(shí)際上能達(dá)到的轉(zhuǎn)換精度。轉(zhuǎn)換誤差可用輸出電壓滿度值的百分?jǐn)?shù)表示,也可以用LSB的倍數(shù)來表示。

(2)D/A轉(zhuǎn)換器的轉(zhuǎn)換速度有兩種衡量方法建立時(shí)間tset是在輸入數(shù)字量各位由全0變?yōu)槿?或由全1變?yōu)槿?時(shí),輸出電壓達(dá)到某一規(guī)定值(例如取1/2LSB或滿度值的0.01%)所需要的時(shí)間。轉(zhuǎn)換速率SR是在大信號工作時(shí),即輸入數(shù)字量的各位由全0變?yōu)槿?或由全1變?yōu)?時(shí),輸出電壓uo的變化率。D/A轉(zhuǎn)換器完成一次轉(zhuǎn)換所需的時(shí)間應(yīng)包括建立時(shí)間tset和輸出電壓uo的上升或下降時(shí)間,即最大轉(zhuǎn)換時(shí)間為:TTRmax=tset+Vomax/SR上式中Vomax是輸出模擬電壓的最大值。

10.4.1GP32A/D轉(zhuǎn)換模塊寄存器2.A/D轉(zhuǎn)換數(shù)據(jù)寄存器ADR(Analog-to-DigitalDataRegister)

ADR存放A/D轉(zhuǎn)換的8位結(jié)果,每次A/D轉(zhuǎn)換結(jié)束更新該寄存器。編程從該寄存器讀取A/D轉(zhuǎn)換結(jié)果。該寄存器地址為:$003D,為只讀寄存器,復(fù)位時(shí)為$00。10.4.1GP32A/D轉(zhuǎn)換模塊寄存器3.A/D轉(zhuǎn)換輸入時(shí)鐘寄存器ADCLK(Analog-to-DigitalInputClockRegister)

該寄存器決定A/D轉(zhuǎn)換的時(shí)鐘頻率來源、分頻系數(shù)值,芯片內(nèi)的A/D轉(zhuǎn)換器要求ADC時(shí)鐘頻率為1MHz左右。ADCLK的地址是:$003E.定義為:

ADC時(shí)鐘分頻系數(shù)選擇位

ADC輸入時(shí)鐘源選擇位

未用

數(shù)據(jù)位D7D6D5D4D3D2D1D0定義ADIV2ADIV1ADIV0ADICLK----復(fù)位0001111110.4.2A/D轉(zhuǎn)換模塊的基本編程方法(1)A/D轉(zhuǎn)換初始化

對ADCLK寫入控制字節(jié),決定時(shí)鐘輸入源是內(nèi)部總線還是外部晶振,決定分頻系數(shù)等。

(2)啟動A/D轉(zhuǎn)換

對ADSCR寫入控制字節(jié),選取要轉(zhuǎn)換的通道、決定轉(zhuǎn)換結(jié)束數(shù)據(jù)獲取的方式、設(shè)置是連續(xù)轉(zhuǎn)換還是一次轉(zhuǎn)換等。

(3)獲A/D轉(zhuǎn)換結(jié)果

若是中斷方式,在A/D中斷程序中取得,若是查詢方式,通過ADSCR的第7位(COCO位)取得,當(dāng)COCO=1時(shí)可從ADR中取數(shù)。

10.5.1A/D轉(zhuǎn)換08C語言編程實(shí)例(1)A/D轉(zhuǎn)換有關(guān)C語言子函數(shù)(1)A/D轉(zhuǎn)換有關(guān)C語言子函數(shù)(1)A/D轉(zhuǎn)換有關(guān)C語言子函數(shù)10.5.2A/D轉(zhuǎn)換匯編語言編程實(shí)例(1)A/D轉(zhuǎn)換有關(guān)子程序(2)A/D轉(zhuǎn)換測試程序匯編主程序*10.6高位A/D轉(zhuǎn)換接口10.6.1A/D芯片TCL2543概述1.TLC2543的引腳說明圖10-8TLC2543的封裝管腳

(3)轉(zhuǎn)換過程

上電后,片選CS必須從高到低,才能開始一次工作周期,此時(shí)EOC為高,輸入數(shù)據(jù)寄存器被置0,輸出數(shù)據(jù)寄存器內(nèi)容是隨機(jī)的。開始時(shí),片選CS為高,I/OCLOCK、DATAINPUT被禁止,DATAOUT呈高阻態(tài),EOC為高。使CS變低,I/OCLOCK、DATAINPUT使能,DATAOUT脫離高阻態(tài)。12個(gè)時(shí)鐘信號從I/OCLOCK端依次加入,控制字從DATAINPUT一位一位地在時(shí)鐘信號的上升沿時(shí)被送入TLC2543(高位先送入),同時(shí)上一周期轉(zhuǎn)換的A/D數(shù)據(jù),即輸出數(shù)據(jù)寄存器中的數(shù)據(jù)從DATAOUT一位一位地移出。TLC2543收到第4個(gè)時(shí)鐘信號后,通道號也已收到,因此,此時(shí)TLC2543開始對選定通道的模擬量進(jìn)行采樣,并保持到第12個(gè)時(shí)鐘的下降沿。在第12個(gè)時(shí)鐘下降沿,EOC變低,開始對本次采樣的模擬量進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換時(shí)間約需10μs,轉(zhuǎn)換完成EOC變高,轉(zhuǎn)換的數(shù)據(jù)在輸出數(shù)據(jù)寄存器中,待下一個(gè)工作周期輸出。此后,可以進(jìn)行新的工作周期。3.TLC2543與MCU的接口方法

TLC2543與微處理器芯片的接口部分有五個(gè)引腳,分別是:時(shí)鐘輸入(I/OCLOCK)、串行控制字輸入(DATAINPUT)、片選輸入(CS)、A/D轉(zhuǎn)換串行數(shù)據(jù)輸出(DATAOUTPUT)、轉(zhuǎn)換結(jié)束電平輸出(EOC)。經(jīng)分析TLC2543的工作時(shí)序,可以通過軟件估計(jì)轉(zhuǎn)換結(jié)束,免去EOC接線。TLC2543與具有SPI或相同接口能力的MCU可以直接連接,對于沒有SPI接口的MCU可以通過軟件編程合成SPI操作。10.6.2SPI模塊與TLC2543的接口擴(kuò)展1.?dāng)U展電路設(shè)計(jì)MC68HC908GP32PTC0MISOMOSISPSCKPTC1PTC2TLC2543(第0片)AIN0CS∶DATAOUT∶DATAINPUT∶I/OCLOCKAIN10模擬量輸入∶∶∶TLC2543(第1片)AIN0CS∶DATAOUT∶DATAINPUT∶I/OCLOCKAIN10∶∶∶TLC2543(第2片)AIN0CS∶DATAOUT∶DATAINPUT∶I/OCLOCKAIN10∶∶∶圖10-7基于SPI的A/D轉(zhuǎn)換擴(kuò)展電路10.6.2SPI模塊與TLC2543的接口擴(kuò)展2.編程方法

基于上述電路的A/D采集子程序

3.應(yīng)用舉例

利用上述子程序?qū)崿F(xiàn)33路A/D數(shù)據(jù)的采集,并進(jìn)行平均值濾波。每一路取16次求平均。*10.7擴(kuò)展實(shí)現(xiàn)D/A轉(zhuǎn)換10.7.1D/A芯片TLV5608概述1.TLV5608的引腳說明

TLV5608有20根引腳,分布參見圖10-8。圖10-8TLV5608的封裝管腳

2.TLV5608的控制寄存器(1)控制寄存器0(CTRL0)PD-低功耗驅(qū)動:PD=0時(shí),正常模式;PD=1時(shí),低功耗。DO-數(shù)字輸出使能:DO=1時(shí),DOUT引腳輸出傳送的數(shù)據(jù)。IM-輸入模式:IM=0時(shí),直接輸出二進(jìn)制數(shù)據(jù);IM=1時(shí),兩次不足后輸出。D11……D5D4D3D2D1D0x……xPDDOxxIM2.TLV5608的控制寄存器(2)控制寄存器1(CTRL1)PXY=1時(shí),DACXY低功耗;SXY=1時(shí),DACXY快速傳輸;SXY=1時(shí),DACXY低速傳輸。D11…D8D7D6D5D4D3D2D1D0x…xPGHPEFPCDPABSGHSEFSCDSAB3.TLV5608工作原理

TLV5608的16位數(shù)據(jù)由兩部分組成:通道控制位(D15~D12)和數(shù)據(jù)位(D11~D0)。如下所示。通道控制位(D15~D12即A3~A0),決定數(shù)據(jù)輸出到哪個(gè)通道。當(dāng)A3~A0=0x0000~0x0111時(shí)對應(yīng)通道DACA~DACH;當(dāng)A3~A0=0x1000選擇寄存器CTRL0;當(dāng)A3~A0=0x1001選擇寄存器CTRL1,其他取值這里不作介紹。

在μCMode(MODE接高電平)下傳送數(shù)據(jù)時(shí),首先,F(xiàn)S引腳打高電平,把要傳送的數(shù)據(jù)發(fā)送到數(shù)據(jù)線上;然后,給FS引腳低電平,F(xiàn)S的下降沿開始,在SCLK的每個(gè)下降沿使數(shù)據(jù)一位接一位的移入內(nèi)部數(shù)據(jù)寄存器(從高位開始)。在傳送了16位數(shù)據(jù)后或者FS的上升沿到達(dá)后,移位寄存器的內(nèi)容送至DAC鎖存器。D15D14D13D12D11……D2D1D0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論