999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux下nRF24L01設(shè)備驅(qū)動的設(shè)計

2012-09-12 03:22:46林麗蓉余紅英姜世杰洪永學(xué)
電子測試 2012年11期
關(guān)鍵詞:嵌入式系統(tǒng)設(shè)計

林麗蓉, 余紅英, 姜世杰, 洪永學(xué)

(中北大學(xué) 信息與通信工程學(xué)院 , 太原 030051)

0 引言

隨著測控技術(shù)的發(fā)展,nRF24L01越來越多的應(yīng)用于無線傳輸測控系統(tǒng)。近年來,隨著ARM和嵌入式Linux系統(tǒng)的迅速發(fā)展,在Linux系統(tǒng)下nRF24L01和ARM的通信也越來越多,但大都都是用ARM的GPIO端口來模擬SPI操作時序來與nRF24L01進行通信,而ARM本身帶有可靈活配置的SPI 接口這一功能卻被忽視,用ARM的SPI接口和nRF24L01的通信充分利用了這一優(yōu)勢。

1 硬件電路設(shè)計

NRF24L01通過SPI接口和外部控制器件進行數(shù)據(jù)交換,在Linux系統(tǒng)中SPI通信的實現(xiàn)可以通過ARM的SPI接口,也可以通過ARM的GPIO端口軟件模擬SPI時序的方式來實現(xiàn),在本次設(shè)計中選用的SPI接口。

設(shè)計中ARM芯片選擇三星公司生產(chǎn)的S3C2440,S3C2440包括兩個SPI接口,每個SPI接口分別有兩個8位的數(shù)據(jù)移位器用于發(fā)送和接收數(shù)據(jù)。在SPI的發(fā)送期間,數(shù)據(jù)同時發(fā)送(串行移出)和接收(串行移入)。S3C2440通過外接12 MHz的晶振,經(jīng)時鐘控制邏輯的PLL倍頻后將HCLK、HCLK和PCLK設(shè)置為200 MHz、100 MHz、50 MHz,其中PCLK將用作SPI的時鐘輸入,NRF24L01模塊與S3C2440的硬件連接電路如1圖所示。

2 字符設(shè)備驅(qū)動設(shè)計

在Linux系統(tǒng)中一個完善的設(shè)備驅(qū)動既要有硬件的支持,同時也要符合硬件設(shè)計的驅(qū)動模塊。結(jié)合nRF24L01芯片的特點以及Linux系統(tǒng)下設(shè)備類型的不同,可以把它認為是字符設(shè)備驅(qū)動的一種。本次設(shè)計中使用的是2.6.30的內(nèi)核,根據(jù) Linux 字符驅(qū)動的特定架構(gòu),本文設(shè)計的nRF24l01 芯片驅(qū)動由init、exit、 open、close、read 等函數(shù)結(jié)構(gòu)組成,以完成不同的功能。本次設(shè)計的是nRF24l01一次連續(xù)接收4字節(jié)數(shù)據(jù)接收驅(qū)動程序,其中open、close函數(shù)沒做什么工作,只是讓其返回個0值。

圖1 NRF24L01與S3C2440的連接電路圖

2.1 驅(qū)動的加載與卸載函數(shù)的實現(xiàn)

當(dāng)加載該模塊時,系統(tǒng)調(diào)用init函數(shù),init除了完成字符設(shè)備的注冊外,還對相關(guān)硬件進行初始化。圖2為nRF24L01的SPI寫時序圖,由圖可知上升沿輸入,下降沿輸出,往NRF24L01的MOSI寫入一個字節(jié)數(shù)據(jù)數(shù)據(jù)的同時nRF24L01的MISO引腳輸出相應(yīng)的返回值。初始化主要完成如下工作:

① 將 S3C2440 的 GPE11、GPE12、GPE13 配置為SPI接口,GPG2、GPF3、GPF4配置為輸出I/O口

② S3C2440的SPI寄存器映射內(nèi)存。

③ 根據(jù) nRF24L01的寫時序圖,配置S3C2440 的SPI的相關(guān)寄存器,將SPI設(shè)為主機查詢模式,傳輸格式為A格式(上升沿采樣,下降沿輸出),且高電平有效,傳輸波特率預(yù)定標(biāo)寄存器的值為0x18(波特率 = PCLK / 2 / (標(biāo)寄存器的值 + 1),小于4MHz);

