隨著微電子技術的迅速發展,高性能MCU廣泛地運用在嵌入式系統中,完成數據的采集、分析、處理與通訊功能。有線模式下的數據通訊系統,由于受時空、環境等因素的制約,不能完全滿足所有條件下任務的執行,而通過無線數據傳輸方式代替有線數據傳輸,則能很好地解決此類問題。綜上論述,文中提出一種基于高性能MCU和nRF24L01的網絡化無線通信系統的解決方案,穩定可靠地實現數據傳輸,滿足各種條件的需要。
1 系統硬件設計
1.1 nRF24L01無線通訊模塊介紹
系統選用云佳科技的nRF24L01無線射頻收發模塊來實現子母機間的通訊,它使用Nordic公司的nRF24L01芯片開發而成,是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片無線收發器芯片,其具有如下性能特點:
(1)低工作電源電壓,且范圍廣1.9~3.6 V,體積小巧,能方便集成到各種電子器件。
(2)極低的功耗。當工作在發射模式下發射功率為-6 dBm時電流消耗為9 mA,接收模式時為12.3 mA。待機模式下電流消22μA,掉電模式電流消耗僅為900 nA。
(3)無線速率達到2 Mbit?s-1,SPI接口速率為0~8 Mbit?s-1,具自動應答機制,極大地降低丟包率。
(4)擁有自動重發功能、地址及CRC校驗功能。
(5)具有125個可選工作頻道,擁有很短的頻道切換時間,可用于跳頻。
1.2 STC12L5608AD芯片簡介
STC12L5608AD型MCU是宏晶科技新一代低電壓增強型8051單片機,該系列單片機具有如下特性:寬工作電壓(2.1~3.6 V);具有1個時鐘/機器周期的高速性能,比普通8051快8~12倍,可用低頻晶振;自帶-8路10位AD轉換器等;加密性強,無法解密;超強抗干擾、高抗靜電、輕松過4 kV快速脈沖干擾(EFT測試)、寬溫度范圍(-40~85℃);超低功耗,正常工作模式2.7~7 mA,空閑模式1.8mA,掉電模式功耗<0.1μA;能在系統編程等。
1.3 硬件接口電路
nRF24L01通過SPI接口與外部單片機進行數據交換,CE作為片選端,它與CONFIG寄存器的PWR_UP和PRIM_RX位組合用于選擇芯片的工作方式;CSN為芯片內部SPI硬件接口的使能端,低電平有效;SCK為SPI的時鐘輸入端,MOSI為SPI接口的數據輸入端,MISO為SPI接口的數據輸出端,IRQ為中斷請求端,與單片機的外部中斷1相連,當nRF24L01產生中斷后IRQ將置低,單片機檢測到此中斷后通過程序得知其與nRF24L01無線射頻模塊的數據收發情況。通過單片機與無線通訊模塊的硬件連接,從而實現模式控制和數據交換。圖2給出兩模塊的硬件接口設計。整個無線通訊系統由3個模塊組成。
2 系統軟件設計
2.1 數據包處理方式
將nRF24L01配置成增強型ShockBurst模式,使得雙向鏈接協議執行更為簡易有效。發送方要求終端設備在接收數據后有應答信號,以便發送方檢測有無數據丟失。一旦數據丟失則通過重新發送功能將丟失的數據恢復。它可以同時控制應答及重發功能而無需增加MCU工作量。nR F24L01配置為增強型的ShockBurst發送模式下時,只要MCU有數據要發送,nRF24L01就會啟動ShockBurst模式來發送數據。在發送完數據后nRF24L01轉到接收模式并等待終端的應答信號。如未收到應答信號,nRF24L01將重發相同的數據包,直到收到應答信號或重發次數超過SETUP _RETR_ARC寄存器中設置的值為止。如果重發次數超過了設定值,則產生MAX_RT中斷。只要收到確認信號,nRF24L01就認為最后一包數據已經發送成功,把TX FIFO中的數據清除掉并產生TX_DS中斷,IRQ引腳置高。
nRF24L01在接收模式下可以接收6路不同通道的數據,如圖3所示。每個數據通道使用不同的地址,但共用相同的頻道。即6個不同的nRF 24L01設置為發送模式后,可以與同一個設置為接收模式的nRF24L01進行通訊,而設置為接收模式的nRF24L01可以對這6個發射端進行識別。n RF24L01在確認收到數據后記錄地址,并以此地址為目標地址發送應答信號。在發送端,數據通道0被用作接收應答信號。
2.2 系統軟件設計流程
程序基本思路為子模塊配置為接收狀態,如成功接收到數據則進行EEPROM子程序操作,否則切換成發射模式,成功發送并接收到應答信號后再變成接收模式,進入下一次接收發射循環;主模塊設置為接收數據信息狀態,能與多路處于發射狀態的數據通道進行通訊,并從接收到的數據中判別數據通道口;接收信息后自動回復應答信號。通過切換接收發射狀態實現多點對單點的雙向無線數據通訊。
2.2.1 nRF24L01初始化程序
nRF24L01初始化程序包括引腳初始化和中斷初始化。引腳初始化使芯片工作在待機模式下(CE=0),時鐘設置SCK低電平,片選不使能(CSN=1),工作在串行輸入狀態(MOSI=0);中斷初始化則使能外部中斷(EX1=1),低電平觸發。
2.2.2 nRF24L01配置接收/發射模式
對芯片內部的特殊功能寄存器進行初始化操作。
通過對CONFID配置設定其工作模式,設置接收地址,接收有效數據寬度、選擇射頻通道、數據傳輸率、發射功率等參數。配置完成后,置高CE,準備接收數據包,如表1所示。
2.2.3 單片機內部EEPROM應用子程序
單片機內部EEPROM應用子程序進行扇區的擦除、寫入以及讀出功能,實現系統信息的讀取保存。
STC12L5608AD單片機內部有8個扇區,每個扇區512 Byte。在使用時,統一修改的數據放在同一個扇區。使用ISP/IAP功能,所使用的特殊功能寄存器為ISP_DATA、ISP_ADDRH、ISP_ADDRL、ISP_CMD、ISP_TRIG、ISP_CONTR。扇區寫入數據流程圖如圖5所示,扇區擦除以及讀操作流程與之類似。
3 結束語
介紹了利用高性能MCU和nRF24L01芯片設計的網絡化無線通訊系統,說明了其軟硬件設計要點。該系統已應用于某故障監測系統中,系統成本低、體積小、傳輸速率高、具有良好的通用性和可靠性,可供無線數據傳輸系統參考。
審核編輯 黃宇
1 系統硬件設計
1.1 nRF24L01無線通訊模塊介紹
系統選用云佳科技的nRF24L01無線射頻收發模塊來實現子母機間的通訊,它使用Nordic公司的nRF24L01芯片開發而成,是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片無線收發器芯片,其具有如下性能特點:
(1)低工作電源電壓,且范圍廣1.9~3.6 V,體積小巧,能方便集成到各種電子器件。
(2)極低的功耗。當工作在發射模式下發射功率為-6 dBm時電流消耗為9 mA,接收模式時為12.3 mA。待機模式下電流消22μA,掉電模式電流消耗僅為900 nA。
(3)無線速率達到2 Mbit?s-1,SPI接口速率為0~8 Mbit?s-1,具自動應答機制,極大地降低丟包率。
(4)擁有自動重發功能、地址及CRC校驗功能。
(5)具有125個可選工作頻道,擁有很短的頻道切換時間,可用于跳頻。
1.2 STC12L5608AD芯片簡介
STC12L5608AD型MCU是宏晶科技新一代低電壓增強型8051單片機,該系列單片機具有如下特性:寬工作電壓(2.1~3.6 V);具有1個時鐘/機器周期的高速性能,比普通8051快8~12倍,可用低頻晶振;自帶-8路10位AD轉換器等;加密性強,無法解密;超強抗干擾、高抗靜電、輕松過4 kV快速脈沖干擾(EFT測試)、寬溫度范圍(-40~85℃);超低功耗,正常工作模式2.7~7 mA,空閑模式1.8mA,掉電模式功耗<0.1μA;能在系統編程等。
1.3 硬件接口電路
nRF24L01通過SPI接口與外部單片機進行數據交換,CE作為片選端,它與CONFIG寄存器的PWR_UP和PRIM_RX位組合用于選擇芯片的工作方式;CSN為芯片內部SPI硬件接口的使能端,低電平有效;SCK為SPI的時鐘輸入端,MOSI為SPI接口的數據輸入端,MISO為SPI接口的數據輸出端,IRQ為中斷請求端,與單片機的外部中斷1相連,當nRF24L01產生中斷后IRQ將置低,單片機檢測到此中斷后通過程序得知其與nRF24L01無線射頻模塊的數據收發情況。通過單片機與無線通訊模塊的硬件連接,從而實現模式控制和數據交換。圖2給出兩模塊的硬件接口設計。整個無線通訊系統由3個模塊組成。
2 系統軟件設計
2.1 數據包處理方式
將nRF24L01配置成增強型ShockBurst模式,使得雙向鏈接協議執行更為簡易有效。發送方要求終端設備在接收數據后有應答信號,以便發送方檢測有無數據丟失。一旦數據丟失則通過重新發送功能將丟失的數據恢復。它可以同時控制應答及重發功能而無需增加MCU工作量。nR F24L01配置為增強型的ShockBurst發送模式下時,只要MCU有數據要發送,nRF24L01就會啟動ShockBurst模式來發送數據。在發送完數據后nRF24L01轉到接收模式并等待終端的應答信號。如未收到應答信號,nRF24L01將重發相同的數據包,直到收到應答信號或重發次數超過SETUP _RETR_ARC寄存器中設置的值為止。如果重發次數超過了設定值,則產生MAX_RT中斷。只要收到確認信號,nRF24L01就認為最后一包數據已經發送成功,把TX FIFO中的數據清除掉并產生TX_DS中斷,IRQ引腳置高。
nRF24L01在接收模式下可以接收6路不同通道的數據,如圖3所示。每個數據通道使用不同的地址,但共用相同的頻道。即6個不同的nRF 24L01設置為發送模式后,可以與同一個設置為接收模式的nRF24L01進行通訊,而設置為接收模式的nRF24L01可以對這6個發射端進行識別。n RF24L01在確認收到數據后記錄地址,并以此地址為目標地址發送應答信號。在發送端,數據通道0被用作接收應答信號。
2.2 系統軟件設計流程
程序基本思路為子模塊配置為接收狀態,如成功接收到數據則進行EEPROM子程序操作,否則切換成發射模式,成功發送并接收到應答信號后再變成接收模式,進入下一次接收發射循環;主模塊設置為接收數據信息狀態,能與多路處于發射狀態的數據通道進行通訊,并從接收到的數據中判別數據通道口;接收信息后自動回復應答信號。通過切換接收發射狀態實現多點對單點的雙向無線數據通訊。
2.2.1 nRF24L01初始化程序
nRF24L01初始化程序包括引腳初始化和中斷初始化。引腳初始化使芯片工作在待機模式下(CE=0),時鐘設置SCK低電平,片選不使能(CSN=1),工作在串行輸入狀態(MOSI=0);中斷初始化則使能外部中斷(EX1=1),低電平觸發。
2.2.2 nRF24L01配置接收/發射模式
對芯片內部的特殊功能寄存器進行初始化操作。
通過對CONFID配置設定其工作模式,設置接收地址,接收有效數據寬度、選擇射頻通道、數據傳輸率、發射功率等參數。配置完成后,置高CE,準備接收數據包,如表1所示。
2.2.3 單片機內部EEPROM應用子程序
單片機內部EEPROM應用子程序進行扇區的擦除、寫入以及讀出功能,實現系統信息的讀取保存。
STC12L5608AD單片機內部有8個扇區,每個扇區512 Byte。在使用時,統一修改的數據放在同一個扇區。使用ISP/IAP功能,所使用的特殊功能寄存器為ISP_DATA、ISP_ADDRH、ISP_ADDRL、ISP_CMD、ISP_TRIG、ISP_CONTR。扇區寫入數據流程圖如圖5所示,扇區擦除以及讀操作流程與之類似。
3 結束語
介紹了利用高性能MCU和nRF24L01芯片設計的網絡化無線通訊系統,說明了其軟硬件設計要點。該系統已應用于某故障監測系統中,系統成本低、體積小、傳輸速率高、具有良好的通用性和可靠性,可供無線數據傳輸系統參考。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
芯片
+關注
關注
463文章
54010瀏覽量
466104 -
mcu
+關注
關注
147文章
18925瀏覽量
398235 -
無線通訊
+關注
關注
6文章
673瀏覽量
41620
發布評論請先 登錄
相關推薦
熱點推薦
SI24R2B 單發Tx發射芯片功耗低 可兼容NRF24L01P
SI24R2是在SI24R1的基礎上,單獨分出來發射部分TX,成為一顆2.4G 單TX。可與NRF24L01P以及SI24R1通信,替代
發表于 01-28 11:46
SI24R1:一款低功耗國產兼容 NRF24L01+開發資料
影響無線通信。故,用戶可以更改電源走線設計,LDO出來后分兩路,一路給到RF,一路給到MCU+ADC。3.用戶一直在使用nRF24L01P,替換成Si24R1后發現功耗突然大了許多。解
發表于 01-28 10:50
Arduino UNO 可視化GT-24工業級無線透傳
一、前言 無線透傳市面上較為常見的是基于藍牙、esp的多種透傳模塊,今天介紹的則是用NRF24L01芯片構成的電路。(nRF24L01是由NORDIC生產的工作在2.4GHz~2.5GHz的ISM
NRF24L01——2.4GHz無線通信
對于學習嵌入式中的通信,可能會用到這個模塊,該模塊應用的是si24r1芯片。
一、si24r1簡介: Si24R1 是一顆工作在 2.4GHz ISM 頻段,專為低功耗
發表于 12-30 14:08
SI24R1完美代替NRF24L01
NRF24L01無線模塊廣泛地運用于:無線門禁、無線數據通訊、安防系統、遙控裝置、遙感勘測、智能運動設備、工業傳感器;平常我們用到的
發表于 11-28 11:10
使用NRF24l01軟件包注冊設備失敗怎么解決?
1.根據軟件包提示第一步先打開了SPI驅動框架
2.然后軟件包添加了 nrf24l01最新版本以及demo、debug
3.在board.h #define using_spi1 在board.c
發表于 09-23 06:51
官網nrf24l01的例程demo會出現互斥鎖報錯是為什么?
我在用nrf24L01官網下載的例程包,用stm32進行開發,串口助手顯示互斥鎖錯誤,有朋友遇到這個問題嗎
發表于 09-10 06:05
SI24R1:答題卡方案芯片替代NRF24L01+
SI24R1簡介Si24R1低功耗2.4GHz收發一體射頻芯片量產于2012年,由于其一致性穩定性高、功耗低、遠距離、兼容替代NRF24L01+,兼容NORDIC 2.4GHz協議等特點,一直
發表于 07-31 10:29
nRF54L15 # 超低功耗無線 SoC
nRF54L15 概述 *附件:nRF54L15_nRF54L10_nRF54L05_Preliminary_Datasheet_v0.9.pdf 特征 128 MHz Arm Cortex-M33
基于nRF24L01+的2.4GHz無線模塊設計與應用
nRF24L01+是一款由Nordic Semiconductor設計的單片射頻收發芯片,工作于2.4~2.5GHz ISM頻段,采用GFSK調制技術,支持高達2Mbps的數據傳輸速率,具備低功耗特性,適用于2.4G無線通信應用場景。
stmf103c8t6使用nrf24l01發送和接收數據,接收端STATUS寄存器的值始終為0x0E, FIFO_STATUS的值為0x11。
stmf103c8t6使用nrf24l01發送和接收數據,通過失能自動應答,發送端調通了,但是接收端始終無法收到消息,下面是接收端的主要代碼:
void NRF24L01_Init(void
發表于 04-19 23:32
?nRF54L05/nrf54系列—超低功耗無線 SoC 支持4Mbps速率
nRF54L05與nRF54L15和nRF54L10共同組成了nRF54L系列。nRF54L系列中的所有
發表于 03-25 11:26
基于MCU和nRF24L01的無線通信系統
評論