新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 兼容RS-232的點對點無線接口設計

        兼容RS-232的點對點無線接口設計

        作者: 時間:2011-08-04 來源:網絡 收藏
        兼容RS-232的點對點無線接口設計

          圖3 程序流程圖

          程序流程圖如圖3所示。

          nRF2401具有144位狀態字。控制器將nRF2401設置為配置方式,然后由通道1向nRF2401寫入狀態字的配置值,寫時高位在前。配置方式下控制器寫狀態字的過程與激活方式下向nRF2401寫入數據的過程完全相同,都經由CLK、DR和DATA組成的三線接口完成。

          在配置模式下,將nRF2401配置為ShockBurstTM收發模式,該模式下使nRF2401能夠處理射頻協議,在配置完成后,在nRF2401工作過程中,只需改變其最低一字節中的內容,以實現接收模式和發送模式的轉換。ShockBurstTM的配置字由數據寬度、地址寬度、地址和CRC四部分組成。

          程序中對狀態字后的120位進行配置,其值為0x20 4000 DDDDDD DD 00CC CCCC CC83 6E05。配置后nRF2401的通道1數據段長度為8字節,地址段長度為32位,通道1硬件地址為0x CCCCCCCC,使能16位CRC校驗,單通道接收,工作于突發傳遞模式下,通信速率為1Mb/s,晶振頻率為16MHz,輸出功率-5dbm,工作頻段為2402MHz。

          ①發送、接收數據的程序設計

        void ShockBurstTrans(){
         unsigned char ByteNum;
         MODE_RT;
         Delay202();
         for(ByteNum=0;ByteNum14;ByteNum++)
         WriteTo2401(TXData[i]);
         CE=0;
         DATA=0;
          }

          數據接收設置為中斷服務程序方式。中斷服務程序如下:

          void ReceiveShock()interrupt 0 using 3{
         unsigned char ByteNum;
         DATA=1;
         for(ByteNum=0;
        ByteNum8;ByteNum++)
          RXData[ByteNum]=ReadFrom2401();
          }

          ② 串行口程序設計

          采用中斷方式進行串口管理。串行通信中對數據流的處理采用突發處理方式。針對RAM空間有限的情況,利用軟件模擬FIFO寄存器結構。

          串口的接收和發送工作是相對獨立的,構建兩個環形緩沖區來實現具有FIFO功能的緩沖區隊列。每一個環形緩沖區都對應有寫入(Ptr_Wr)和讀出(Ptr_ Rd)兩個指針,從寫指針到讀指針之間的相對區域存儲的是待發送或已接收的數據,兩個指針的前后次序通過標志位(bFlag_Order)判別,當它們的位置重合時則表示沒有有效數據。讀寫指針相對位置與存儲的數據之間的關系如圖4所示。陰影部分表示有效數據。

          兼容RS-232的點對點無線接口設計

          圖4 讀寫指針相對位置與存儲數據之間的關系示意圖

          結論

          隨著Internet的飛速發展,從WAN到MAN,再到LAN、PAN,這些技術已逐漸成熟。無線網絡在各類網絡中最具增長潛力。由于各種無線標準自身的技術也有待于不斷完善和提高,無線技術的應用還有很大的市場空間。

          nRF2401是一款性價比很高的單片無線收發芯片,利用AT89S52和nRF2401芯片設計的無線數據傳輸系統,成本低,體積小,應用靈活,具有良好的通用性和可靠性。通過調試結果表明,nRF2401芯片可以與微控制器連接實現無線數據通信,進而實現了PC之間的無線通信,并且通信質量可靠穩定。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黑山县| 驻马店市| 汤阴县| 锡林浩特市| 蒙阴县| 赤城县| 同江市| 宜阳县| 临城县| 孟津县| 桃源县| 垫江县| 宁南县| 岐山县| 龙里县| 西林县| 天门市| 临澧县| 长泰县| 林口县| 安平县| 怀仁县| 红河县| 平邑县| 张家口市| 凤翔县| 金湖县| 晋中市| 汝城县| 资讯 | 修水县| 名山县| 正蓝旗| 潼南县| 静安区| 英德市| 叙永县| 固原市| 武邑县| 上犹县| 鄱阳县|