日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

基于S3C2440的nRF2401驅(qū)動(dòng)設(shè)計(jì)

出處:牧石.馬 發(fā)布于:2012-08-02 10:30:10

  通信頻率為2.4GHz 的ISM 頻段,由于其免許可證、波長較短、天線的尺寸小、外圍器件少等優(yōu)點(diǎn),適合于近距離無線通信。將ARM9 與nRF24E1 結(jié)合, 可以縮小設(shè)備體積, 降低系統(tǒng)功耗, 減少設(shè)備間連線困難等問題。針對(duì)ARM9 芯片S3C2440 的特點(diǎn)設(shè)計(jì)了對(duì)nFR24E1 的接口電路和驅(qū)動(dòng)程序。對(duì)于在狹小空間中,有設(shè)備之間的數(shù)據(jù)共享要求的系統(tǒng)是一種有效解決途徑。

  2.4GHz 無線設(shè)備的使用,免去了系統(tǒng)之間連線的煩惱。一方面可以降低設(shè)備的成本,另一方面就是可以簡(jiǎn)化設(shè)備的安裝。

  特別是對(duì)于一些運(yùn)動(dòng)部件的實(shí)時(shí)測(cè)量,借助兩個(gè)無線傳輸設(shè)備,可以將一部分測(cè)量設(shè)備做到運(yùn)動(dòng)部件上,另一部分安裝在附近,就可以將運(yùn)動(dòng)部件的實(shí)時(shí)數(shù)據(jù)傳輸出來, 供設(shè)計(jì)人員對(duì)設(shè)備實(shí)時(shí)工作的性能進(jìn)行詳細(xì)分析和改進(jìn)。本文著重介紹nRF24E1 與S3C2440 的硬件連接以及在Linux 操作系統(tǒng)下的驅(qū)動(dòng)設(shè)計(jì)。無線設(shè)備采用基于NF2401AG 芯片。

  1 硬件結(jié)構(gòu)

  nFR2401A 是Nordic 公司的一款單片2.4GHz 無線傳輸芯片。該芯片由一個(gè)完全集成的頻率合成器,一個(gè)功率放大器,晶體振蕩器和調(diào)制器組成, 輸出功率和頻率可以通過3 線接口編程設(shè)置。

  1.1 nFR2401 的通信協(xié)議與工作模式

  nFR2401 之間的無線收發(fā)是以數(shù)據(jù)包的形式發(fā)送和接收的。其數(shù)據(jù)包格式如下:

數(shù)據(jù)包格式

  其中,前緩沖是硬件自動(dòng)添加,地址由用戶設(shè)定。為32~40位;循環(huán)冗余校驗(yàn)由內(nèi)置CRC 糾檢錯(cuò)硬件電路自動(dòng)添加??稍O(shè)為0、8 或6 位。所有的數(shù)據(jù)總共長度為256 位。

  nFR2401 的工作模式有配置模式、工作模式、待機(jī)模式、掉電模式四種。模式由主控芯片通過軟件設(shè)置。芯片上電后,S3C2440 通過接口將配置數(shù)據(jù)送入芯片,設(shè)置收發(fā)模式、收發(fā)頻率、接收地址、發(fā)射功率、CRC 校驗(yàn)和的長度、有效數(shù)據(jù)的長度等。傳輸中,只有地址,校驗(yàn)和匹配的數(shù)據(jù)包才能被進(jìn)一步處理, 產(chǎn)生中斷信號(hào)。這時(shí),S3C2440 讀取數(shù)據(jù)。在同一時(shí)刻nFR2401 只能處于接收或發(fā)送模式中的一種, 一般以接收模式為待機(jī)狀態(tài)。

  1.2 nFR2401 與S3C2440 的接口設(shè)計(jì)

  nFR2401 與S3C2440 的接口設(shè)計(jì)如圖1 所示。通過將S3C2440 芯片的GPD 口與nFR2401 連接。S3C2440 的GPD口為多功能口,主要是LCD 屏的接口。由于系統(tǒng)沒有顯示部分,所以將該口用作了nFR2401 的接口。系統(tǒng)工作時(shí),無線通信一直處于工作狀態(tài),所以將PWR_UP 引腳直接與VDD 相連。系統(tǒng)采用通道1,S3C2440 對(duì)nFR2401 采用查詢模式, 接收到上位機(jī)工作命令后, 只要nFR2401 的DR1 指示接收到數(shù)據(jù),S3C2440 就通過CS、CE、DATA、CLK 讀取數(shù)據(jù),并以文件的形式進(jìn)行存儲(chǔ),然后通過網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送給上位機(jī)。

圖1 系統(tǒng)框圖。

