久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1517|回復: 0
打印 上一主題 下一主題
收起左側

無線遙控設計資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:195285 發表于 2017-5-1 16:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
無線遙控設計
一、總體概述
本系統有六大部分組成分PS/2電腦鍵盤控制部分、雙單片機控制部分、無線數字收發部分、攝相頭采集部分、高頻放大發射部分、電視觀察接收信號圖像部分。
二、       題目分析及方案論證:
本題中要求發射大于10米,且多通道。所以可采用高頻無線數字收發模塊。如NRF 系列數字收發模塊。可選用單片機給數字模塊進行控制和配置寄存器,及用SPI給數字模塊發送數據。
1 、NRF系列數字收發模塊選擇方案論證
1.1  NRF401可以達到題目要求
           所設計的無線數傳模塊由單片射頻收發芯片nRF401、AT89C52微控制器和MAX3316接口芯片構成,工作在433.92/434.33MHz頻段;
  nRF401是北歐集成電路公司(NORDIC)的產品,是一個為433MHz ISM頻段設計的真正單片UHF無線收發芯片,滿足歐洲電信工業標準(ETSI)EN300200-1 V1.2.1。它采用FSK調制解調技術,最高工作速率可以達到20K,發射功率可以調整,最大發射功率是+10dBm。nRF401的天線接口設計為差分天線,以便于使用低成本的PCB天線。它要求非常少的外圍元件(約10個),無需聲表濾波器、變容管等昂貴的元件,只需要便宜且易于獲得的4MHz晶體,收發天線合一。無需進行初始化和配置,不需要對數據進行曼徹斯特編碼,有兩個工作頻寬(433.92/434.33MHz),工作電壓范圍可以從2.7-5V,還具有待機模式,可以更省電和高效。
   
  nRF401無線收發芯片的結構框圖如圖1所示:內部結構可分為發射電路、接收電路、模式和低功耗控制邏輯電路及串行接口幾部分。發射電路包含有:射頻功率放大器、鎖相環(PLL),壓控振蕩器(VCO),頻率合成器等電路;鶞收袷幤鞑捎猛饨泳w振蕩器,產生電路所需的基準頻率。
   
   其主要特性如下:
   ●工作頻率為國際通用的數傳頻段
   ●FSK調制,抗干擾能力強,特別適合工業控制場合;
   ●采用PLL頻率合成技術,頻率穩定性極好;
   ●靈敏度高,達到-105dBm(nRF401);
  ●功耗小,接收狀態250 A,待機狀態僅為8 A(nRF401);
   ●最大發射功率達 +10dBm ;
   ●低工作電壓(2.7V),可滿足低功耗設備的要求;
   ●具有多個頻道,可方便地切換工作頻率 ;
   ●工作速率最高可達20Kbit/s(RF401);
   ●僅外接一個晶體和幾個阻容、電感元件,基本無需調試;
   ●因采用了低發射功率、高接收靈敏度的設計,使用無需申請許可證,開闊地的使用距離最遠可達1000米 (與具體使用環境及元件參數有關)。
TX與RX之間的切換
   
   當從RX切換到TX模式時,數據輸入腳(DIN)必須保持為高至少1ms才能收發數據。當從TX切換到RX時,數據輸出腳(DOUT)要至少3ms以后有數據輸出。
   
  Standby與RX之間的切換
   
   從待機模式到接收模式,當PWR_UP輸入設成1時,經過tSR時間后,DOUT腳輸出數據才有效。對 nRF401來說,tST最長的時間是3ms。
   從待機模式到發射模式,所需穩定的最大時間是tST。
   
  Power Up與TX間的切換
   
   從加電到發射模式過程中,為了避免開機時產生干擾和輻射,在上電過程中TXEN的輸入腳必須保持為低,以便于頻率合成器進入穩定工作狀態。當由上電進入發射模式時,TXEN必須保持1ms以后才可以往DIN發送數據。
   
   從上電到接收模式過程中,芯片將不會接收數據,DOUT也不會有數據輸出,直到電壓穩定達到2.7V以上,并且至少保持5ms。如果采用外部振蕩器,這個時間可以縮短到3ms。
  
  在實際應用中,微控制器采用Atmel公司的AT89C52,分別用單片機的P1口各管腳控制nRF401的DIN、DOUT、TXEN、PWRUP、CS這五個腳即可。
      接口芯片采用美信公司的RS232轉換芯片MAX3316,完成單片機和計算機RS232接口的電平轉換及數據發送、接收、請求、清除功能。在nRF401芯片使用時,設定好工作頻率,進入正常工作狀態后,通過單片機根據需要進行收發轉換控制,發送/接收數據或進行狀態轉換。在設計程序時,要注意各狀態轉換的時延。nRF401的通訊速率最高為20kbit/s,發送數據之前需將電路置于發射模式;接收模式轉換為發射模式的轉換時間至少為1ms;可以發送任意長度的數據;發射模式轉換為接收模式的轉換時間至少為3ms。在待機模式時,電路進入待機狀態,電路不接收和發射數據。待機模式轉換為發射模式的轉換時間至少為4ms;待機模式轉換為接收模式的轉換時間至少為5.0ms。這里給出系統和程序的工作流程圖
       1.2 單片射頻收發器nRF905也可達到要求
