時間:2007-12-14 10:54:00來源:dujing


圖2串行接口時序圖[/align]
2 S3C2410的主要功能
S3C2410是三星公司推出的采用RISC結(jié)構(gòu)的16/32位微處理器。它基于ARM920T內(nèi)核,采用五級流水線和哈佛結(jié)構(gòu),最高頻率可達(dá)203 MHz,是高性能和低功耗的硬宏單元。ARM920T具有增強(qiáng)ARM體系的MMU(支持WinCE,EPOC 32和Linux)、16kB的指令和數(shù)據(jù)高速緩存以及高速AMBA總線接口。
S3C2410被設(shè)計用于手持設(shè)備以及普通的嵌入式應(yīng)用的集成系統(tǒng),為了降低整個系統(tǒng)的成本,S3C2410還包括下面的部分:LCD控制器(STN&TFT)、NAND Flash引導(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所示。
[align=center][IMG=AD7888與S3C2410的連接圖]/uploadpic/THESIS/2007/12/2007121410593668804F.jpg[/IMG]
圖3 AD7888與S3C2410的連接圖[/align]
為了實現(xiàn)S3C2410和AD7888在嵌入式Linux下的高速A/D轉(zhuǎn)換,還編寫了兩者接口的驅(qū)動程序,該驅(qū)動程序功能的實現(xiàn)主要由以下幾個函數(shù)完成。
(1)Init_SPI()完成SPI的初始化
void Init_SPI(void)
{
int i;
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)換的通道
static ssize_t ad_wr(struCt file *file,const char *bur,size_t count,loft_t *offset)
{
int ret="0";
int i="0";
dbuf="kmalloc"(count *sizeof(unsigned char),GFP_KERNEL);
copy_from_user(dbuf,bur,count);
for(i=0;i ADTXdata[i]=dbuf[i];
kfree(dbuf);
return ret;
}
(3)ad_rd()得到A/D轉(zhuǎn)換的結(jié)果
statie ssize_t ad_rd(struet file *file,char *bur,size_t count,loft t *offset)
{
int ret="0";
int i="0";
ad_convert();
ad_convert();
dbuf="kmalloc"(count *sizeof(unsigned char),GFP KERNEL);
for(i=0;i dbuf[i]=ADRXdata[i];
copy_to_user(bur,dbuf,count);
kfree(dbuf);
return ret;
}
(4)ad_convert()實際完成A/D轉(zhuǎn)換
void ad_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ù)
void spi_tx_data(unsigned char data)
{
spi_poll_done();
rSPTDAT0=data;
spi_poll_done();
}
(6)spi_poll_done()輪詢SPI狀態(tài)
static void spi_poll_done(void)
{
while(!(rSPSTA0&0x01));
}
說明:1)ADTXdata和ADRXdata是unsigned char的全局?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)用用于得到該通道A/D轉(zhuǎn)換的結(jié)果。這樣雖然犧牲了一些轉(zhuǎn)換的速度,但可使應(yīng)用程序編程更加直觀。
4 結(jié)論
應(yīng)用帶SPI接口的串行A/D轉(zhuǎn)換器占用較少的微處理器I/O資源,硬件聯(lián)接簡單、軟件易于實現(xiàn),程序運行效率高。帶有SPI接口的串行A/D轉(zhuǎn)換器和ARM微處理器的結(jié)合可廣泛應(yīng)用于實現(xiàn)數(shù)據(jù)采集功能的掌上設(shè)備及其他嵌入式的系統(tǒng),如:醫(yī)療儀器、通信設(shè)備、抄表設(shè)備等領(lǐng)域。
標(biāo)簽:
傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(m.y3602.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價比王者」NK290M普及型數(shù)控...
2025-10-09
2025-09-23
2025-09-23