小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【應用】nRF24L01無線模塊在單片機與FPGA上的應用

 筱肆 2014-04-13

  先簡單的介紹下nRF24L01無線模塊

  (1) 2.4Ghz 全球開放ISM 頻段免許可證使用

  (2) 最高工作速率2Mbps,高效GFSK調制,抗干擾能力強,特別適合工業(yè)控制場合

  (3) 126 頻道,滿足多點通信和跳頻通信需要

  (4) 內置硬件CRC 檢錯和點對多點通信地址控制

  (5) 低功耗1.9 - 3.6V 工作,待機模式下狀態(tài)為22uA;掉電模式下為900nA

  (6) 內置2.4Ghz 天線,體積小巧15mm X29mm

  (7) 模塊可軟件設地址,只有收到本機地址時才會輸出數(shù)據(jù)(提供中斷指示),可直接接各種單片機使用,軟件編程非常方便

   

  通過SPI方式完成數(shù)據(jù)的交換,包括數(shù)據(jù)的發(fā)送,數(shù)據(jù)的接收。說明一下,單片機中如果沒有SPI的硬件電路,我們可以使用單片機的普通IO口進行SPI的時序模擬,只要符合無線模塊的時序邏輯,一樣能控制無線模塊的通信。FPGA是可編程邏輯,最大的特點就是靈活,用戶可根據(jù)需求加入所需要的邏輯器件,當然它所包含的邏輯單元也是相當?shù)呢S富,有SPI硬件模塊。這樣用戶就省去了SPI方式的時序邏輯,可以更好的專注于功能的開發(fā)。

  下面將詳細的介紹下nRF24L01無線模塊在單片機與FPGA上的應用

單片機:這里我們使用的單片機型號為PIC16F877。

                     圖1.3  NRF24L01接入PIC的原理圖

    

  說明:從圖1.3中可以看出,主要是圖1.1中的6個信號(還有2個是地與電源)接入單片機中。而那些引腳是普通的IO口,需要用戶模仿SPI時序進行控制。

  無線模塊進行數(shù)據(jù)的交換就是數(shù)據(jù)的發(fā)送與數(shù)據(jù)的接收,下面將從這2個方面進行介紹。不管是數(shù)據(jù)的發(fā)送還是數(shù)據(jù)的接收,要想控制好NRF24L01無線模塊,先要通過SPI方式對無線模塊進行配置,只需要往它對應的寄存器里寫入數(shù)值便可。

  先定義一下PIC上的宏,下面我們就可以很方便的對PIC的引腳進行操作。

View Code

   

  NRF24L01無線模塊的寄存器

View Code

    

  有2類寄存器是用戶可以根據(jù)自己的需求所確定的,那就是地址的長度以及內容、發(fā)送與接收數(shù)據(jù)的長度,但無線模塊一次最多可以發(fā)送32個字節(jié),這兩類寄存器一般設置為3~4個字節(jié)。

View Code

   

  A  模擬SPI方式

View Code

   

  B  以SPI方式對寄存器的操作

View Code

    

  這樣就可以對NRF24L01無線模塊進行初始化工作,以及數(shù)據(jù)發(fā)送、數(shù)據(jù)接收。讓無線模塊是處于接收狀態(tài)還是處于發(fā)送狀態(tài),初始化的工作有所不同,但區(qū)別不大,主要是CONFIG寄存器,可詳細參考它的datesheet。

   NRF24L01發(fā)送的初始化以及發(fā)送時序

View Code

    

   NRF24L01接收的初始化以及接收時序

View Code

  

下面總結一下NRF24L01在FPGA的應用。

  由于FPGA自帶SPI硬件,只需要在SOPC Bulider中添加SPI模塊即可,在頂層圖中我們就可以看到圖1.4,另外,我們再添加兩個IO口,這樣我們就不必再模擬SPI方式,在FPGA中,有一個很好的API函數(shù)alt_avalon_spi_command();其函數(shù)原型為:

1 int alt_avalon_spi_command(alt_u32base,alt_u32slave,
2 alt_u32write_length,
3 constalt_u8*wdata,
4 alt_u32read_length,
5 alt_u8*read_data,
6 alt_u32flags)

  

該函數(shù)執(zhí)行以下功能:
    1、 SPI 從機片選信號有效(拉低) ;
    2、 從 wdata 指針讀取數(shù)據(jù),通過 SPI 接口傳輸總共 write_length 字節(jié)的數(shù)據(jù),丟棄 MISO接口輸入的數(shù)據(jù);
    3、 讀 read_length 個字節(jié)的數(shù)據(jù),存儲到 read_data 指針指向的地址。讀傳輸過程中 MOSI 被置為 0;
    4、 撤銷 SPI 從機片選信號(拉高)。
    頭文件<altera_avalon_spi.h>,該頭文件定義了 SPI 核的寄存器映射和訪問硬件可用的一些特征常量。

這個函數(shù)的最大缺點就是不可以在中斷中使用,但這并不影響對它的使用。NRF24L01在單片機和FPGA上的應用的本質是一樣的,主要區(qū)別就是對上面的A、B  SPI方式進行改寫。

A   就是用alt_avalon_spi_command();代替,是不是很方便呢。:-D

B  以SPI方式對寄存器的操作

View Code

   

  跟單片機相比,是不是覺得看得清晰點呢。這就是這個函數(shù)的方便之處了。有一點要注意一下,這個函數(shù)的最后一個參數(shù)的作用,以前沒注意,走過一段彎路,它的作用就是相當于上面單片機中的CSN信號,如果需要對SPI從器件進行連續(xù)訪問,則不釋放該信號可以提高訪問速度。

  好了,差不多就總結到這里了。無線模塊的應用很廣泛,可以用作無線遙控器、數(shù)據(jù)的無線燒寫等用途。有想法的可以一起討論。


 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多