www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 串行外圍設(shè)備接口SPI(serial peripheral interface)總線技術(shù)是Motorola公司推出的一種同步串行接口,它允許CPU與TTL移位寄存器、A/D或D/A轉(zhuǎn)換器、實時時鐘 (RTO)、存儲器以及LCD和LED顯示驅(qū)動器等

串行外圍設(shè)備接口SPI(serial peripheral interface)總線技術(shù)是Motorola公司推出的一種同步串行接口,它允許CPU與TTL移位寄存器、A/D或D/A轉(zhuǎn)換器、實時時鐘 (RTO)、存儲器以及LCD和LED顯示驅(qū)動器等外圍接口器件以串行方式進(jìn)行通訊。

SPI總線只需3~4根數(shù)據(jù)線和控制線即可擴(kuò)展具有SPI接口的各種I/O器件,其硬件功能很強(qiáng),實現(xiàn)軟件相當(dāng)簡單。串行A/D轉(zhuǎn)換器具有電路簡單、工作可靠的特點,而ARM芯片被設(shè)計用于手持設(shè)備以及普通的嵌人式應(yīng)用的集成系統(tǒng),將上述兩種實用的芯片和SPI總線技術(shù)相結(jié)合以實現(xiàn)數(shù)據(jù)采集十分有效。

1 AD7888的功能與使用

AD7888是美國模擬器件公司推出的一款高速低功耗12位A/D轉(zhuǎn)換器,采用2.7~5.25 V單電源供電,最大通過率可達(dá)到125 kSPS。AD7888的輸入采樣/保持電路在500 ns內(nèi)獲取一個信號,采用單端采樣模式,包含8個單端模擬輸入,模擬輸入電壓從0到VREF。AD7888有2.5 V的片內(nèi)基準(zhǔn)電壓,也可以使用外部基準(zhǔn)電壓,范圍從1.2 V到VDD。CMOS制造工藝確保了低功耗,正常工作時為2 mW,掉電狀態(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。

圖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 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所示。


AD7888的控制寄存器是8位只寫寄存器。數(shù)據(jù)在SCLK的上升沿從DIN引腳載人,同時獲取外部模擬量轉(zhuǎn)換的結(jié)果。每次數(shù)據(jù)的傳輸需要準(zhǔn)備16個連續(xù)時鐘信號。只有在片選信號下降之后的前8個時鐘脈沖的上升沿提供的信息裝入控制寄存器。

為了實現(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)換的通道

statICssize_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)

statICvoid 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)域。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

德國康佳特亮相上海工博會,展示多款應(yīng)用就緒的嵌入式解決方案平臺

關(guān)鍵字: 嵌入式 傳感器 處理器

雙方攜手為客戶打造以存儲為核心的模塊化基礎(chǔ)架構(gòu),支持先進(jìn)的多裸片架構(gòu)設(shè)計

關(guān)鍵字: 非易失性存儲 半導(dǎo)體 嵌入式

本屆年會將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設(shè)計工程師推出25門技術(shù)課程

關(guān)鍵字: 嵌入式 MCU 模擬

上海2025年9月5日 /美通社/ -- 由紐倫堡會展(上海)有限公司舉辦的上海國際嵌入式會議將于 2025 年 10 月 16-17 日在上海世博展覽館舉辦。 此次會議將由三個版塊組成:嵌入式技術(shù)會議、汽...

關(guān)鍵字: 嵌入式 CE CHINA EMBEDDED

從外部看,電子系統(tǒng)仿佛一個統(tǒng)一的學(xué)科或設(shè)備,各組成部分協(xié)同工作,渾然一體。然而揭開表象,其內(nèi)在卻是另一番景象:一個碎片化、多層次的世界——其中每一層都獨立且復(fù)雜,衍生出各自特有的工具、專家、工作流程,甚至哲學(xué)體系。

關(guān)鍵字: 嵌入式 電子系統(tǒng) 半導(dǎo)體

8位單片機(jī)在嵌入式設(shè)計領(lǐng)域已經(jīng)成為半個多世紀(jì)以來的主流選擇。盡管嵌入式系統(tǒng)市場日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

深圳2025年8月28日 /美通社/ -- 8月26日,2025 ELEXCON深圳國際電子展盛大啟幕。本屆大會以"All for AI"為主題,深圳市德...

關(guān)鍵字: AI 工業(yè)級 SSD 嵌入式

深圳2025年8月26日 /美通社/ -- 8月26日,由博聞創(chuàng)意會展主辦的 第22屆深圳國際電子展暨嵌入式展(elexcon2025)在深圳(福田)會展中心隆重開幕。 作為中國電子與嵌入式技術(shù)領(lǐng)域的專業(yè)大展,本屆展會...

關(guān)鍵字: 嵌入式 電子 高通 AI

模塊化設(shè)計作為一種將系統(tǒng)拆分為獨立、可復(fù)用組件的方法,能夠在低代碼平臺中實現(xiàn)功能的靈活組合,并最大限度地提升系統(tǒng)性能。本文將探討如何通過模塊化設(shè)計,使得低代碼平臺既能快速適應(yīng)變化,又能保持高效穩(wěn)定的運行。

關(guān)鍵字: 模塊化設(shè)計 嵌入式

CPU親和度通過限制進(jìn)程或線程可以運行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關(guān)鍵字: Linux 嵌入式
關(guān)閉