基于stm32的2.4G 模塊傳輸 nrf24c01 支持雙機通信 主從收發源碼
//
實驗步驟:
1、實驗代碼包含兩部分,分別燒錄到兩個開發板上。
2、從機先上電,主機然后上電,因為實驗是主機給從機先發數據。
3、將串口接到從機或主機上,均可看到實驗數據。
單片機源程序(主機+叢機)如下:
- /******************** (C) COPYRIGHT 2013 **************************
- * 文件名 :main.c
- * 描述 :NRF24L01無線w傳輸測試實驗
- * 實驗平臺: STM32開發板
- * 庫版本 :ST3.5.0
- **********************************************************************************/
- #include "stm32f10x.h"
- #include "SPI_NRF.h"
- #include "usart1.h"
- u8 status; //用于判斷接收/發送狀態
- u8 txbuf[4]={0,1,2,3}; //發送緩沖
- u8 rxbuf[4]; //接收緩沖
- int i=0;
- int main(void)
- {
-
- SPI_NRF_Init();
-
- /* 串口1初始化 */
- USART1_Config();
- printf("\r\n 這是一個 NRF24L01 無線傳輸實驗 \r\n");
- printf("\r\n 這是無線傳輸 主機端 的反饋信息\r\n");
- printf("\r\n 正在檢測NRF與MCU是否正常連接。。。\r\n");
- /*檢測NRF模塊與MCU的連接*/
- status = NRF_Check();
- /*判斷連接狀態*/
- if(status == SUCCESS)
- printf("\r\n NRF與MCU連接成功!\r\n");
- else
- printf("\r\n NRF與MCU連接失敗,請重新檢查接線。\r\n");
- while(1)
- {
- printf("\r\n 主機端 進入自應答發送模式\r\n");
- NRF_TX_Mode();
-
- /*開始發送數據*/
- status = NRF_Tx_Dat(txbuf);
-
- /*判斷發送狀態*/
- switch(status)
- {
- case MAX_RT:
- printf("\r\n 主機端 沒接收到應答信號,發送次數超過限定值,發送失敗。 \r\n");
- break;
-
- case ERROR:
- printf("\r\n 未知原因導致發送失敗。 \r\n");
- break;
-
- case TX_DS:
- printf("\r\n 主機端 接收到 從機端 的應答信號,發送成功! \r\n");
- break;
- }
-
- printf("\r\n 主機端 進入接收模式。 \r\n");
- NRF_RX_Mode();
-
- /*等待接收數據*/
- status = NRF_Rx_Dat(rxbuf);
-
- /*判斷接收狀態*/
- switch(status)
- {
- case RX_DR:
- for(i=0;i<4;i++)
- {
- printf("\r\n 主機端 接收到 從機端 發送的數據為:%d \r\n",rxbuf[i]);
- txbuf[i] =rxbuf[i];
- }
- break;
-
- case ERROR:
- printf("\r\n 主機端 接收出錯。 \r\n");
- break;
- }
- }
- }
- /******************* (C) COPYRIGHT 2013 *****END OF FILE************/
復制代碼
所有資料51hei提供下載:
17-M3-2.4G(NRF24L01 ).rar
(2.17 MB, 下載次數: 209)
2018-4-9 16:16 上傳
點擊文件名下載附件
|