久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3075|回復: 0
收起左側

nrf24l01帶數據返回的ack,等價于主從式被動全雙工收發(不用切換收發)可變數據長度

[復制鏈接]
ID:966734 發表于 2021-9-17 12:58 | 顯示全部樓層 |閱讀模式
nrf24l01帶數據返回的ack,等價于主從式被動全雙工收發(不用切換收發),并且可以實現變數據長度收發
之前求助過,沒能解決,最近閑,研究了下。ack數據很多漢語的參考手冊沒有介紹,看的話看原版的英語nrf24l01 手冊

1:變數據長度是指0-32長度,可以發送的時候指定
2:帶數據返回的ack,就是開啟應答,一般情況是通過應答看是否發送成功,這個ack可以帶返回數據,實現不切換收發模式的偽雙工
3:nrf24l01有三個緩沖區,例子中是收到數據才裝載ack緩沖區,所以前兩次收到的ack數據是隨機的,第三次才是發送過去的數據ack回來,;實際應用的時候可以提前裝載ack數據,那么收到數據就會自動把ack緩沖區的數據聯通ack發出去(程序內有說明)

1.png 1.png
三個緩沖區,先進先出 first in – first out,第一個截圖最后說了,要是保證緩存的就是要發送的,請清除FLUSH_TX 但是實際沒用好像,待測試
If the TX FIFO (PRX) contains more than one payload to a PTX, payloads are handled using the first in –
first out principle. The TX FIFO (PRX) is blocked if all pending payloads are addressed to a PTX where the
link is lost. In this case, the MCU can flush the TX FIFO (PRX) by using the FLUSH_TX command.也就是修改下面這個函數
void NRF24L01_PacketAckData(u8*pBuf,u8 len)//發送數據包,用于發送模式2/4
{
         NRF24L01_CE=0;        
         NRF24L01_Write_Buf(W_ACK_PAYLOAD,pBuf,len);
         NRF24L01_CE=1;        
}
void NRF24L01_PacketAckData(u8*pBuf,u8 len)//發送數據包,用于發送模式2/4
{
         NRF24L01_CE=0;        
         NRF24L01_Write_Reg(FLUSH_TX, 0xff);
         NRF24L01_Write_Buf(W_ACK_PAYLOAD,pBuf,len);
         NRF24L01_CE=1;        
}
不過也僅限于提前裝載ack數據的方案

發送程序:

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart1.h"
  4. #include "nRF24L01.h"
  5. #include<stdlib.h>   //包含函數rand()聲明的頭文件


  6. int main()
  7. {        
  8.         u8 i,sta,tx_len=1;         
  9.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //設置NVIC中斷分組4:  16位搶占優先級0,15最好不用
  10.         delay_init();        
  11.         USART1_Init(115200);
  12.         printf("OK...\r\n\r\n\r\n");

  13.         NRF24L01_Init();                    //初始化NRF24L01

  14.         while(NRF24L01_Check())
  15.         {
  16.         printf("NRF24L01 Error\r\n");
  17.         delay_ms(1000);
  18.         }
  19.         printf("TX NRF24L01 OK\r\n");
  20.   
  21.         NRF24L01_TX_Mode();
  22.             
  23.     for(i=1;i<32;i++)
  24.         TX_BUF[i]=i;
  25.     TX_BUF[1]=10;
  26.         while(1)
  27.         {        

  28.                 sta=NRF24L01_TxPacket(TX_BUF,tx_len,RX_BUF,&RX_ACK_NUM);//發送數據

  29.                 if(sta&TX_OK)//顯示要發送的數據
  30.                 {
  31.             //發送成功打印發送的數據
  32.                         printf("TX_OK       TX_BUF:");
  33.                         for(i=0;i<tx_len;i++)printf("%2d,",TX_BUF[i]);
  34.                         printf("\r\n");
  35.             
  36.             //發送成功一次變化一次長度
  37.             tx_len++;
  38.             if(tx_len>32)tx_len=1;//測試變數據長度發送,每次長度加1,最大32,變為1

  39.             //填充新數據
  40.             TX_BUF[0]=tx_len;//第一個代表發送長度
  41.             TX_BUF[1]++;     //加加數 用于看ack響應延時幀數
  42.             
  43.             //長度大于1最后一個隨機個數 用于看數據是否變化
  44.             if (tx_len>=2)
  45.                 TX_BUF[tx_len-1]=rand()%10;        //賦值發送的數據        ,第一個數每次加1改變,最后一個數隨機,中間的1 2 3、、、                 
  46.                 }
  47.                 if(sta&RX_OK)//顯示接收到的ack數據 連續證明不丟幀
  48.                 {
  49.                         printf("RX_ACK_OK   RX_BUF:");                           
  50.                         for(i=0;i<RX_ACK_NUM;i++)printf("%2d,",RX_BUF[i]);
  51.                         printf("\r\n");        
  52.                 }
  53.                 delay_ms(10);
  54.         }
  55. }

復制代碼

注意看說明書有的舊的nrf24l01不支持ack帶data
代碼下載: nrf24l01_ack調通帶備注.7z (206.84 KB, 下載次數: 54)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品爱久久久久久久 | 在线视频 欧美日韩 | 成人在线一区二区三区 | 欧美一级久久精品 | 亚洲成人在线免费 | 久久久久久久久久久久久久av | 国产成人精品一区二区三区在线 | 国产成人99久久亚洲综合精品 | 黑人性hd | 国产一区二区三区视频 | 亚洲精品1区 | 久久综合伊人 | 精品国产一区二区三区久久久蜜月 | 特黄色一级毛片 | 在线看免费的a | 成人福利片 | 天天玩夜夜操 | 黄色在线免费观看视频网站 | www天天操| 久久久妇女国产精品影视 | 国产精品久久国产精品99 | 日本久草 | 久久久国产网站 | 91精品中文字幕一区二区三区 | 视频一区二区中文字幕日韩 | 日韩爱爱网 | 紧缚调教一区二区三区视频 | 99久久久久 | 日本不卡高清视频 | 久久网站免费视频 | 不卡欧美 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 网站黄色在线免费观看 | 免费三级网站 | 精品一二三 | 中文字幕中文字幕 | 黄色免费在线网址 | 亚洲精品乱码8久久久久久日本 | 亚洲在线一区 | 精品一区二区三区四区 | 久久久入口 |