S3C2410的SPI接口與AD7888及Linux下嵌入式驅(qū)動概述_第1頁
S3C2410的SPI接口與AD7888及Linux下嵌入式驅(qū)動概述_第2頁
S3C2410的SPI接口與AD7888及Linux下嵌入式驅(qū)動概述_第3頁
S3C2410的SPI接口與AD7888及Linux下嵌入式驅(qū)動概述_第4頁
S3C2410的SPI接口與AD7888及Linux下嵌入式驅(qū)動概述_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SPI總線只需3~4根數(shù)據(jù)線和控制線即可擴展具有SPI接口的各種I/O器件,其硬件功能很強,實現(xiàn)軟件相當(dāng)簡單。串行A/D轉(zhuǎn)換器具有電路簡單、工作可靠的特點,而ARM芯片被設(shè)計用于手持設(shè)備以及普通的嵌人式應(yīng)用的集成系統(tǒng),將上述兩種實用的芯片和SPI總線技術(shù)相結(jié)合以實現(xiàn)數(shù)據(jù)采集十分有效。1AD7888的功能與使用AD7888是美國模擬器件公司推出的一款高速低功耗12位A/D轉(zhuǎn)換器,采用2.7~5.25V單電源供電,最大通過率可達(dá)到125kSPS。AD7888的輸入采樣/保持電路在500ns內(nèi)獲取一個信號,采用單端采樣模式,包含8個單端模擬輸入,模擬輸入電壓從0到VREF。AD7888有2.5V的片內(nèi)基準(zhǔn)電壓,也可以使用外部基準(zhǔn)電壓,范圍從1.2V到VDD。CMOS制造工藝確保了低功耗,正常工作時為2mW,掉電狀態(tài)下為3uW??梢赃x擇多種電源管理模式(包括數(shù)據(jù)轉(zhuǎn)換后自動處于掉電模式),與多種串行接口兼容(SPI/QSPI/MICOWIRE/DSP)。AD7888可廣泛應(yīng)用于電池供電系統(tǒng)(個人數(shù)字助理、醫(yī)療儀器、移動通信)、儀表控制系統(tǒng)和高速調(diào)制/解調(diào)器等領(lǐng)域。該器件采用16腳SOIC和TSSOP外形封裝,外形及引腳定義見圖1和表1。圖1AD7888的引腳圖AD7888的控制寄存器是8位只寫寄存器。數(shù)據(jù)在SCLK的上升沿從DIN引腳載人,同時獲取外部模擬量轉(zhuǎn)換的結(jié)果。每次數(shù)據(jù)的傳輸需要準(zhǔn)備16個連續(xù)時鐘信號。只有在片選信號下降之后的前8個時鐘脈沖的上升沿提供的信息裝入控制寄存器。圖2顯示了詳細(xì)的串行接口時序圖,串行時鐘提供了轉(zhuǎn)換時序,且控制AD7888轉(zhuǎn)換信息的輸入輸出。CS初始化數(shù)據(jù)傳送和轉(zhuǎn)換處理。在其下降沿之后的1.5個時鐘周期開始采樣輸入信號,這段時間表示為tACQ(獲取時間)。整個轉(zhuǎn)換過程還需要14.5個時鐘周期來完成,這段時間表示為tCONVERT(轉(zhuǎn)換時間)。從AD7888獲取數(shù)據(jù)的整個轉(zhuǎn)換過程需要16個時鐘周期。CS上升沿之后,總線返回高阻狀態(tài)。如果CS繼續(xù)保持低電平,則準(zhǔn)備新一輪的轉(zhuǎn)換。進(jìn)行采樣的輸入通道的選擇是提前寫入控制寄存器的,因此在轉(zhuǎn)換時,用戶必須提前寫入以備通道的轉(zhuǎn)換。也就是說,在進(jìn)行當(dāng)前轉(zhuǎn)換時,用戶就必須提前寫入通道的地址以備下次轉(zhuǎn)換使用。圖2串行接口時序圖2S3C2410的主要功能S3C2410是三星公司推出的采用RISC結(jié)構(gòu)的16/32位微處理器。它基于ARM920T內(nèi)核,采用五級流水線和哈佛結(jié)構(gòu),最高頻率可達(dá)203MHz,是高性能和低功耗的硬宏單元。ARM920T具有增強ARM體系的MMU(支持WinCE,EPOC32和Linux)、16kB的指令和數(shù)據(jù)高速緩存以及高速AMBA總線接口。S3C2410被設(shè)計用于手持設(shè)備以及普通的嵌入式應(yīng)用的集成系統(tǒng),為了降低整個系統(tǒng)的成本,S3C2410還包括下面的部分:LCD控制器(STN&TFT)、NANDFlash引導(dǎo)裝入程序、系統(tǒng)管理(片選邏輯和SDRAM控制器)、3通道UART,4通道DMA、4通道PWM時鐘、I/O口、RTC、8通道10位ADC及觸摸屏接口、IIC總線接口、IIS總線接口、USB主口和USB設(shè)備口、SD主口和多媒體卡接口、2通道SPI和2通道PLL。S3C2410有2個SPI口,可以實現(xiàn)串行數(shù)據(jù)的傳輸。每個SPI接口各有2個移位寄存器分別負(fù)責(zé)接收和發(fā)送數(shù)據(jù)。在傳送數(shù)據(jù)期間,發(fā)送數(shù)據(jù)和接收數(shù)據(jù)是同步進(jìn)行的,傳送的頻率可由相應(yīng)的控制寄存器設(shè)定。如果只想發(fā)送數(shù)據(jù),則接收數(shù)據(jù)為啞元;如果只想接收數(shù)據(jù)。則需發(fā)送啞元“0xff”。SPI接口共有4個引腳信號:串行時鐘SCK(SPICLK0,1)、主入從出MISO(SPICLK0,1)和主出從入MOSI(SPIMOSI0,1)數(shù)據(jù)線、低電平有效引腳/SS(nSSO,1)。S3C2410的SPI接口具有如下特點(1)兼容SPI協(xié)議(ver.2.11);(2)有分別用于發(fā)送和接收的8位移位寄存器;(3)有設(shè)定傳送頻率的8位寄存器;(4)有輪詢、中斷和DMA三種傳送模式。3接口與驅(qū)動根據(jù)S3C2410的SPI特點及AD7888的工作原理確定其接口如圖3所示。圖3