圖1 系統(tǒng)框圖。

  2 軟件設(shè)計(jì)

  系統(tǒng)以Linux 作為操作系統(tǒng)。以S3C2440 為平臺(tái)使用Linux 操作系統(tǒng),主要有U-boot 的移植,Linux 的移值,文件系統(tǒng)的編譯燒寫等幾個(gè)步驟。U-boot 用于基本硬件的初始化和檢測(cè)、加載引導(dǎo)內(nèi)核和文件系統(tǒng)的啟動(dòng)。U-boot-1.1.1 后,對(duì)相關(guān)文件進(jìn)行添加修改。配置其運(yùn)行環(huán)境在S3C2440 板上, 然后編譯得到u-boot.bin 和內(nèi)核映像封裝工具tools /mkimage. 引導(dǎo)程序boot.bin、U-boot 映像u-boot.ing 及其gzip 壓縮文件u-boot.gz 三個(gè)文件構(gòu)成的完整的啟動(dòng)加載程序。內(nèi)核的設(shè)置主要是裁減和添加, 裁減不用的驅(qū)動(dòng)程序和外設(shè),添加需要的驅(qū)動(dòng)。

  在Linux 操作系統(tǒng)下編程,分為用戶層和驅(qū)動(dòng)層。用戶層即為應(yīng)用程序。應(yīng)用程序負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和發(fā)送;驅(qū)動(dòng)程序負(fù)責(zé)對(duì)nFR2401 的連接引腳進(jìn)行操作。應(yīng)用程序與驅(qū)動(dòng)程序通過庫和內(nèi)核相連解決數(shù)據(jù)的傳遞和共享。

  2.1 nFR2401 驅(qū)動(dòng)軟件設(shè)計(jì)

  設(shè)備驅(qū)動(dòng)程序即設(shè)備管理, 其目標(biāo)是對(duì)所有外接設(shè)備進(jìn)行良好的讀、寫、控制等操作。對(duì)硬件的使用留給應(yīng)用程序。所以對(duì)設(shè)備進(jìn)行操作的系統(tǒng)調(diào)用和對(duì)文件的操作類似,主要包括open()、close()、read()、write()、ioctl()等。應(yīng)用程序發(fā)出系統(tǒng)調(diào)用指令以后,會(huì)從用戶態(tài)轉(zhuǎn)換到內(nèi)核態(tài),通過內(nèi)核將open()這樣的系統(tǒng)調(diào)用轉(zhuǎn)換成對(duì)物理設(shè)備的操作。

  驅(qū)動(dòng)程序任務(wù)包括自動(dòng)配置和初始化子程序和服務(wù)于I /O請(qǐng)求的子程序。針對(duì)不同的設(shè)備,驅(qū)動(dòng)程序分為:字符設(shè)備驅(qū)動(dòng),塊設(shè)備驅(qū)動(dòng),網(wǎng)絡(luò)接口驅(qū)動(dòng)。

  字符設(shè)備以字節(jié)流訪問設(shè)備,以字節(jié)為單位對(duì)其讀寫。字符設(shè)備的驅(qū)動(dòng)程序?qū)崿F(xiàn)了系統(tǒng)調(diào)運(yùn)。應(yīng)用程序以設(shè)備文件訪問字符設(shè)備。通過register_chrdev()或unregister_chrdev()對(duì)字符設(shè)備進(jìn)行注冊(cè)和注銷。中斷申請(qǐng)用request_irq()函數(shù),釋放中斷用free_irq () 驅(qū)動(dòng)程序中包含的結(jié)構(gòu)和函數(shù)有:nf24_table 和nf24_cfg_table,定義的結(jié)構(gòu)主要應(yīng)用于對(duì)引腳的定義和功能的設(shè)置。函數(shù)有:

  static int tq2440_nf24_open(struct inode *inode,struct file *file)

  static int tq2440_nf24_read (struct file *filp,char __user *buf,

  size_t len, loff_t *offp)

  static int tq2440_nf24_ioctl( struct inode *inode, struct file

  *file, unsigned int cmd, unsigned long arg)

  module_init(tq2440_nf24_init);

  module_exit(tq2440_nf24_exit);

  MODULE_AUTHOR(″cgq″);

  MODULE_LICENSE(″GPL″);

  tq2440_nf24_open 函數(shù)用于打開設(shè)備, 設(shè)置功能引腳,將指定的引腳設(shè)置成是讀狀態(tài)還是寫狀態(tài)。由于S3C2440 與S3C2410 相差甚微,所以用一些S3C2410 的子函數(shù),減少程序開發(fā)的工作量。如:s3c2410_gpio_cfgpin (nf24_table [i],nf24_cfg_table[i]),nf24_table[],nf24_cfg_table[]是兩個(gè)靜態(tài)數(shù)組, nf24_table[]指定要設(shè)置的引腳,nf24_cfg_table[]指定設(shè)置到哪種工作模式。引腳的的定義在頭文件里,其位置在內(nèi)核文件系統(tǒng)下,路徑為asm / arch / regs-gpio.h.

  tq2440_nf24_read,tq2440_nf24_ioctl 函數(shù)執(zhí)行相應(yīng)的讀寫操作。通過子函數(shù):s3c2410_gpio_cfgpin (nf24_table[0],nf24_cfg_table[5]);

  dr=s3c2410_gpio_getpin(nf24_table[0]);可以將采集到的管腳狀態(tài)通過操作系統(tǒng)內(nèi)核送到應(yīng)用程序, 由應(yīng)用程序?qū)⑽惶幚沓勺止?jié)。

  module_init(),module_exit()用于模塊的加載和退出。

  MODULE_AUTHOR(″cgq″),MODULE_LICENSE(″GPL″ )函數(shù)說明了函數(shù)的作者和遵循的協(xié)議。

  2.2 nFR2401 驅(qū)動(dòng)軟件設(shè)備號(hào)

  字符設(shè)備有一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)。主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序, 內(nèi)核利用主設(shè)備號(hào)將設(shè)備與相應(yīng)的驅(qū)動(dòng)程序?qū)?yīng)起來。次設(shè)備號(hào)只由設(shè)備驅(qū)動(dòng)程序使用,區(qū)分同類型設(shè)備。向系統(tǒng)增加一個(gè)驅(qū)動(dòng)程序意味著要給它一個(gè)主設(shè)備號(hào)。驅(qū)動(dòng)編寫時(shí),先不設(shè)置主設(shè)備號(hào)。待編寫完成后,加載驅(qū)動(dòng)程序后,查看/ proc / devices 文件,查找系統(tǒng)分配給設(shè)備的主設(shè)備號(hào)。然后修改驅(qū)動(dòng)程序中的設(shè)備號(hào),重新編譯即可。例如在實(shí)驗(yàn)中,系統(tǒng)對(duì)nFR2401 的主設(shè)備號(hào)分配為:

  #define DEVICE_NAME ″nf24″ / *″TQ2440_nf24″*/

  #define NF24_MAJOR 253 / *nf24_MAJOR 198*/

  2.3 nFR2401 應(yīng)用軟件設(shè)計(jì)

  應(yīng)用軟件主要完成數(shù)據(jù)的發(fā)送、接收和存儲(chǔ)。為了使相關(guān)程序調(diào)用方便。將數(shù)據(jù)的發(fā)送、接收和存儲(chǔ)按照模塊化編寫。圖2 是程序的主體流程圖。

