基于ARM嵌入式系統(tǒng)的SPI驅(qū)動程序設(shè)計
嵌入式系統(tǒng)已被廣泛應(yīng)用于國防電子、數(shù)字家庭、工業(yè)自動化、汽車電子等多種領(lǐng)域[1]。在嵌入式開發(fā)過程中,許多系統(tǒng)通常使用串口驅(qū)動來滿足通信要求,但在實際應(yīng)用中,使用SPI通信方式會更加高效和快捷[2]。SPI接口是一種高速、高效的串行接口技術(shù),因而SPI設(shè)備在數(shù)據(jù)通信應(yīng)用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系統(tǒng),設(shè)計了一種SPI驅(qū)動程序,該驅(qū)動程序功能可靠靈活、易于移植,可應(yīng)用于多種嵌入式平臺,實現(xiàn)ARM與設(shè)備之間的通信。
1、 硬件說明
1.1 S3C2440開發(fā)平臺
采用三星公司的SoC芯片S3C2440[4]作為核心處理器,主頻為400 MHz,并與64 MB SDRAM和64 MB NAND Flash共同組成核心部分。此外,該平臺也為用戶提供了大量的通信、顯示、調(diào)試以及I/O接口。為滿足設(shè)計需要,將Linux2.6.21版內(nèi)核移植于該平臺上。
1.2 SPI硬件模塊
S3C2440具有兩個SPI,每個SPI具有兩個8位移位寄存器用于獨立地發(fā)送和接收數(shù)據(jù),并兼容SPI ver.2.11協(xié)議,支持8位邏輯預(yù)分頻,系統(tǒng)可用polling、中斷、DMA三種方式判斷SPI發(fā)送及接收狀態(tài)。此SPI模塊共包含以下信號線[5]:
(1)SCK:數(shù)據(jù)同步時鐘信號,由主設(shè)備驅(qū)動,向從設(shè)備輸出,使得從設(shè)備按照同步時鐘的步調(diào)來接收或發(fā)送數(shù)據(jù)。
(2)nCS(由用戶指定GPIO):從設(shè)備選擇信號線(Slave Select,SS)由主設(shè)備發(fā)出,用來選擇激活某個從設(shè)備,低電平有效。
(3)MISO(SPIMISO0):主入從出信號線,表示該信號在主設(shè)備中作為輸入,在從設(shè)備中作為輸出。
(4)MOSI(SPIMOSI0):主出從入信號線,表示該信號在主設(shè)備中作為輸出,在從設(shè)備中作為輸入。
(5)/SS(nSS):多主錯誤檢測。
2 、Linux下的SPI設(shè)備驅(qū)動程序設(shè)計
Linux設(shè)備驅(qū)動在Linux內(nèi)核中扮演著重要的角色。它可使某些特定硬件響應(yīng)一個定義良好的內(nèi)部編程接口,這些接口完全隱藏了設(shè)備工作的細(xì)節(jié)。用戶操作可通過一組標(biāo)準(zhǔn)化的調(diào)用來執(zhí)行,這些調(diào)用在形式上完全獨立于特定的驅(qū)動程序,而將這些調(diào)用映射到實際硬件設(shè)備的特有操作上,則是驅(qū)動程序的任務(wù)[6]。本設(shè)計的SPI驅(qū)動主要定義了初始化、讀和寫三個操作。其中初始化操作用于驅(qū)動程序第一次加載到內(nèi)核運(yùn)行時,對一些內(nèi)核機(jī)制及存儲器進(jìn)行初始化。寫操作負(fù)責(zé)將用戶數(shù)據(jù)拷貝至內(nèi)核緩沖區(qū),控制本地主SPI發(fā)送數(shù)據(jù)至從SPI寄存器中。讀操作將按照用戶要求讀取的字節(jié)數(shù),連續(xù)讀取本地主SPI中接收到的數(shù)據(jù),并將其拷貝至用戶空間。驅(qū)動程序?qū)⒉捎弥袛嗟姆绞酵ㄖ到y(tǒng)SPI數(shù)據(jù)是否發(fā)送完畢,即當(dāng)SPI硬件模塊每發(fā)送完畢一個數(shù)據(jù),都會通過中斷線向系統(tǒng)發(fā)起中斷,系統(tǒng)響應(yīng)中斷后,驅(qū)動程序?qū)⒄{(diào)用中斷處理例程。
2.1 SPI初始化
(1)申請中斷。此驅(qū)動設(shè)計通過中斷判斷數(shù)據(jù)是否發(fā)送完畢,所以需要申請SPI0相關(guān)的中斷,并注冊相應(yīng)的中斷處理函數(shù)。此驅(qū)動程序的中斷處理函數(shù)聲明如下:
static irqreturn_t s3c2440_isr_spi(int irq,void*dev_id,struct pt_regs*reg)
利用request_irq向內(nèi)核申請中斷號并注冊中斷處理函數(shù):
request_irq(IRQ_SPI0,s3c2440_isr_spi,SA_INTERRUPT,DEVICE_NAME,s3c2440_isr_spi);
(2)虛擬地址映射。驅(qū)動程序可以直接通過訪問內(nèi)核中的虛擬地址來訪問設(shè)備物理地址所對應(yīng)的寄存器,對其進(jìn)行操作。SPI設(shè)備的地址映射過程如下:
request_mem_region(S3C2440_PA_SPI,0x30,"s3c2440-spi");
base_addr = ioremap(S3C2440_PA_SPI,0x30);
其中S3C2440_PA_SPI為SPI的物理地址(在/asm-arch/arch-s3c2440/map.h中定義),從S3C2440_PA_SPI開始分配0x30大小的內(nèi)存區(qū)域,此后將其移至內(nèi)核空間。(責(zé)任編輯:admin)
- “掃一掃”關(guān)注融合網(wǎng)微信號
免責(zé)聲明:我方僅為合法的第三方企業(yè)注冊用戶所發(fā)布的內(nèi)容提供存儲空間,融合網(wǎng)不對其發(fā)布的內(nèi)容提供任何形式的保證:不保證內(nèi)容滿足您的要求,不保證融合網(wǎng)的服務(wù)不會中斷。因網(wǎng)絡(luò)狀況、通訊線路、第三方網(wǎng)站或管理部門的要求等任何原因而導(dǎo)致您不能正常使用融合網(wǎng),融合網(wǎng)不承擔(dān)任何法律責(zé)任。
第三方企業(yè)注冊用戶在融合網(wǎng)發(fā)布的內(nèi)容(包含但不限于融合網(wǎng)目前各產(chǎn)品功能里的內(nèi)容)僅表明其第三方企業(yè)注冊用戶的立場和觀點,并不代表融合網(wǎng)的立場或觀點。相關(guān)各方及作者發(fā)布此信息的目的在于傳播、分享更多信息,并不代表本網(wǎng)站的觀點和立場,更與本站立場無關(guān)。相關(guān)各方及作者在我方平臺上發(fā)表、發(fā)布的所有資料、言論等僅代表其作者個人觀點,與本網(wǎng)站立場無關(guān),不對您構(gòu)成任何投資、交易等方面的建議。用戶應(yīng)基于自己的獨立判斷,自行決定并承擔(dān)相應(yīng)風(fēng)險。
根據(jù)相關(guān)協(xié)議內(nèi)容,第三方企業(yè)注冊用戶已知悉自身作為內(nèi)容的發(fā)布者,需自行對所發(fā)表內(nèi)容(如,字體、圖片、文章內(nèi)容等)負(fù)責(zé),因所發(fā)表內(nèi)容(如,字體、圖片、文章內(nèi)容等)等所引發(fā)的一切糾紛均由該內(nèi)容的發(fā)布者(即,第三方企業(yè)注冊用戶)承擔(dān)全部法律及連帶責(zé)任。融合網(wǎng)不承擔(dān)任何法律及連帶責(zé)任。
第三方企業(yè)注冊用戶在融合網(wǎng)相關(guān)欄目上所發(fā)布的涉嫌侵犯他人知識產(chǎn)權(quán)或其他合法權(quán)益的內(nèi)容(如,字體、圖片、文章內(nèi)容等),經(jīng)相關(guān)版權(quán)方、權(quán)利方等提供初步證據(jù),融合網(wǎng)有權(quán)先行予以刪除,并保留移交司法機(jī)關(guān)查處的權(quán)利。參照相應(yīng)司法機(jī)關(guān)的查處結(jié)果,融合網(wǎng)對于第三方企業(yè)用戶所發(fā)布內(nèi)容的處置具有最終決定權(quán)。
個人或單位如認(rèn)為第三方企業(yè)注冊用戶在融合網(wǎng)上發(fā)布的內(nèi)容(如,字體、圖片、文章內(nèi)容等)存在侵犯自身合法權(quán)益的,應(yīng)準(zhǔn)備好具有法律效應(yīng)的證明材料,及時與融合網(wǎng)取得聯(lián)系,以便融合網(wǎng)及時協(xié)調(diào)第三方企業(yè)注冊用戶并迅速做出相應(yīng)處理工作。
融合網(wǎng)聯(lián)系方式:(一)、電話:(010)57722280;(二)、電子郵箱:2029555353@qq.com dwrh@dwrh.net
對免責(zé)聲明的解釋、修改及更新權(quán)均屬于融合網(wǎng)所有。
相關(guān)新聞>>
您可能感興趣的文章
新聞點評
- MediaTek開車用技術(shù)研討會以整合性解決方案賦能智能聯(lián)網(wǎng)汽車產(chǎn)業(yè)
- 8K智能電視芯片全球首發(fā),聯(lián)發(fā)科技S900以AI推動智能電視革新
- 聯(lián)發(fā)科技智能手機(jī)芯片Helio P65發(fā)布,手游與拍攝體驗雙升級
- 三只松鼠、卓勝微電子兩公司2019年5月16日(首發(fā))獲通過
- 聯(lián)發(fā)科技以AI賦能智能電視,聯(lián)動智能家居體系
- 兩家上市公司盯上北京矽成,集成電路產(chǎn)業(yè)收購硝煙再起
- 晶泰科2018年完成進(jìn)出口總額1.22億美元
- 華為昇騰310 AI芯片何以獲頒第五屆世界互聯(lián)網(wǎng)領(lǐng)先科技成果獎
- AI芯片并非信息行業(yè)主食 補(bǔ)齊缺芯短板勿舍本逐末
- 海外對華芯片技術(shù)輸出嚴(yán)防死守,5G將成中國芯片業(yè)趕超時間窗