先簡單的介紹下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,
該函數(shù)執(zhí)行以下功能: 這個函數(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ù)的無線燒寫等用途。有想法的可以一起討論。
|
|