<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用RF BASIC模擬廣播和RF PHY是差不多的,

      1.修改接入地址:#define   AA           0X8e89bed6;

      2.修改通信信道為37 38 39當中一個:#define TEST_FREQUENCY 37 // 通信頻點

      3.根據需要使能和關閉ACK:#define WAIT_ACK 0 // 是否使能ACK

      4.修改數據長度:#define TEST_DATA_LEN 11 // 數據長度
      5.將模式修改為發送模式:#define  TEST_MODE     MODE_TX            // 發送模式

      6.修改數據長度:

      // 初始化發送的數據
      //廣播類型
      TxBuf[0] = 0x02;
      //數據長度(MAC地址長度+數據長度)
      TxBuf[1] =0x09;
      //mac地址
      TxBuf[2] = 0x84;
      TxBuf[3] = 0xc2;
      TxBuf[4] = 0xe4;
      TxBuf[5] = 0x03;
      TxBuf[6] = 0x02;
      TxBuf[7] = 0x22;
      //廣播數據
      TxBuf[8] = 0x02;
      TxBuf[9] = 0x09;
      TxBuf[10] = 0x55;
      rf_tx_start( TxBuf );

      7.開啟白話:

      gTxParam.properties = 0;

      下面是完整的.c和.h文件可以直接復制粘貼測試:

      rf_basic.c

      /********************************** (C) COPYRIGHT *******************************
       * File Name          : rf_basic.c
       * Author             : WCH
       * Version            : V1.0
       * Date               : 2024/08/15
       * Description        : 2.4G庫基本模式收發測試例程
       *
       *                      功率設置
       *                      RFIP_SetTxPower
       *                      1. 支持-20dBm ~ 4dBm 動態調整
       *
       *                      發送狀態切換穩定時間
       *                      RFIP_SetTxDelayTime
       *                      1.如果需要切換通道發送,穩定時間不低于80us
       *
       * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
       * SPDX-License-Identifier: Apache-2.0
       *******************************************************************************/
      
      /******************************************************************************/
      /* 頭文件包含 */
      #include "rf_basic.h"
      
      /*********************************************************************
       * GLOBAL TYPEDEFS
       */
      #define  ALIGNED4(x)       ((x+3)/4*4)
      
      rfipTx_t gTxParam;
      rfipRx_t gRxParam;
      
      __attribute__((__aligned__(4))) uint8_t TxBuf[64];
      __attribute__((__aligned__(4))) uint8_t RxBuf[264]; // 接收DMA buf不能小于264字節
      
      #define  MODE_RX     0
      #define  MODE_TX     1
      
      #define  WAIT_ACK         0               // 是否使能ACK
      #define  TEST_DATA_LEN    11               // 數據長度
      #define  TEST_FREQUENCY   37              // 通信頻點
      
      #define  TEST_MODE     MODE_TX            // 發送模式
      //#define  TEST_MODE     MODE_RX            // 接收模式
      
      #define  RF_DEVICE_PERIDOC    40
      
      uint32_t volatile gTxCount;
      uint32_t volatile gRxCount;
      volatile int Rssi_sum=0;
      
      /******************************** 發送相關函數 ********************************/
      /**
       * @brief   配置發送的頻點
       *
       * @param   f - 需要配置的頻點
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_tx_set_frequency( uint32_t f )
      {
          gTxParam.frequency = f;
      }
      
      /*******************************************************************************
       * @brief   配置發送的地址
       *
       * @param   sync_word - 需要配置的接入地址
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_tx_set_sync_word( uint32_t sync_word )
      {
          gTxParam.accessAddress = sync_word;
      }
      
      /*******************************************************************************
       * @brief   rf發送數據子程序
       *
       * @param   pBuf - 發送的DMA地址
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_tx_start( uint8_t *pBuf )
      {
          //    RFRole_Stop();
          // 配置發送的頻點
          gTxParam.frequency = TEST_FREQUENCY;
          // 發送的DMA地址
          gTxParam.txDMA = (uint32_t)pBuf;
          gTxParam.waitTime = 40*2; // 如果需要切換通道發送,穩定時間不低于80us
          RFIP_StartTx( &gTxParam );
      }
      
      /******************************** 接收相關函數 ********************************/
      /**
       * @brief   配置接收的地址
       *
       * @param   sync_word - 需要配置的接入地址
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_rx_set_sync_word( uint32_t sync_word )
      {
          gRxParam.accessAddress = sync_word;
      }
      
      /*******************************************************************************
       * @fn      rf_rx_set_frequency
       *
       * @param   f - 需要配置的頻點
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_rx_set_frequency( uint32_t f )
      {
          gRxParam.frequency = f;
      }
      
      /*******************************************************************************
       * @fn      rf_rx_start
       *
       * @brief   rf接收數據子程序
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_rx_start( void )
      {
          // 配置發送的頻點
          gRxParam.frequency = TEST_FREQUENCY;
          // 配置接收的超時時間,0則無超時
          gRxParam.timeOut = 0;
          RFIP_SetRx( &gRxParam );
      }
      
      /*******************************************************************************
       * @fn      rf_rx_process_data
       *
       * @brief   rf接收數據處理
       *
       * @return  None.
       */
      __HIGH_CODE
      void rf_rx_process_data( void )
      {
          gRxCount ++;
          {
              uint8_t *pData = (uint8_t *)gRxParam.rxDMA;
              Rssi_sum += (int8_t)pData[TEST_DATA_LEN+2];
      //        PRINT("#R %d\n",(int8_t)pData[6]);
      //        for( int i=0;i<4;i++ )
      //        {
      //            PRINT("%x\t",pData[i]);
      //        }
      //        PRINT("\n");
          }
      }
      
      /*******************************************************************************
       * @fn      LLE_IRQHandler
       *
       * @brief   LLE_IRQHandler
       *
       * @return  None.
       */
      __INTERRUPT
      __HIGH_CODE
      void LLE_IRQHandler( void )
      {
          LLE_LibIRQHandler( );
      }
      
      /*******************************************************************************
       * @fn      BB_IRQHandler
       *
       * @brief   BB_IRQHandler
       *
       * @return  None.
       */
      __INTERRUPT
      __HIGH_CODE
      void BB_IRQHandler( void )
      {
          BB_LibIRQHandler( );
      }
      
      /*******************************************************************************
       * @fn      RF_ProcessCallBack
       *
       * @brief   rf中斷處理程序
       *
       * @param   sta - 中斷狀態.
       *          id - 保留
       *
       * @return  None.
       */
      __HIGH_CODE
      void RF_ProcessCallBack( rfRole_States_t sta,uint8_t id  )
      {
          if( sta&RF_STATE_RX )
          {
              rf_rx_process_data();
      #if( TEST_MODE == MODE_RX )
      #if( WAIT_ACK )
              TxBuf[0] = 0x0d;
              TxBuf[1] = 0;
              rf_tx_start( TxBuf );
      #else
              rf_rx_start( );
      #endif
      #endif
          }
          if( sta&RF_STATE_RX_CRCERR )
          {
      #if( TEST_MODE == MODE_RX )
              rf_rx_start( );
      #endif
          }
          if( sta&RF_STATE_TX_FINISH )
          {
      #if( WAIT_ACK )
              rf_rx_start( );
      #endif
              gTxCount ++;
          }
          if( sta&RF_STATE_TIMEOUT )
          {
              PRINT("error.\n");   // rx地址匹配但接收超時,如果是發送則是發送失敗
      #if( TEST_MODE ==  MODE_RX )
              rf_rx_start( );
      #endif
          }
      }
      
      /*********************************************************************
       * @fn      TMR0_IRQHandler
       *
       * @brief   TMR0中斷函數
       *
       * @return  none
       */
      __INTERRUPT
      __HIGH_CODE
      void TMR_IRQHandler(void) // TMR 定時中斷
      {
          if(TMR_GetITFlag(TMR_IT_CYC_END))
          {
              TMR_ClearITFlag(TMR_IT_CYC_END); // 清除中斷標志
      #if( TEST_MODE == MODE_RX )
              PRINT("rx %d, rssi %d\n",gRxCount, (Rssi_sum/(int)gRxCount));
              gRxCount = 0;
              Rssi_sum = 0;
      #else
              // 初始化發送的數據
              //廣播類型
              TxBuf[0] = 0x02;     
              //數據長度(MAC地址長度+數據長度)
              TxBuf[1] =0x09;              
              //mac地址
              TxBuf[2] = 0x84;
              TxBuf[3] = 0xc2;
              TxBuf[4] = 0xe4;
              TxBuf[5] = 0x03;
              TxBuf[6] = 0x02;
              TxBuf[7] = 0x22;
              //廣播數據
              TxBuf[8] = 0x02;
               TxBuf[9] = 0x09;
               TxBuf[10] = 0x55;
              rf_tx_start( TxBuf );
      #endif
          }
      }
      
      /*******************************************************************************
       * @fn      RFRole_Init
       *
       * @brief   RF應用層初始化
       *
       * @param   None.
       *
       * @return  None.
       */
      void RFRole_Init(void)
      {
          sys_safe_access_enable( );
          R32_MISC_CTRL = (R32_MISC_CTRL&(~(0x3f<<24)))|(0xe<<24);
          sys_safe_access_disable( );
      
      #if(PHY_2G4_MODE == 1 )
          PKT_DET_CFG4(0x78);
      #endif
      
          {
              rfRoleConfig_t conf ={0};
              conf.rfProcessCB = RF_ProcessCallBack;
              conf.processMask = RF_STATE_RX|RF_STATE_RX_CRCERR|RF_STATE_TX_FINISH|RF_STATE_TIMEOUT;
              RFRole_BasicInit( &conf );
          }
          TPROPERTIES_CFG Properties;
          {
              Properties.cfgVal = BB_WHITENING_OFF|TEST_PHY_MODE;
      #if(TEST_PHY_MODE == PHY_MODE_2G4 )
              Properties.lengthCrc = CRC_LEN;
              Properties.ctlFiled = CTL_FILED;
              Properties.lengthAA = AA_LEN;
              Properties.lengthPreamble = PRE_LEN;
              Properties.dplEnable = DPL_EN;
              Properties.mode2G4 = MODE_2G4;
              Properties.bitOrderData = DATA_ORDER;
              Properties.crcXOREnable = CRC_XOR_EN;
      #endif
              PRINT("cfgVal=%x\n",Properties.cfgVal);
          }
      
          // TX相關參數,全局變量
          {
              gTxParam.accessAddress = AA;
              gTxParam.accessAddressEx = AA_EX;
              gTxParam.crcInit = CRC_INIT;
              gTxParam.crcPoly = CRC_POLY;
              gTxParam.properties = 0;
              gTxParam.waitTime = 80*2;
              gTxParam.txPowerVal = LL_TX_POWEER_0_DBM;
              gTxParam.whiteChannel=0x37;
              gTxParam.txLen = TEST_DATA_LEN;
          }
      
          // RX相關參數,全局變量
          {
              gRxParam.accessAddress = AA;
              gRxParam.accessAddressEx = AA_EX;
              gRxParam.crcInit = CRC_INIT;
              gRxParam.crcPoly = CRC_POLY;
              gRxParam.properties = Properties.cfgVal;
              gRxParam.rxDMA = (uint32_t)RxBuf;
              gRxParam.rxMaxLen = TEST_DATA_LEN;
          }
          PFIC_EnableIRQ( BLEB_IRQn );
          PFIC_EnableIRQ( BLEL_IRQn );
      
      #if( TEST_MODE == MODE_RX )
          PRINT("----------------- rx -----------------\n");
          gTxCount = 0;
          gRxCount = 0;
          PRINT("start rx...%d\n",GetSysClock());
          rf_rx_start();
          TMR_TimerInit( GetSysClock() / 2 ); // 500ms統計一次
          TMR_ITCfg(ENABLE, TMR_IT_CYC_END);  // 開啟中斷
          PFIC_EnableIRQ(TMR_IRQn);
      #else
          PRINT("----------------- tx -----------------\n");
          gTxCount = 0;
          gRxCount = 0;
          PRINT("start tx timer...\n");
          TMR_TimerInit( GetSysClock() / RF_DEVICE_PERIDOC );
      
          TMR_ITCfg(ENABLE, TMR_IT_CYC_END); // 開啟中斷
          PFIC_EnableIRQ(TMR_IRQn);
      #endif
      }
      
      /******************************** endfile @rf ******************************/

      rf_basic.h

      /********************************** (C) COPYRIGHT *******************************
      * File Name          : rf_test.h
      * Author             : WCH
      * Version            : V1.0
      * Date               : 2022/03/10
      * Description        : 
      *******************************************************************************/
      
      #ifndef __RF_TEST_H
      #define __RF_TEST_H
      
      #ifdef __cplusplus
      extern "C"
      {
      #endif
      #include <CH572rf.h>
      #include "CH57x_common.h"
      
      #define  TEST_PHY_MODE   PHY_MODE_PHY_1M
      #if(TEST_PHY_MODE == PHY_MODE_2G4 )
      
      #if(PHY_2G4_MODE == 0 )
      #define   AA           0x94826E8E          // 接入地址(3-4字節)
      #define   AA_EX        0                   // 接入地址ex,在AA前
      #define   AA_LEN       1                   // 0: 3字節; 1: 4字節; 2: 5字節
      #define   PRE_LEN      1                   // 前導碼長度, 1: 1字節; 3: 3字節
      #define   CRC_INIT     0xFFFF              // CRC初始值
      #define   CRC_POLY     0x8810              // CRC多項式
      #define   CRC_LEN      2                   // CRC長度,  0: 0字節; 1: 1字節; 2: 2字節
      #define   CTL_FILED    0                   // 增強模式控制字長度,0:0bit,1:9bit,2:10bit
      #define   DPL_EN       0                   // 增強模式  0:關閉 ; 1:增強;增強模式最大發送長度為63字節
      #define   DATA_ORDER   0                   // 數據bit順序,0: MSB; 1: LSB
      #define   MODE_2G4     PHY_2G4_1M          // 速率,0: 2M; 1: 1M
      #define   CRC_XOR_EN   0                   // CRC異或使能, 0: 關閉; 1: 使能
      
      #elif(PHY_2G4_MODE == 1 )
      #define PKT_DET_CFG4( var )          { (*((PUINT32V)0x4000C120))= var; } // Demodulation parameter
      #define   AA           0x94826E8E
      #define   AA_EX        0
      #define   AA_LEN       1
      #define   PRE_LEN      1
      #define   CRC_INIT     0xFFFF
      #define   CRC_POLY     0x8810
      #define   CRC_LEN      2
      #define   CTL_FILED    0
      #define   DPL_EN       0
      #define   DATA_ORDER   0
      #define   MODE_2G4     PHY_2G4_1M
      #define   CRC_XOR_EN   0
      
      #elif(PHY_2G4_MODE == 2 )
      #define   AA           0x94826E8E
      #define   AA_EX        0
      #define   AA_LEN       1
      #define   PRE_LEN      1
      #define   CRC_INIT     0xFFFF
      #define   CRC_POLY     0x8810
      #define   CRC_LEN      2
      #define   CTL_FILED    0
      #define   DPL_EN       0
      #define   DATA_ORDER   1
      #define   MODE_2G4     PHY_2G4_1M
      #define   CRC_XOR_EN   1
      
      #endif
      
      #else
      
      #define   AA           0X8e89bed6;
      #define   AA_EX        0
      #define   CRC_INIT     0X555555
      #define   CRC_POLY     0x80032d
      #endif
      
      typedef struct
      {
          uint32_t errContinue;
          uint32_t errCount;
          uint32_t txCount;
          uint32_t rxCount;
          uint8_t testCount;
          uint8_t testData;
          int8_t  rssi;
          int8_t  rssiMax;
          int8_t  rssiMin;
          uint8_t boundEst;
          uint8_t boundConnect;
      } testBound_t;
      
      void RFRole_Init(void);
      void RF_LowPower( uint32_t time);
      void RF_ProcessRx( void );
      
      #ifdef __cplusplus
      }
      #endif
      
      #endif

       

      posted on 2025-08-01 19:03  WCH藍牙應用分享  閱讀(136)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲av日韩av永久无码电影| 国产精品无码a∨麻豆| 大地资源免费视频观看| 国产不卡一区不卡二区| av亚洲一区二区在线| 国产精品久久久久不卡绿巨人| 日本高清视频网站www| 亚洲老女人区一区二视频| 福利一区二区在线播放| 日本一二三区视频在线| 国产熟女一区二区三区蜜臀| 日韩人妻一区中文字幕| 国产麻豆剧传媒精品国产av| 色哟哟www网站入口成人学校| 免费观看又色又爽又黄的崩锅| 日本一区二区三区后入式| 久久国产乱子伦免费精品无码 | 国产成人亚洲综合图区 | 久久精品亚洲日本波多野结衣| 免费A级毛片樱桃视频| 亚洲国产精品黄在线观看| 久久高清超碰AV热热久久| 免费国产一级特黄aa大片在线| 午夜成人理论无码电影在线播放| 精品久久久久中文字幕日本| 91福利一区福利二区| 色偷偷偷久久伊人大杳蕉| 日韩国产欧美精品在线| 国产精品视频一区二区噜| 福利网午夜视频一区二区| 成人午夜免费无码视频在线观看| 国产一区二区在线观看粉嫩| 中文字幕国产精品自拍| 国产美女自卫慰黄网站| 中国女人大白屁股ass| 欧美成人精品三级网站视频| 风流少妇树林打野战视频 | 无码激情亚洲一区| 国产suv精品一区二区四| 男女啪啪高潮激烈免费版 | 亚洲精品免费一二三区|