nRF905是挪威Nordic VLSI公司推出的單片射頻收發器,工作電壓為1.9~3.6V,32引腳QFN封裝(5由頻率合成器、接收解調器、功率放大器、晶體振蕩器和調制器組成,不需外加聲表濾波器, ShockBurstTM工作模式,自動處理字頭和CRC(循環冗余碼校驗),使用SPI接口與微控制器通信,配置非常方便。此外,其功耗非常低,以-10dBm的輸出功率發射時電流只有11mA,工作于接收模式時的電流為12.5mA,內建空閑模式與關機模式,易于實現節能。nRF905適用于無線數據通信、無線報警及安全系統、無線開鎖、無線監測、家庭自動化和玩具等諸多領域。NRF905比NRF401先進多了。能充分滿足題目要求。
2. 芯片結構、引腳介紹及工作模式
   nRF905片內集成了電源管理、晶體振蕩器、低噪聲放大器、頻率合成器功率放大器等模塊,曼徹斯特編碼/解碼由片內硬件完成,無需用戶對數據進行曼徹斯特編碼,因此使用非常方便。nRF905的詳細結構如圖1所示。
2.2引腳介紹     表1:nRF905引腳
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
     nRF905有兩種工作模式和兩種節能模式。兩種工作模式分別是ShockBurstTM接收模式和ShockBurstTM發送模式,兩種節能模式分別是關機模式和空閑模式。nRF905的工作模式由TRX_CE、TX_EN和PWR_UP三個引腳決定,詳見表2。file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
2.1ShockBurstTM模式
與射頻數據包有關的高速信號處理都在nRF905片內進行,數據速率由微控制器配置的SPI接口決定,數據在微控制器中低速處理,但在nRF905中高速發送,因此中間有很長時間的空閑,這很有利于節能。由于nRF905工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射頻數據發射速率。在ShockBurstTM接收模式下,當一個包含正確地址和數據的數據包被接收到后,地址匹配(AM)和數據準備好(DR)兩引腳通知微控制器。在ShockBurstTM發送模式,nRF905自動產生字頭和CRC校驗碼,當發送過程完成后,數據準備好引腳通知微處理器數據發射完畢。由以上分析可知,nRF905的ShockBurstTM收發模式有利于節約存儲器和微控制器資源,同時也減小了編寫程序的時間。下面具體詳細分析nRF905的發送流程和接收流程。
2.2發送流程
典型的nRF905發送流程分以下幾步:
接口的速率在通信協議和器件配置時確定;
B. 微控制器置高TRX_CE和TX_EN,激發nRF905的ShockBurstTM發送模式;
C. nRF905的ShockBurstTM發送:
l 數據打包(加字頭和CRC校驗碼);
2 發送數據包;
3 當數據發送完成,數據準備好引腳被置高;
D. AUTO_RETRAN被置高,nRF905不斷重發,直到TRX_CE被置低;
E. 當TRX_CE被置低,nRF905發送過程完成,自動進入空閑模式。
ShockBurstTM工作模式保證,一旦發送數據的過程開始,無論TRX_EN和TX_EN引腳是高或低,發送過程都會被處理完。只有在前一個數據包被發送完畢,nRF905才能接受下一個發送數據包。
2.3接收流程
A. 當TRX_CE為高、TX_EN為低時,nRF905進入ShockBurstTM接收模式;
B. 650us后,nRF905不斷監測,等待接收數據;
C. 當nRF905檢測到同一頻段的載波時,載波檢測引腳被置高;
D. 當接收到一個相匹配的地址,地址匹配引腳被置高;
E. 當一個正確的數據包接收完畢,nRF905自動移去字頭、地址和CRC校驗位,然后把數據準備好引腳置高
F. 微控制器把TRX_CE置低,nRF905進入空閑模式;
G. 微控制器通過SPI口,以一定的速率把數據移到微控制器內;
H. 當所有的數據接收完畢,nRF905把數據準備好引腳和地址匹配引腳置低;
I. nRF905此時可以進入ShockBurstTM接收模式、ShockBurstTM發送模式或關機模式。
當正在接收一個數據包時,TRX_CE或TX_EN引腳的狀態發生改變,nRF905立即把其工作模式改變,數據包則丟失。當微處理器接到地址匹配引腳的信號之后,其就知道nRF905正在接收數據包,其可以決定是讓nRF905繼續接收該數據包還是進入另一個工作模式。
2.4節能模式
nRF905的節能模式包括關機模式和節能模式。
在關機模式,nRF905的工作電流最小,一般為2.5uA。進入關機模式后,nRF905保持配置字中的內容,但不會接收或發送任何數據。
空閑模式有利于減小工作電流,其從空閑模式到發送模式或接收模式的啟動時間也比較短。在空閑模式下,nRF905內部的部分晶體振蕩器處于工作狀態。nRF905在空閑模式下的工作電流跟外部晶體振蕩器的頻率有關。
2.5 器件配置
所有配置字都是通過SPI接口送給nRF905。SIP接口的工作方式可通過SPI指令進行設置。當nRF905處于空閑模式或關機模式時,SPI接口可以保持在工作狀態。
2.6SPI接口配置
SPI接口由狀態寄存器、射頻配置寄存器、發送地址寄存器、發送數據寄存器和接收數據寄存器5個寄存器組成。狀態寄存器包含數據準備好引腳狀態信息和地址匹配引腳狀態信息;射頻配置寄存器包含收發器配置信息,如頻率和輸出功能等;發送地址寄存器包含接收機的地址和數據的字節數;發送數據寄存器包含待發送的數據包的信息,如字節數等;接收數據寄存器包含要接收的數據的字節數等信息。
2.7射頻配置
  射頻配置寄存器和內容如表3所示:
  3:射頻配置寄存器file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
射頻寄存器的各位的長度是固定的。然而,在ShockBurstTM收發過程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS 4個寄存器使用字節數由配置字決定。nRF905進入關機模式或空閑模式時,寄存器中的內容保持不變。
2.8 應用電路
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif
nRF905在使用中,根據不同需要,其電路圖不盡相同,圖2所示為典型的應用原理圖,該電路天線部分使用的是50Ω單端天線。在nRF905的電路板設計中,也可以使用環形天線,把天線布在PCB板上,這可減小系體積。
  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
3.  NRF2401芯片是2.4G高頻無線數字收發模塊
  nRF2401是單片射頻收發芯片,工作于2.4~2.5GHz ISM頻段,芯片內置頻率合成器、功率放大器、晶體振蕩器和調制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。芯片能耗非常低,以-5dBm的功率發射時,工作電流只有10.5mA,接收時工作電流只有18mA,多種低功率工作模式,節能設計更方便。其DuoCeiverTM技術使nRF2401可以使用同一天線,同時接收兩個不同頻道的數據。nRF2401適用于多種無線通信的場合,如無線數據傳輸系統、無線鼠標、遙控開鎖、遙控玩具等。nRF2401無線收發一體芯片和藍牙一樣,都工作在2.4GHz自由頻段,能夠在全球無線市場暢通無阻。nRF2401支持多點間通信,最高傳輸速率超過1MBit/S,而且比藍牙具有更高的傳輸速度。它采用SoC方法設計,只需少量外圍元件便可組成射頻收發電路。與藍牙不同的是,nRF 2401沒有復雜的通信協議,它完全對用戶透明,同種產品之間可以自由通信。更重要的是,nRF 2401比藍牙產品更便宜。所以nRnRF 2401是業界體積最小、功耗最少、外圍元件最少的低成本射頻系統級芯片。
3.1. 芯片結構、引腳說明
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
nRF2401內置地址解碼器、先入先出堆棧區、解調處理器、時鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來非常方便。QFN24引腳封裝,外形尺寸只有5×5mm。nRF2401的功能模塊如圖1所示。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif
3.2芯片結構
作模式工
nRF2401有工作模式有四種:收發模式、配置模式、空閑模式和關機模式。nRF2401的工作模式由PWR_UP 、CE、TX_EN和CS三個引腳決定,詳見表2。  
表2:nRF2401工作模式  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg

3.3 收發模式
nRF2401的收發模式有ShockBurstTM收發模式和直接收發模式兩種,收發模式由器件配置字決定,具體配置將在器件配置部分詳細介紹。
3.4.ShockBurstTM收發模式
ShockBurstTM收發模式下,使用片內的先入先出堆棧區,數據低速從微控制器送入,但高速(1Mbps)發射,這樣可以盡量節能,因此,使用低速的微控制器也能得到很高的射頻數據發射速率。與射頻協議相關的所有高速信號處理都在片內進行,這種做法有三大好處:盡量節能;低的系統費用(低速微處理器也能進行高速射頻發射);數據在空中停留時間短,抗干擾性高。nRF2401的ShockBurstTM技術同時也減小了整個系統的平均工作電流。
在ShockBurstTM收發模式下,nRF2401自動處理字頭和CRC校驗碼。在接收數據時,自動把字頭和CRC校驗碼移去。在發送數據時,自動加上字頭和CRC校驗碼,當發送過程完成后,數據準備好引腳通知微處理器數據發射完畢。
3.4.1 ShockBurstTM發射流程
接口引腳為CE,CLK1,DATA
A. 當微控制器有數據要發送時,其把CE置高,使nRF2401工作;
B. 把接收機的地址和要發送的數據按時序送入nRF2401;
C. 微控制器把CE置低,激發nRF2401進行ShockBurstTM發射;
D. nRF2401的ShockBurstTM發射
2 給射頻前端供電;
2 射頻數據打包(加字頭、CRC校驗碼);
2 高速發射數據包;
2 發射完成,nRF2401進入空閑狀態。
3.4.2 ShockBurstTM接收流程
接口引腳CE、DR1、CLK1和DATA(接收通道1)
A. 配置本機地址和要接收的數據包大;
B. 進入接收狀態,把CE置高;
C. 200us后,nRF2401進入監視狀態,等待數據包的到來;
D. 當接收到正確的數據包(正確的地址和CRC校驗碼),nRF2401自動把字頭、地址和CRC校驗位移去;
E. nRF2401通過把DR1(這個引腳一般引起微控制器中斷)置高通知微控制器;
F. 微控制器把數據從nRF2401移出;
G. 所有數據移完,nRF2401把DR1置低,此時,如果CE為高,則等待下一個數據包,如果CE為低,開始其它工作流程。
3.5.1直接收發模式
在直接收發模式下,nRF2401如傳統的射頻收發器一樣工作。
3.5.2直接發送模式
接口引腳為CE、DATA
A. 當微控制器有數據要發送時,把CE置高;
B. nRF2401射頻前端被激活;
C. 所有的射頻協議必須在微控制器程序中進行處理(包括字頭、地址和CRC校驗碼)。
3.5.3直接接收模式
接口引腳為CE、CLK1和DATA
A. 一旦nRF2401被配置為直接接收模式,DATA引腳將根據天線接收到的信號開始高低變化(由于噪聲的存在);
B. CLK1引腳也開始工作;
C. 一旦接收到有效的字頭,CLK1引腳和DATA引腳將協調工作,把射頻數據包以其被發射時的數據從DATA引腳送給微控制器;
D. 這頭必須是8位;
E. DR引腳沒用上,所有的地址和CRC校驗必須在微控制器內部進行。
3.5.4配置模式
在配置模式,15字節的配置字被送到nRF2401,這通過CS、CLK1和DATA三個引腳完成,具體的配置方法請參考本文的器件配置部分。
3.5.5空閑模式
nRF2401的空閑模式是為了減小平均工作電流而設計,其最大的優點是,實現節能的同時,縮短芯片的起動時間。在空閑模式下,部分片內晶振仍在工作,此時的工作電流跟外部晶振的頻率有關,如外部晶振為4MHz時工作電流為12uA,外部晶振為16MHz時工作電流為32uA。在空閑模式下,配置字的內容保持在nRF2401片內。
3.5.6 關機模式
在關機模式下,為了得到最小的工作電流,一般此時的工作電流小于1uA。關機模式下,配置字的內容也會被保持在nRF2401片內,這是該模式與斷電狀態最大的區別。
3.6. 器件配置
nRF2401的所有配置工作都是通過CS、CLK1和DATA三個引腳完成,把其配置為ShockBurstTM收發模式需要15字節的配置字,而如把其配置為直接收發模式只需要2字節的配置字。由上文對nRF2401工作模式的介紹,我們可以知道,nRF2401一般工作于ShockBurstTM收發模式,這樣,系統的程序編制會更加簡單,并且穩定性也會更高,因此,下文著重介紹把nRF2401配置為ShockBurstTM收發模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能夠處理射頻協議,在配置完成后,在nRF2401工作的過程中,只需改變其最低一個字節中的內容,以實現接收模式和發送模式之間切換。ShockBurstTM的配置字可以分為以下四個部分:
數據寬度:聲明射頻數據包中數據占用的位數。這使得nRF2401能夠區分接收數據包中的數據和CRC校驗碼;
地址寬度:聲明射頻數據包中地址占用的位數。這使得nRF2401能夠區分地址和數據;
地址:接收數據的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能夠生成CRC校驗碼和解碼。
當使用nRF2401片內的CRC技術時,要確保在配置字中CRC校驗被使能,并且發送和接收使用相同的協議。nRF2401配置字的各個位的描述如表3所示。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
在配置模式下,注意保證PWR_UP引腳為高電平,CE引腳為低電平。配置字從最高位開始,依次送入nRF2401。在CS引腳的下降沿,新送入的配置字開始工作。
3.7. 應用電路
圖2為nRF2401的應用電路,由圖可知,其只需要14個外圍元件。nRF2401應用電路一般工作于3V,它可用多種低功耗微控制器進行控制。在設計過程中,設計者可使用單鞭天線或環形天線,上圖為50歐姆單鞭天線的應用電路。在使用不同的天線時,為了得到盡可能大的收發距離,電感電容的參數應適當調整。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif
3.6. PCB設計
PCB設計對nRF2401的整體性能影響很大,所以PCB設計在nRF2401收發系統的開發過程中主要的工作之一,在PCB設計時,必須考慮到各種電磁干擾,注意調整電阻、電容和電感的位置,特別要注意電容的位置。
nRF2401的PCB一般都是雙層板,底層一般不放置元件,為地層,頂層的空余地方一般都敷上銅,這些敷銅通過過孔與底層的地相連。直流電源及電源濾波電容盡量靠近VDD引腳。nRF2401的供電電源應通過電容隔開,這樣有利于給nRF2401提供穩定的電源。在PCB中,盡量多打一些通孔,使頂層和底層的地能夠充分接觸。
4.三種方案比較論證
  nRF401工作速率最高達20Kbit/s應用時偏低。 接口芯片采用美信公司的RS232轉換芯片MAX3316,完成單片機和計算機RS232接口的電平轉換及數據發送、接收、請求、清除功能。在nRF401芯片使用時,設定好工作頻率,進入正常工作狀態后,通過單片機根據需要進行收發轉換控制,發送/接收數據或進行狀態轉換。在設計程序時,要注意各狀態轉換的時延。通信協議的設計nRF401是程序繁雜難以在短時間內調試好。平時大多數情況下應處于關閉狀態,由于無線部分硬件上是不具備自動喚醒功能的,為了達到節能的目的,必須通過軟件方式采用合理的通信協議以保證節能同時不丟失數據。接收模式轉換為發射模式的轉換時間至少為1ms;可以發送任意長度的數據;發射模式轉換為接收模式的轉換時間至少為3ms。在待機模式時,電路進入待機狀態,電路不接收和發射數據。待機模式轉換為發射模式的轉換時間至少為4ms;待機模式轉換為接收模式的轉換時間至少為5.0ms。延時問題也需要程序彌補不好調試。
nRF905工作速率最高達100Kbit/s,頻道之間的轉換時間小于650us。與射頻數據包有關的高速信號處理都在nRF905片內進行,數據速率由微控制器配置的SPI接口決定,數據在微控制器中低速處理,但在nRF905中高速發送,因此中間有很長時間的空閑,這很有利于節能。與nRF401相比與相當大的改進。當微控制器有數據要發送時,通過SPI接口,按時序把接收機的地址和要發送的數據送傳給nRF905SPI接口的速率在通信協議和器件配置時確定;微控制器置高TRX_CETX_EN,激發nRF905ShockBurstTM發送模式;射頻寄存器自動開啟;數據打包(加字頭和CRC校驗碼);發送數據包;當數據發送完成,數據準備好引腳被置高;當數據發送完成,數據準備好引腳被置高當TRX_CE被置低,nRF905發送過程完成,自動進入空閑模式。ShockBurstTM工作模式保證,一旦發送數據的過程開始,無論TRX_ENTX_EN引腳是高或低,發送過程都會被處理完。只有在前一個數據包被發送完畢,nRF905才能接受下一個發送數據包。
nRF2401芯片內置頻率合成器、功率放大器、晶體振蕩器和調制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。芯片能耗非常低,以-5dBm的功率發射時,工作電流只有10.5mA,接收時工作電流只有18mA,多種低功率工作模式,節能設計更方便。其DuoCeiverTM技術使nRF2401可以使用同一天線,同時接收兩個不同頻道的數據。nRF2401內置地址解碼器、先入先出堆棧區、解調處理器、時鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來非常方便。該器件有125個頻點,能夠實現點對點、點對多點的無線通信,同時可采用改頻和跳頻來避免干擾。nRF2401最大傳輸速率可達1Mbit/s,其最大發射功率為-5dBm,在比較理想環境中,其室內傳輸距離可達50~90米,室外傳輸距離可達100-200米。nRF2401的靈敏度為-90dBm,工作電壓為1.9V~3.3,工作溫度范圍為-40~+80℃。在ShockBurstTM收發模式下,nRF2401自動處理字頭和CRC校驗碼。在接收數據時,自動把字頭和CRC校驗碼移去。在發送數據時,自動加上字頭和CRC校驗碼,當發送過程完成后,數據準備好引腳通知微處理器數據發射完畢。
1 ShockBurstTM發射流程
接口引腳為CE,CLK1,DATA
A. 當微控制器有數據要發送時,其把CE置高,使nRF2401工作;
B. 把接收機的地址和要發送的數據按時序送入nRF2401;
C. 微控制器把CE置低,激發nRF2401進行ShockBurstTM發射;
D. nRF2401的ShockBurstTM發射
1 給射頻前端供電;
2 射頻數據打包(加字頭、CRC校驗碼);
3 高速發射數據包;
4 發射完成,nRF2401進入空閑狀態。
2 ShockBurstTM接收流程
接口引腳CE、DR1、CLK1和DATA(接收通道1)
A. 配置本機地址和要接收的數據包大;
B. 進入接收狀態,把CE置高;
C. 200us后,nRF2401進入監視狀態,等待數據包的到來;
D. 當接收到正確的數據包(正確的地址和CRC校驗碼),nRF2401自動把字頭、地址和CRC校驗位移去;
E. nRF2401通過把DR1(這個引腳一般引起微控制器中斷)置高通知微控制器;
F. 微控制器把數據從nRF2401移出;有空閑模式降低功耗,發送數據打包,
G. 所有數據移完,nRF2401把DR1置低,此時,如果CE為高,則等待下一個數據包,如果CE為低,開始其它工作流程。
3.直接發送模式
接口引腳為CE、DATA
A.
當微控制器有數據要發送時,把CE置高;
B. nRF2401
射頻前端被激活;
C.
所有的射頻協議必須在微控制器程序中進行處理(包括字頭、地址和CRC校驗碼)。
4.
直接接收模式
接口引腳為CE、CLK1DATA
A.
一旦nRF2401被配置為直接接收模式,DATA引腳將根據天線接收到的信號開始高低變化(由于噪聲的存在);
B. CLK1
引腳也開始工作;
C.
一旦接收到有效的字頭,CLK1引腳和DATA引腳將協調工作,把射頻數據包以其被發射時的數據從DATA引腳送給微控制器;
D.
這頭必須是8位;
E. DR
引腳沒用上,所有的地址和CRC校驗必須在微控制器內部進行。
nRF2401通過ShockBurstTM收發模式進行無線數據發送,收發可靠度高。
總結:nRF401電路焊接多、程序繁雜,調試不好實現,發送頻率低,頻道轉換時間長,容易丟數據包,出錯率高。所以不選用nRF401。nRF905 發送頻率可以,由微控制口SPI寫發送數據,ShockBurstTM發送模式;射頻寄存器自動開啟;數據打包(加字頭和CRC校驗碼);發送數據包;當數據發送完成,數據準備好引腳被置高;當數據發送完成,數據準備好引腳被置高當TRX_CE被置低,nRF905發送過程完成,自動進入空閑模式?墒nRF905的微控制器配置的SPI及寄存器配置繁雜給系統調試帶來麻煩。射頻寄存器的各位的長度是固定所有信息都有SPI來實現。所以不選用nRF905nRF2401發射功率大,本身功耗低,靈敏度高,并且有nRF905的所有優越性的無線數字收發性能,且使我們的系統調試更加快速。也是與整個系統匹配的最佳選擇。它的直接發送模式和直接接收模式是優于其它模塊的特色。所以最終選擇nRF2401
結果也證明了nRF2401確實是實現無線數字收發的可靠選擇。
四、硬件系統設計:
1、硬件控制系統PS/2電腦鍵盤
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
  
        
89C2051
   
   
   
  
        
   
Max232
   
   
   
  
        
89S52
   
單片機
   
   
   
  
        
PS/2電腦鍵盤
   
   
   
因為整個系統需要控制的鍵許多。十六個通道,兩個電機控制,發送數據等控制鍵很多,所以不用單鍵及小鍵盤,通過鍵盤編碼傳給89S52單片機,然后89S5289C2051經過Max232實現單片機與單片機串行通信。如圖示:
這樣設計增加控制鍵又省去了不必要的設計麻煩。       file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif
2、微控制系統單片機之間實現串行通信
  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gif
  選擇89S52是因為它可通過Max232與電腦通信可觀測單片機發送的數據,可以對設計串行通信發送的數據分析和改進程序。就是因為89S52這些功能才使整個系統可以應用PS/2電腦鍵盤。
  利用兩個單片機是因為兩個CPU可以提高工作效率。另外NRF2401的工作電壓小于單片機的工作電壓而89C2051可低電壓工作。所以用89C2051實現微控制對NRF2401控制及傳送數據。同時也降低了功耗,串行通信的程序中有校驗程序,從而避免了錯碼,使NRF2401發送的數據完全正確。只有無錯碼才能達到無線遙控的操作正確,這樣才能提高整個系統的性能。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
  
3、無線數字發射系統
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
利用89C2051對NRF2401傳送數據和對NRF2401寄存器配置,以及對NRF2401的控制。從而實現無線數字發射
4、無線數字接受系統
   與無線數字發射系統相似用NRF2401接受數據包傳給89C2051,再由89C2051與89S52 串行通信傳遞數據,經89S52解碼后選擇相應通道。
如圖所示:
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif

5通道顯示系統
顯示用大型號發光二極管顯示。
  
        
89S52
   
   
   
   
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif
6攝相頭采集系統
  
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif

file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
電機驅動芯片
此功能是無線遙控拓展,是實現更好的無線遙控必然趨勢。由此項高級功能才能完備整個系統的安全、無誤的進行工作。
     
     
7監控系統設計
  利用小電視機對攝相頭采集、發射的圖象進行接受。如圖示:
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image035.gif     
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image037.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image038.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image039.gif


   8時鐘顯示系統
  無論工作在什么地方都需要有時間顯示,在本系統中電子鐘是本系統的輔助單元?梢允拐麄大的系統更有合理的應用價值。為操作者提供舒適環境。本系統用單片機控制,七位共陽極數碼管顯示有74LS04,74LS07進行驅動,且可調時等功能。
9
總結;整個的系統可用下列圖示說明:
發射部分
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image040.gif

接受部分
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image041.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif

五、軟件系統設計:
   本系統主要是三大部分:單片機與單片機串行通信程序,對PS/2鍵盤編碼及譯碼程序,單片機對nRF2401的控制及傳遞數據程序。
1單片機與單片機串行通信程序
2對PS/2鍵盤編碼及譯碼程序
3單片機對nRF2401的控制及傳遞數據程序。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image044.jpg
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image046.jpg
六、功能測試及結果分析:
七、參考書目:
黃智偉 編著 《無線數字收發電路設計》——電路原理與應用實例
周立功 等編著速成與實踐》——增強型80C51單片機
黃智偉 等編著 《訓練教程》——全國大學生電子設計競賽
附錄:部分程序
1.      1單片機對nRF2401的控制及傳遞數據程序
<發射程序>
#include<At89x051.h>
//腳的定義
#define RxD         P3_0
#define TxD         P3_1
#define TxLED       P3_4
#define RxLED       P3_5
#definePWR_UP      P1_7
#define CE          P1_6
#define  CS        P1_2
#define CLK1        P3_2
#define  DR1       P1_1
#define DATA        P1_0
//測試用nRF2401寄存器數據
const unsignedtest_config[18]={
        0x8e,0x08,0x1e,     
        0x08,0x08,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xa3,0x2f,         
        0x64               
    };
//RF2401寄存器數據
const unsignedconfigbyte[18]={
                0x8e,0x08,0x1c,        
                0x08,0x08,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xa3,0x6f,              
                0x64           
        };
unsigned charrx_data_buf[1];   
unsigned charincrease_data;
unsigned chartask_switch;
unsigned charget_tx_data_for_pc();
voidsystem_init(void);
voidwrite_spi_one_byte(unsigned char data_buf);
voidconfig_2401(void);
voidconfig_test(void);
voiddelay_ms(unsigned int delay_counter);
voidsend_data(unsigned input_data);
void send_data_rf(void);
voidtransmit_mode(void);
void main(void);
//系統初始化
voidsystem_init(void)
{
    unsigned char i;
    PWR_UP=0;
    CE=0;
    CS=0;
    CLK1=0;
    DATA=0;           
    for(i=0;i<8;i++)            
        rx_data_buf=0;
    config_2401();
    delay_ms(2);
    TxLED=0;        
    RxLED=1;
    TMOD=0x20;                  
    SCON=0x50;                 
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    EA=0;
}
//RF2401寫數據函數
voidwrite_spi_one_byte(unsigned char data_buf)
{
    unsigned char i;
    unsigned char j;
    j=0x80;//0b10000000
    while(j>0)
    {
        i=data_buf&j;
        if(i==0)
            DATA=0;
        else
            DATA=1;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
}
//RF2401寄存器寫數據
voidconfig_2401(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                  
    CE=0;                          
    CS=1;                          
    i=1;                          
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(configbyte);
    CS=0;
    DATA=0;
    CE=1;
}
//系統測試
voidconfig_test(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                  
    CE=0;                           
    CS=1;                          
    i=1;                          
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(test_config);
    CS=0;
    DATA=0;
    CE=1;                          
}
//延時函數
voiddelay_ms(unsigned int delay_counter)
{
    unsigned int i;
    while(delay_counter--)
    {
        i=81;
        while(i--);
    }
}
//發射數據函數
voidsend_data(unsigned input_data)
{
    unsigned char i;
    PWR_UP=1;              
    delay_ms(5);           
    CE=1;                  
    i=1;                  
    while(i--);
    write_spi_one_byte(0xaa);         
    write_spi_one_byte(0xbb);           
    write_spi_one_byte(0xcc);         
    write_spi_one_byte(0xdd);         
    write_spi_one_byte(0xee);         
    for(i=0;i<1;i++)
        write_spi_one_byte(input_data);
    CE=0;                  
    i=50;                                    
        while(i--);
        PWR_UP=0;              
}
//從串行獲的數據
unsigned char  get_tx_data_for_pc()
{  unsigned char chuanh=0x00;
    while(RI==0);
    chuanh=SBUF ;
    RI=0;
    return(chuanh);
}
//RF2401發射數據
voidsend_data_rf(void)
{       increase_data=get_tx_data_for_pc();
        TxLED=0;               
        send_data(increase_data);
        delay_ms(1);
        TxLED=1;              
        delay_ms(1);
}
//主函數
void main(void)
{
    system_init();
    while (1)
    {
          send_data_rf();         
        }
    }
2單片機對nRF2401的控制及傳遞數據程序
<接收程序>
#include<At89x051.h>
//腳的定義
#define RxD         P3_0
#define TxD         P3_1
#define TxLED       P3_4
#define RxLED       P3_5
#definePWR_UP      P1_7
#define CE          P1_6
#define  CS        P1_2
#define CLK1        P3_2
#define  DR1       P1_1
#define DATA        P1_0
//測試
const unsignedtest_config[18]={
        0x8e,0x08,0x1e,     
        0x08,0x08,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xa3,0x2f,         
        0x64              
    };
//2401寄存器數據
const unsignedconfigbyte[18]={
                0x8e,0x08,0x1c,        
                0x08,0x08,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xa3,0x6f,              
                0x65           
        };
unsigned charrx_data_buf[1];      
unsigned charincrease_data;
void system_init(void);
voidwrite_spi_one_byte(unsigned char data_buf);
voidconfig_2401(void);
voidconfig_test(void);
voidreceive_data(unsigned payload_length);
unsigned charread_spi_one_byte(void);
voiddelay_ms(unsigned int delay_counter);
void receive_mode(void);
void main(void);
//系統初始化
voidsystem_init(void)
{
    unsigned char i;
    PWR_UP=0;
    CE=0;
    CS=0;
    CLK1=0;
    DATA=0;
   
    for(i=0;i<8;i++)         
        rx_data_buf=0;   
    config_2401();
    delay_ms(2);
    TxLED=0;      
    RxLED=1;
    TMOD=0x20;                 
    SCON=0x50;               
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    EA=0;
}
//從串行傳數據
voidsend_rx_data_to_pc(unsigned char payload_length)
{
   
        TI=0;
        SBUF=rx_data_buf[0];
        while(TI==0);
  
}
//對寄存器寫數據
voidwrite_spi_one_byte(unsigned char data_buf)
{
    unsigned char i;
    unsigned char j;
    j=0x80;//0b10000000
    while(j>0)
    {
        i=data_buf&j;
        if(i==0)
            DATA=0;
        else
            DATA=1;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
}
//RF2401寫寄存器數據
voidconfig_2401(void)
{
    unsigned char i;
    PWR_UP=1;                       
    delay_ms(5);                    
    CE=0;                        
    CS=1;                           
    i=1;                           
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(configbyte);
    CS=0;
    DATA=0;
    CE=1;
}
//測試
voidconfig_test(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                    
    CE=0;                           
    CS=1;                           
    i=1;                           
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(test_config);
    CS=0;
    DATA=0;
    CE=1;                           
}
//接收數據
voidreceive_data(unsigned payload_length)
{
    unsigned char i;
    for(i=0;i<payload_length;i++)
        rx_data_buf=read_spi_one_byte();
}
//RF2401寫數據
unsigned charread_spi_one_byte(void)
{
    unsigned char j;
    unsigned char data_buf;
    j=0x80;
    while(j>0)
    {
          DATA=1;
        data_buf<<=1;
        if(DATA==1)
            data_buf|=0x01;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
    return data_buf;
}
//延時
voiddelay_ms(unsigned int delay_counter)
{
    unsigned int i;
    while(delay_counter--)
    {
        i=81;
        while(i--);
    }
}
//接收數據
voidreceive_mode(void)
{
    //change_rf_txrx_mode(1);        //Change the RF to the receive mode
    while(START_SW!=0)
    {
        if(DR1==1)
        {
            RxLED=0;
            receive_data(8);
              delay_ms(50);
            RxLED=1;
            send_rx_data_to_pc(8);
        }
    }
   
}
//主函數
void main(void)
{
    system_init();
    while (1)
    {
                receive_mode();         
        }
    }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线小视频 | 国产精品久久久久久久久图文区 | 大乳boobs巨大吃奶挤奶 | 久久久性| 日韩成人在线观看 | 亚洲一区二区中文字幕 | 久久婷婷麻豆国产91天堂 | 免费大黄视频 | 国产亚洲精品久久午夜玫瑰园 | 国产亚洲一级 | 亚洲精品电影网在线观看 | 亚洲毛片在线 | 天天综合网91| 欧美日韩a | 久久国产亚洲 | 午夜在线免费观看视频 | 一本色道精品久久一区二区三区 | 成人免费观看男女羞羞视频 | 欧美一级二级在线观看 | 成人a视频片观看免费 | 国产午夜精品久久 | 欧美日韩免费一区二区三区 | 成人国产精品久久久 | 二区av| 日韩中文字幕免费 | 国产一区二区电影 | 久久久久久中文字幕 | 超碰免费在线 | 欧美一级黄色免费 | 国产精品一区二区三区在线 | 国产精品亚洲成在人线 | 99福利视频 | 91性高湖久久久久久久久_久久99 | 国产精品一区二区免费看 | 久久久久久久一级 | 老司机深夜福利网站 | 精品国模一区二区三区欧美 | 久久久精品视 | 午夜精品在线 | 视频一区二区在线观看 | 亚洲第一成年免费网站 |