新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于2.4GHz射頻通信的多功能鼠標設計

        基于2.4GHz射頻通信的多功能鼠標設計

        作者: 時間:2010-06-30 來源:網絡 收藏


        2.2 無線發射部分

        nRF24L01的工作原理如下:發射數據時,首先將nRF24L01配置為發射模式,接著把接收節點地址TX_ADDR和有效數據TX_PLD按照時序由SPI口寫入nRF24L01緩存區。TX_PLD必須在CSN為低時連續寫入,而TX_ADDR在發射時寫入一次即可。然后,CE置為高電平并保持至少10μs,延遲130μs后發射數據。若自動應答開啟,那么nRF24L01在發射數據后立即進入接收模式,接收應答信號(自動應答接收地址應該與接收節點地址TX_ADDR一致)。如果收到應答,則認為此次成功,TX_DS置高,同時TX_PLD從TX FIFO中清除;若未收到應答,則自動重新發射該數據(自動重發已開啟),若重發次數(ARC)達到上限,MAX_RT置高,TXFIFO中數據保留以便再次重發。MAX_RT或TX_DS置高時,使IRQ變低,產生中斷,通知MCU。發射成功時,若CE為低,則nRF24L01進入待機模式1;若發送堆棧中有數據且CE為高,則進入下一次發射;若發送堆棧中無數據且CE為高,則進入待機模式2。

        接收數據時,首先將nRF24L01配置為接收模式,接著延遲130μs進入接收狀態等待數據的到來。當接收方檢測到有效的地址和CRC時,就將數據包存儲在RXFIFO中,同時中斷標志位RX_DR置高,IRQ變低,產生中斷,通知MCU取數據。若此時自動應答開啟,接收方則同時進入發射狀態回傳應答信號。接收成功時,若CE變低,則nRF24L01進入待機模式1。

        nRF24L01有發射、接收、待機和掉電4種工作模式,可以通過配置寄存器來設置其工作狀態,如表1所列。



        待機模式1(Standby-I)主要用于降低電流損耗(在該模式下,晶體振蕩器仍然工作)。待機模式2(Standby-II)是當FIFO寄存器為空且CE=1時進入此模式。待機模式下,所有配置字仍然保留。在掉電模式(PowerDown)下電流損耗最小,同時nRF24L01也不工作,但其所有配置寄存器的值仍然保留。

        無線發射部分上電初始化時,進行了如下配置:

        ①CONFIG寄存器的低4位置1,分別為16位CRC校驗,芯片上電和接收模式;

        ②SETUP_AW(地址寬度)寄存器配置地址寬度為5字節;

        ③SETUP_RETR(自動重發)寄存器配置為自動重發延時500μs,重發5次;

        ④RF_CH(RF頻道)寄存器配置為工作頻道2 400MHz;

        ⑤RF_SETUP(RF設置)寄存器配置為發射功率0 dBm,Air Data Rate為1 MHz;

        ⑥將地址寫入地址寄存器。

        在配置寄存器時應注意一點:在寫nRF24L01的寄存器時,它必須工作在掉電模式或待機模式。而在nRF24L01上電達到1.9 V以后,要經過10.3 ms的上電復位然后再進入掉電模式。這是一個不確定狀態。在此狀態下,對寄存器的寫操作是無法完成的,因此必須加上一個合適的延時,使程序對nRF24L01的配置操作在掉電模式或待機模式下進行。

        當光傳感器或按鍵等有操作時,主控制器將讀入的信號寫入nRF24L01的TX_PLD,然后由芯片自動生成報頭和CRC校驗碼,并發送出去。當收到應答信號(ACK)后,程序中所設置的標志位success置1,清除TX FIFO隊列中的數據,可以進行下一次數據的寫入了;若未收到應答信號(ACK),則標志位success置0,繼續重發,且新的數據無法寫入。

        2.3 讀光傳感器位移值

        讀光傳感器的位移值,其實就是讀它對應的寄存器。在ADNS-5030的內部寄存器中,地址為0x02的Motion寄存器用于表示是否有位移。其最高位若為0,則無位移;最高位若為1,則有位移。另外,使用到的兩個寄存器的地址是0x03和Ox04的DeltaX和DeltaY。這兩個寄存器的值分別表示X軸和Y軸方向上的位移。最高位表示位移的方向,1為負方向,0為正方向,低7位表示位移量。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南川市| 泽库县| 依兰县| 桃园市| 榆社县| 桦川县| 屏东县| 长兴县| 民勤县| 晋中市| 广元市| 盐津县| 凉山| 东光县| 龙泉市| 汝阳县| 平舆县| 兴安县| 武陟县| 岳池县| 石渠县| 宾川县| 神农架林区| 松桃| 临沧市| 许昌县| 齐齐哈尔市| 石狮市| 望都县| 康马县| 慈溪市| 同仁县| 宿迁市| 定边县| 江山市| 聂拉木县| 和田县| 万载县| 长沙县| 富顺县| 南木林县|