<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于S3C2440的nRF2401驅動(dòng)設計

基于S3C2440的nRF2401驅動(dòng)設計

作者: 時(shí)間:2012-08-03 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/154218.htm

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

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

  1 硬件結構

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

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

  nFR2401 之間的無(wú)線(xiàn)收發(fā)是以數據包的形式發(fā)送和接收的。其數據包格式如下:

  數據包格式

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

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

  1.2 nFR2401 與S3C2440 的接口設計

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

  圖1 系統框圖。

  圖1 系統框圖。

  2 軟件設計

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

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

 2.1 nFR2401 驅動(dòng)軟件設計

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

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

  字符設備以字節流訪(fǎng)問(wèn)設備,以字節為單位對其讀寫(xiě)。字符設備的驅動(dòng)程序實(shí)現了系統調運。應用程序以設備文件訪(fǎng)問(wèn)字符設備。通過(guò)register_chrdev()或unregister_chrdev()對字符設備進(jìn)行注冊和注銷(xiāo)。中斷申請用request_irq()函數,釋放中斷用free_irq () 驅動(dòng)程序中包含的結構和函數有:nf24_table 和nf24_cfg_table,定義的結構主要應用于對引腳的定義和功能的設置。函數有:

  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″);


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>