隨著科學技術水平的不斷提高,傳統的有線通信因自身的局限性已越來越不能滿足人們的需要,無線通信技術得到了快速發展。如今出現了種類眾多的無線通信技術,目前比較熱門的有WiFi、藍牙、UWB、ZigBee、Nordic nRF以及TI公司的SimpliciTI等。不同無線通信技術在成本、功耗、傳輸速率、使用頻段、功能方面有很大區別,針對不同的需求要選擇適合的無線技術。
針對便攜式設備的低成本、低功耗要求,藍牙和WiFi功耗相對較大,UWB規范尚不統一且芯片價格高,Zigbee的傳輸速率受限僅250 kbit/s,SimpliciTI則受TI公司硬件平臺限制。綜合考慮各個因素,本系統采用了NordicSemiconductor公司2.4 GHz低成本高性能的nRF24L01無線射頻芯片,由低功耗ARM系列STM32L152RD微處理器控制,實現短距離無線數據通信。nRF24L01不僅可以提供一個真正的超低功耗解決方案,而且也擁有優良的共存性,其載波監測功能保證了在WLAN干擾下的可靠通信。高速的頻率切換時間減少了與藍牙等跳頻系統出現互相干擾的可能。
1硬件設計
系統的設計思路是在滿足高速傳輸數據的同時盡可能的降低功耗,故在MCU與無線芯片的選型上側重于性能和功耗的平衡。系統硬件部分采用模塊化的設計思想,主要由供電模塊,nRF24L01射頻模塊和微控制器模塊組成。其中供電模塊根據實際需求方案很多,本文就不詳細敘述了。
1.1 nRF24L01射頻模塊
nRF24L01是由Nordic Semiconductor公司出品的GF-SK單片式收發芯片,工作于2.4~2.5 GHz的世界通用(ISM)頻段,傳輸速率可達2 Mbit/s。芯片包括頻率發生器、功率放大器、增強型SchockBurstTM模式控制器、晶振和調制解調器。發射功率和頻道選擇等工作參數可以通過SPI接口進行設置。增強型ShockBurstTM功能使軟件設計更為簡單,集成了雙向通信所需要的鏈路層,而通常這些功能需要一個高速的MCU和大空間的存儲器和高的電源消耗來實現。nRF24L01及外部接口如圖1所示。
1.2微控制器模塊
STM32L152RD基于高品質的ARM Cortex-M3內核,融合了高性能和超低功耗的特性,內置高速存儲器,工作頻率為32 MHz。它采用了優化的節能架構與0.13μm的STMicroelectronics超低漏電生產工藝,此外,為了實現超低功耗,STM32L152RD還劃分了6種工作模式,使其在任何設定時間內都能以最低的功耗完成任務。STM32控制器的SPI(串行外設接口)允許芯片與外部設備以全雙工或者半雙工、同步、串行方式通信,可用于多種用途,包括使用一條雙向數據線的雙線單工同步傳輸,還可使用CRC校驗的可靠通信。
通常SPI通過4個管腳與外部器件相連。MISO:主設備輸入/從設備輸出管腳,該管腳在從模式下發送數據,在主模式下接收數據;MOSI:主設備輸出/從設備輸入管腳,該管腳在主模式下發送數據,在從模式下接收數據;SCK:串口時鐘,作為主設備的輸出,從設備的輸入;NSS:從設備選擇。這是一個可選的管腳,用來選擇主/從設備。
系統除了使用MCU這4個管腳與無線模塊相連,還通過PA0管腳控制nRF24L01的片選端CE,PB0管腳控制中斷響應。圖2是微控制器模塊STM32L152RD與nRF24L01的接口電路原理圖。
2軟件設計
nRF24L01無線射頻芯片內置的鏈路層使軟件設計更為簡單,系統進行無線通信無須配置復雜的通信協議,只需編程配置好射頻芯片與MCU的SPI通信接口,然后在發送時將有效數據放入TX緩沖區,芯片將把地址信息和TX緩沖區的有效數據與內部自行產生的數據頭、標志位和CRC校驗碼等信息結合起來進行數據打包并發送出去。表1給出增強型的ShockBurstTM模式的數據包。整個系統的軟件設計部分分為初始化操作、配置發送模式、配置接收模式、配置中斷4部分。
2.1初始化操作
無線射頻芯片nRF24L01要進行無線通信,首先要對MCU的時鐘,MCU的SPI通信口和nRF24L01進行初始化操作[5]。MCU時鐘和SPI接口初始化部分STM32L152RD的芯片資料很詳細,在此就不詳細敘述了。nRF24L01的初始化主要包括地址、應答方式、工作頻率、數據長度、發射速率、中斷響應等參數的配置。nRF24L01初始化操作的流程圖如圖3所示。
2.2配置發送模式
nRF24L01配置為增強型的ShockBurstTM發送模式,當MCU有數據要發送nRF24L01就會啟動Shock-BurstTM模式,自動生成數據頭、標志位和CRC校驗碼并發送數據。數據發送完畢后將轉到接收模式并等待接收端的ACK應答信號。如果沒有收到ACK應答信號,則認為數據丟失,nRF24L01將循環重發數據包,直到收到ACK或重發次數超過重發寄存器中設置的值為止。如果數據重發次數超過了初始設定值,則會產生數據溢出導致IRQ中斷。當收到ACK應答信號時,nRF24L01就認為最后一包數據已經發送成功,TX_FIFO寄存器中的數據被清除并產生IRQ中斷通知MCU。MCU根據任務需求控制nRF24L01進入發送模式,接收模式或待機模式。發送模式流程如圖4所示。
配置發送模式代碼如下:
void nRF24L01_TxPacket(unsigned char*tx_buf)
{
NRF24L01_MODE_CE_0();SPI_Write_Buf(WRITE_REG1+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//寫入接收地址
SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//寫入//要發送的數據
SPI_RW_Reg(WRITE_REG1+CONFIG,0x0e);//IRQ中斷,16位CRC
NRF24L01_MODE_CE_1();//CE置1,激發增強型的ShockBurstTM
發送模式
Delay_us(20);//注意延遲值不能太低
}
2.3配置接收模式
在增強型的ShockBurstTM接收模式[9]下,nRF24L01可以接收6路不同地址相同頻率的數據,每個數據通道擁有自己的地址,通過寄存器RX_ADDR_PX來配置。nRF24L01CE置高后130μs便自動檢測空中信息,當有通道接收到有效的地址和數據時,進行CRC校驗,正確則記錄地址并以此為目標地址發送應答信號ACK同時自動去除數據頭,標志位和校驗碼并將有效數據寫入RX_FIFO寄存器,芯片通過產生IRQ中斷通知MCU接收完畢,隨后MCU可從RX_FIFO寄存器讀出有效數據。如果CRC校驗錯誤則丟棄數據包重新檢測空中信息。當成功接收數據時,MCU可根據任務需求控制nRF24L01進入發送模式,接收模式或待機模式。接收模式流程如圖5所示。
配置接收模式代碼如下:
void nRF24L01_SetRX_Mode(void)
{
NRF24L01_MODE_CE_0();
SPI_RW_Reg(0xe2,0);//清接收FIFO
SPI_RW_Reg(WRITE_REG1+STATUS,0XFF);//清狀態寄存器
SPI_RW_Reg(WRITE_REG1+CONFIG,0x0F);//IRQ中斷,16位CRC
NRF24L01_MODE_CE_1();
}
2.4配置中斷
中斷機制是單片機的基礎設施之一,它起著通信網絡的作用,以協調系統對各種內外部時間的響應和處理。通過配置外部中斷,可以判斷數據發送和接收的情況,以便對相應事件做出處理。
配置中斷代碼如下:
void NRF24L01_INT_IRQHandler(void)
{
uint8_t status;status=0;
if(EXTI_GetITStatus(NRF24L01_IRQ_EXTI_LINE)!=RESET)
//判斷是否產生了EXTI2中斷
{
if(GPIO_ReadInputDataBit(NRF24L01_IRQ_GPIO_PORT,NRF24L01_IRQ_PIN)==0)//判斷是否是PA2線變低
status=SPI_Read(READ_REG1+STATUS);//讀狀態寄器
if(status&0x40)//如果接收到數據
{
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//將數據從RX緩沖區讀出
SPI_RW_Reg(0xe2,0);//清除發送緩沖區
}
else if((status&0x10)》0)//發射達到最大復發次數
SPI_RW_Reg(0xe1,0);//清除發送緩沖區
else if((status&0x20)》0)//發射后收到應答
SPI_RW_Reg(0xe1,0);SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//將數據從RX緩沖區讀出
SPI_RW_Reg(WRITE_REG1+STATUS,0xFF);//清除寄存器標志
}
EXTI_ClearITPendingBit(NRF24L01_IRQ_EXTI_LINE);//清除EXTI2上的中斷標志
}}
3分析驗證
為保證系統準確有效,現將本文方案與目前已有的幾種無線通信系統方案進行對比,其中系統綜合耗電的計算是通過無線芯片發射電流和接收電流的平均值與8 MHz工作時的MCU電流之和。對比分析如表2所示。
4結束語
提出了一種基于STM32L152RD微控制器和nRF24L01無線射頻芯片的超低功耗無線通信系統方案,并搭建了實際硬件系統,實現了超低功耗下的高速近距離無線數據傳輸。無工作任務時nRF24L01可進入掉電模式,STM32L152RD可進入休眠模式,系統功耗更低,特別滿足便攜式設備功耗盡可能低的要求。系統硬件電路簡單、成本低、傳輸速率快、可靠性好、具有良好的可擴展性,適用于對功耗有較高要求的便攜設備無線通信。
評論
查看更多