新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 簡單的NRF2401A單工通信學習筆記

        簡單的NRF2401A單工通信學習筆記

        作者: 時間:2011-03-08 來源:網絡 收藏

        PIAE GROUP 的CAN總線學習板除了讓我們這群菜鳥學習CAN總線外,還設計了與NRF2401無線模塊的接口電路。關于無線模塊,在做畢設的時候就接觸過,那時用的是浦城公司的PT2262/PT2276這樣一對無線編碼收發模塊,由于時間倉促,當時沒怎么玩,只是拿來和單片機做了下測試,最后并沒有和程序聯調,挺遺憾的,這下弄來NRF2401該好好玩玩了。

        本文引用地址:http://www.104case.com/article/150976.htm

          當時PT2262的編碼原理還在Modelsim上仿真了,感覺PT2262的控制還是比較傻瓜型的,就是一個控制端,四個(六個)數據端,是并行傳輸的。當控制端置位后就把數據端的數據編碼發送到PT2272接收。PT2262有一個接收狀態端口接單片機的中斷口,這樣就可以響應并接收數據。而NRF2401的控制可不是這么簡單,它的學習最精髓的地方就是18個配置字的設置。通過這些配置字的設置,決定了NRF2401的工作方式,它與CPU的通信是SPI方式,也就是只要一個數據線和一個時鐘線就可以完成。另外,PT2262/2272是單工通信,而兩個NRF2401是可以互發數據的。

          今天算是入了門,弄了個最簡單的實驗。上電后A節點數碼管顯示0,每按下一次中斷按鍵數碼管顯示加一,同時A節點不斷的發送數據到B節點。B節點在數碼管顯示接收到的數據。

          先說說A節點發送部分的程序。主函數如下:

          void main(void)

          {

          CPU_init(); //初始化CPU

          NRF2401_init(); //初始化NRF2401A

          while(1)

          {

          sending_data(); //RF發送數據

          led_display(1,Send_data[0]); //發送數據顯示

          }

          }

          先初始化單片機,主要是設置按鍵中斷口。然后是無線模塊NRF2401的初始化,這個初始化過程包括2401與單片機接口的初始化,還有就是命令字的配置,使2401工作在一個希望的狀態下。初始化后進入主循環,就是發送數據并且顯示發送的數據在數碼管上。發送數據部分是重點,其實也不復雜,只要控制相應的端口為發送模式,然后通過SPI協議往2401寫地址和數據就可以了。除此以外,因為有按鍵,所以還要有一個按鍵中斷的程序。

          下面在說一下節點2接收部分的編程。先看主函數:

          void main(void)

          {

          rx_data_buf[0]=0;

          TxLED=1; //發射燈滅

          RxLED=0; //接收燈亮,默認為接收模式,準備接收數據

          NRF2401_init(); //初始化nRF2401A

          while(1)

          {

          while(!DR1); //DR1是NRF2401的接收數據狀態標志位

          // 0--沒有接收到數據,1--接收到數據,等待讀出

          receive();

          led_display(1,rx_data_buf[0]); //顯示接收數據

          }

          }

          這個部分開始也是需要初始化,2401的初始化也是端口的初始化和命令字的配置。然后在主循環里要檢測是否接收數據狀態標志位置位了,如果沒有置位,則程序進入死循環,數碼管不會有顯示;如果置位了,則繼續執行接收數據程序,然后顯示接收的數據。接收數據程序receive()是重點,因為之前接收標志位已經置位了,所以它直接使用SPI方式把接收到的數據從2401讀出即可了。

          仔細分析下,似乎并不難,其實動手前還是應該理清下思路,這樣不論對讀別人的程序還是對自己動手寫都是有好處的。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绍兴县| 三都| 吴旗县| 西青区| 乐都县| 仙居县| 石阡县| 措勤县| 微博| 香河县| 诏安县| 江陵县| 老河口市| 博罗县| 乐平市| 新泰市| 当涂县| 福建省| 出国| 麻江县| 大田县| 武强县| 西乡县| 绥芬河市| 保山市| 武平县| 伊吾县| 霞浦县| 凯里市| 武川县| 安阳市| 洛浦县| 迁安市| 会同县| 湄潭县| 城市| 舟曲县| 玛纳斯县| 沁水县| 东港市| 文化|