AD7888與S3C2410的連接圖為了實現(xiàn)S3C2410和AD7888在嵌入式Linux下的高速A/D轉(zhuǎn)換,還編寫了兩者接口的驅(qū)動程序,該驅(qū)動程序功能的實現(xiàn)主要由以下幾個函數(shù)完成。(1)Init_SPI()完成SPI的初始化

voidInit_SPI(void)

{

inti;

rSPPRE0=0x32;

rSPCON0=0x1e;

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

rSPTDAT0=0xff;

rGPECON|=0x0a800000;

rGPECON&=(~0x05400000);

rGPEUP|=0x3800;

//GPH5----->CS

rGPHCON|=0x0400;

rGPHCON&=(~0x0800);

rGPHUP&=(~0x20);

rGPHDAT|=0x20;

}(2)ad_wr()寫入要求A/D轉(zhuǎn)換的通道

staticssize_tad_wr(struCtfile*file,constchar*bur,size_tcount,loft_t*offset)

{

intret="0";

inti="0";

dbuf="kmalloc"(count*sizeof(unsignedchar),GFP_KERNEL);

copy_from_user(dbuf,bur,count);

for(i=0;i<COUNT;I++)

ADTXdata[i]=dbuf[i];

kfree(dbuf);

returnret;

}(3)ad_rd()得到A/D轉(zhuǎn)換的結(jié)果

statiessize_tad_rd(struetfile*file,char*bur,size_tcount,loftt*offset)

{

intret="0";

inti="0";

ad_convert();

ad_convert();

dbuf="kmalloc"(count*sizeof(unsignedchar),GFPKERNEL);

for(i=0;i<COUNT;I++)

dbuf[i]=ADRXdata[i];

copy_to_user(bur,dbuf,count);

kfree(dbuf);

returnret;

}(4)ad_convert()實際完成A/D轉(zhuǎn)換voidad_convert(void)

{

rGPHDAT&=(~0x20);

udelay(100000);

spi_tx_data(ADTXdata[0]);

ADRXdata[0]=rSPRDATO;

spi_tx_data(0xff);

ADRXdata[1]=rSPRDATO;

rGPHDAT|=0x20;

}(5)spi_tx_data()完成發(fā)送數(shù)據(jù)voidspi_tx_data(unsignedchardata)

{

spi_poll_done();

rSPTDAT0=data;

spi_poll_done();

}(6)spi_poll_done()輪詢SPI狀態(tài)staticvoidspi_poll_done(void)

{

while(!(rSPSTA0&0x01));

}說明:1)ADTXdata和ADRXdata是unsignedchar的全局?jǐn)?shù)組變量,分別負(fù)責(zé)存放AD7888的控制寄存器數(shù)據(jù)和A/D轉(zhuǎn)換的結(jié)果。2)ad_rd()中ad_convert()調(diào)用了2次,第1次調(diào)用用于通知要采某通道的數(shù)據(jù),第2次調(diào)用用于得

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論