圖2 發(fā)送、接收流程圖

圖2 發(fā)送、接收流程圖

  系統(tǒng)上電后,當(dāng)程序執(zhí)行到調(diào)用該設(shè)備時(shí),打開相關(guān)設(shè)備文件時(shí),首先通過open()函數(shù)打開設(shè)備,如果沒有正常打開,則顯示錯(cuò)誤信息, 進(jìn)行相應(yīng)處理。

  如果打開正常。首先對(duì)nFR2401 進(jìn)行配置編程。

  將CS、CE 設(shè)為配置模式。通過CLK 和DATA 將通道的數(shù)據(jù)長度、通道的地址、地址的位數(shù)、CRC 校驗(yàn)和、使能、通信模式、速率等配置數(shù)據(jù)由高位到低位移入芯片。配置字一共120bit.將CS、CE 設(shè)為工作模式,nFR2401 將刷新內(nèi)部配置并使新配置立即生效。隨后就按照配置的工作方式工作。

  在數(shù)據(jù)采集實(shí)驗(yàn)系統(tǒng)中, 隨運(yùn)動(dòng)部件的RF 芯片剛開始處于接收命令, 接收到工作指令時(shí), 開始將采集到的數(shù)據(jù)發(fā)送出去。連接S3C2440 的設(shè)備發(fā)送完工作指令后,就處于接收狀態(tài)。

  這樣就避免了使nRF2401 處于頻繁的工作模式變動(dòng)之中,節(jié)省了時(shí)間,加快了數(shù)據(jù)傳輸?shù)乃俣?。減少了丟數(shù)的概率。

  所有相關(guān)程序編譯完成后, 將驅(qū)動(dòng)程序放入內(nèi)核文件系統(tǒng)的/ driver / char 文件夾下, 編譯后生成的驅(qū)動(dòng)執(zhí)行文件入文件系統(tǒng)的/ lib 文件夾下,應(yīng)用程序放在/ opt 下,修改系統(tǒng)啟動(dòng)文件順序即/ etc / init.d / rcS 文件并添加"insmod / lib / nf24.ko" 系統(tǒng)啟動(dòng)時(shí)即可加載驅(qū)動(dòng)。然后重新編譯,移植內(nèi)核,文件系統(tǒng)。燒寫、重啟后,即可按原先的設(shè)計(jì)工作。

  3 結(jié)束語

  S3C2440 與nRF2401 的結(jié)合,是對(duì)Linux 外設(shè)的擴(kuò)展。系統(tǒng)的集成度高,傳輸速率高。芯片自身的糾錯(cuò)機(jī)制能確保信號(hào)能夠準(zhǔn)確傳輸。多頻點(diǎn)的特性,可以使得在狹小的空間里布置多個(gè)同樣類型的芯片進(jìn)行互不干擾的工作。

參考文獻(xiàn):

[1]. nRF24E1  datasheet http://www.hbjingang.com/datasheet/nRF24E1+_1085635.html.
[2]. S3C2440  datasheet http://www.hbjingang.com/datasheet/S3C2440+_589562.html.
[3]. nRF2401  datasheet http://www.hbjingang.com/datasheet/nRF2401+_521030.html.

關(guān)鍵詞:基于S3C2440的nRF2401驅(qū)動(dòng)設(shè)計(jì)

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!