④ 開SPI時鐘,否則SPI是不會工作的。

卸載模塊時調(diào)用exit函數(shù),exit函數(shù)完成內(nèi)存的釋放。

圖2 nRF24L01的SPI寫時序圖

2.2 相關(guān)子函數(shù)的設(shè)計

引腳配置成功后還需實現(xiàn)SPI的通信nRF24L01相關(guān)寄存器的初始化工作。涉及的子函數(shù)如下,函數(shù)中使用的延時函數(shù)都是2.6.30內(nèi)核自帶的,時間的延遲是根據(jù)nRF24L01的SPI時序圖的時間要求設(shè)置的。

當(dāng)往S3C2440的SPTDAT0寄存器寫入一個字節(jié)后, 如果ENSCK、SPCON0寄存器的MSTR被置為,S3C2440的MOSI引腳開始向nRF24L01發(fā)送一個字節(jié)數(shù)據(jù),并且SPRDAT0寄存器返回由nRF24L01的MISO引腳輸出的數(shù)據(jù),當(dāng)SPSTA0狀態(tài)寄存器的READY為1時,說明SPRDAR0的讀已準備,讀取SPRDAR0并返回。

此函數(shù)是向nRF24L01指定的寄存器地址 reg(命令字) 寫入一個字節(jié)數(shù)據(jù)value,從函數(shù)中可以看出,先發(fā)送命地址,然后再發(fā)送數(shù)據(jù)。

此函數(shù)是向nRF24L01指定的寄存器地址reg(命令字) 寫入多個字節(jié)的數(shù)據(jù),數(shù)據(jù)內(nèi)容是以pBuf 為首地址的數(shù)組, 數(shù)據(jù)長度由bytes定義。該函數(shù)主要用于發(fā)送地址和數(shù)據(jù)。

NRF24L01所有的配置都在配置寄存器中,且配置寄存器都是通過SPI口來進行配置。此函數(shù)是將nRF24L01設(shè)置為Enhance ShockBurstTM接收模式,其工作原理可查閱nRF24L01的技術(shù)資料。需注意的是接收地址必須和發(fā)送地址一樣,否則接收不到數(shù)據(jù)。CE拉高后必需讓高電平維持至少10 μs時間,否則將出現(xiàn)不能連續(xù)接收的情況。

2.3 讀操作read函數(shù)的實現(xiàn)

在讀操作函數(shù)中,先調(diào)用RX_Mode()子函數(shù)將nRF24L01設(shè)置為Enhance ShockBurstTM接收模式,判斷NRF24L01是否接收到數(shù)據(jù),即判斷NRF24L01狀態(tài)寄存器的第6位是否為1,當(dāng)為1說明已接收到數(shù)據(jù),可以讀取RX FIFO中的數(shù)值,最后將讀出的值通過函數(shù)copy_to_user()傳給用戶。

3 驅(qū)動程序的測試結(jié)果

要驗證編寫的驅(qū)動程序是否正確,首先需要有數(shù)據(jù)的發(fā)送(51單片機控制nRF24L01模塊連續(xù)發(fā)送4字節(jié)的數(shù)據(jù),分別是4,2,6,8),然后編寫一應(yīng)用程序來測試所接收的數(shù)據(jù)是否正確。該應(yīng)程序首先打開該字符設(shè)備,之后每隔1s調(diào)用驅(qū)動程序的read()函數(shù),并將驅(qū)動程序傳送給用戶程序值的在串口終端打印顯示出來,顯示結(jié)果如圖3所示。圖中spi read即為驅(qū)動程序返回給應(yīng)用程序的數(shù)據(jù),其余為編寫驅(qū)動程序時所加的調(diào)試信息的調(diào)試信息,從圖中可看出nRF24L01接收到的數(shù)據(jù)與另一nRF24L01發(fā)送的數(shù)據(jù)一致,說明實現(xiàn)了nRF24L01驅(qū)動程序設(shè)計。

圖3 測試結(jié)果

4 結(jié)束語

本文詳細介紹了新型無線收發(fā)芯片nRF24L01的特性和具體應(yīng)用,結(jié)合 ARM和Linux系統(tǒng)給出了具體的硬、軟件設(shè)計,通過ARM的SPI接口實現(xiàn)了NRF24L01的無線收發(fā),可供無線數(shù)據(jù)傳系統(tǒng)應(yīng)用。

[1]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.

[2]李亞鋒.ARM嵌入式Linux設(shè)備驅(qū)動實例開發(fā)[M].北京:中國電力出版社,2008.

[3]陳渝,李明,楊曄,等.源碼開放的嵌入式系統(tǒng)軟件分析與實踐[M].北京:北京航空航天大學(xué)出版社,2004.

[4]王學(xué)龍.嵌入式ARM系統(tǒng)設(shè)計與應(yīng)用[M].北京:清華大學(xué)出版社,2007.

[5]劉淼.嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.

[6]宋寶華.設(shè)備驅(qū)動開發(fā)詳解[M].2版.北京:人民郵電出版社,2010.

[7]劉靖,陳在平,李其林.基于nRF24L01的無線數(shù)字傳輸系統(tǒng)[J].天津理工大學(xué)學(xué)報,2007(3):38-40.

[8]李進,王太宏,張恩迪.嵌入式linux中nRF24L01驅(qū)動的設(shè)計與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2011(9):226-229.

猜你喜歡
嵌入式系統(tǒng)設(shè)計
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過海——仿生設(shè)計萌到家
搭建基于Qt的嵌入式開發(fā)平臺
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 亚洲女同一区二区| 东京热高清无码精品| 精品国产免费观看| h视频在线观看网站| 国产靠逼视频| 最近最新中文字幕免费的一页| 婷婷伊人久久| 亚洲欧美h| 欧美精品亚洲精品日韩专| 国产一区二区精品高清在线观看| 日本免费a视频| 亚洲国产欧美国产综合久久| 国产导航在线| 国产91熟女高潮一区二区| 国产亚洲欧美日韩在线观看一区二区| 日韩午夜福利在线观看| 91免费片| 99成人在线观看| 午夜激情福利视频| 成人小视频网| 免费A级毛片无码免费视频| 无码丝袜人妻| 最新亚洲人成无码网站欣赏网| 亚洲国模精品一区| 成年人国产视频| 国产精品真实对白精彩久久| 久久成人免费| 国产人人干| 亚洲伦理一区二区| 国产欧美日韩精品综合在线| 欧美一区二区自偷自拍视频| 秋霞一区二区三区| 国产亚洲成AⅤ人片在线观看| 天堂在线www网亚洲| 国产97视频在线观看| 波多野结衣在线se| 91国内视频在线观看| 国产爽妇精品| 97se亚洲综合在线| 国产粉嫩粉嫩的18在线播放91 | 亚洲综合色区在线播放2019| 亚洲免费福利视频| 中文字幕久久精品波多野结| 色综合久久88色综合天天提莫| 亚洲乱码在线播放| 国产精品国产主播在线观看| 亚洲日本www| 精品人妻系列无码专区久久| 在线观看热码亚洲av每日更新| 欧美在线黄| 无码一区二区波多野结衣播放搜索| 亚洲综合婷婷激情| 午夜视频在线观看区二区| 鲁鲁鲁爽爽爽在线视频观看| 国产成人无码综合亚洲日韩不卡| 波多野结衣视频一区二区| av一区二区人妻无码| 亚洲免费毛片| 亚洲永久精品ww47国产| 国产福利免费视频| 国产无遮挡猛进猛出免费软件| 久久这里只有精品国产99| 深夜福利视频一区二区| 国产 日韩 欧美 第二页| 99在线视频免费| 久久天天躁夜夜躁狠狠| 中文无码毛片又爽又刺激| 欧美三级自拍| 一级毛片中文字幕| 欧洲一区二区三区无码| 国产欧美日韩综合一区在线播放| 日本精品影院| 丰满少妇αⅴ无码区| 亚洲精品动漫| 毛片基地美国正在播放亚洲| 成人免费午夜视频| 欧美激情综合一区二区| 国产精品久久国产精麻豆99网站| 日韩精品免费一线在线观看| 丁香五月激情图片| 热久久这里是精品6免费观看| 国产AV毛片|