Parcourir la source

V10,优化发射功率设置

dropLin il y a 10 mois
Parent
commit
ced101468a
5 fichiers modifiés avec 120 ajouts et 14 suppressions
  1. 2 1
      README.md
  2. 4 4
      keil_v5/project.uvprojx
  3. 5 5
      project/main.c
  4. 109 3
      radio/myRadio.c
  5. 0 1
      radio/myRadio.h

+ 2 - 1
README.md

@@ -347,7 +347,8 @@ void myRadio_process(void)
 - `void myRadio_setRfParams(uint8_t sf, uint8_t bw, uint8_t cr)`:通过参数设置具体的扩频因子、带宽、码率
 
 ## 版本更新
-- V05
+- V10
+    - 优化发射功率设置
 
 ## 免责说明
 1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。

+ 4 - 4
keil_v5/project.uvprojx

@@ -48,7 +48,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>VGKitBoard_4130NS1_AT_V06</OutputName>
+          <OutputName>VGKitBoard_4130NS1_AT_V10</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -694,7 +694,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>VGKitBoard_4130NS1_ST_V06</OutputName>
+          <OutputName>VGKitBoard_4130NS1_ST_V10</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -1339,7 +1339,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>VGKitBoard_4130NS1_AT_APP_V06</OutputName>
+          <OutputName>VGKitBoard_4130NS1_AT_APP_V10</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -1985,7 +1985,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>VGKitBoard_4130NS1_ST_APP_V07</OutputName>
+          <OutputName>VGKitBoard_4130NS1_ST_APP_V10</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>

+ 5 - 5
project/main.c

@@ -15,7 +15,7 @@
 #include "myUart3.h"
 #include "myRadio.h"
 
-#define SOFT_VERSION 0x07
+#define SOFT_VERSION 0x10
 #define SET_RF_FREQ_HZ(base, ch,step) base+ch*step*10*1000
 //---------------key
 KeyParamExt_ts *getKeyReturn;
@@ -58,7 +58,7 @@ const uint32_t rfBaudrateList[MAX_RF_BAUDRATE_COUNT] =
 };
 const int8_t rfTxPowerList[RF_TX_PWR_MAX_COUNT] = 
 {
-    -26,-26,-17,-5,-3,-2,-1,2,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
+    -26,-17,-5,-3,-2,-1,2,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
 };
 static char deviceNameList[DVTP_MAX_COUNT][20] = 
 {
@@ -396,7 +396,7 @@ void uiEnterCallback(int pageId, int cursorCount, int status, int value)
             myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TXPOWER, 
                                             deviceInfor.txPower, 
                                             RF_TX_PWR_N_26, RF_TX_PWR_MAX_COUNT - 1, 1);
-            myRadio_setTxPower(deviceInfor.txPower);
+            myRadio_setTxPower(rfTxPowerList[deviceInfor.txPower]);
             myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
             myDisplay_setting_loadParams(SET_ITEM_INDEX_TYPE, deviceNameList[deviceInfor.chipType]);
             myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
@@ -425,7 +425,7 @@ void uiEnterCallback(int pageId, int cursorCount, int status, int value)
         {
             deviceInfor.txPower = value;
 
-            myRadio_setTxPower(deviceInfor.txPower);
+            myRadio_setTxPower(rfTxPowerList[deviceInfor.txPower]);
             myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
             setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
         }
@@ -602,7 +602,7 @@ int main(void)
     RadioSetregulatorMode(deviceInfor.rf_regulatorMode);
     myRadio_init(0, rfRx_callback);
     myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-    myRadio_setTxPower(deviceInfor.txPower);
+    myRadio_setTxPower(rfTxPowerList[deviceInfor.txPower]);
     myRadio_setRfParams(deviceInfor.rf_sf, deviceInfor.rf_bw, deviceInfor.rf_cr);
     myRadio_receiver();
     // LCD显示屏初始化界面显示

+ 109 - 3
radio/myRadio.c

@@ -26,6 +26,102 @@ typedef struct
     uint8_t regValue;
 }rfPowerReg_ts;
 
+
+rfPowerReg_ts rfPowerRegTab[RF_TX_PWR_MAX_COUNT] = 
+{
+    {
+        .power = -26,
+        .regValue = 1,
+    },
+    {
+        .power = -17,
+        .regValue = 2,
+    },
+    {
+        .power = -5,
+        .regValue = 3,
+    },
+    {
+        .power = -3,
+        .regValue = 4,
+    },
+    {
+        .power = -2,
+        .regValue = 5,
+    },
+    {
+        .power = -1,
+        .regValue = 6,
+    },
+    {
+        .power = 2,
+        .regValue = 7,
+    },
+    {
+        .power = 4,
+        .regValue = 8,
+    },
+    {
+        .power = 5,
+        .regValue = 9,
+    },
+    {
+        .power = 7,
+        .regValue = 10,
+    },
+    {
+        .power = 8,
+        .regValue = 11,
+    },
+    {
+        .power = 9,
+        .regValue = 12,
+    },
+    {
+        .power = 10,
+        .regValue = 13,
+    },
+    {
+        .power = 11,
+        .regValue = 14,
+    },
+    {
+        .power = 12,
+        .regValue = 15,
+    },
+    {
+        .power = 13,
+        .regValue = 16,
+    },
+    {
+        .power = 14,
+        .regValue = 17,
+    },
+    {
+        .power = 15,
+        .regValue = 18,
+    },
+    {
+        .power = 16,
+        .regValue = 19,
+    },
+    {
+        .power = 17,
+        .regValue = 20,
+    },
+    {
+        .power = 18,
+        .regValue = 21,
+    },
+    {
+        .power = 19,
+        .regValue = 22,
+    },
+    {
+        .power = 20,
+        .regValue = 23,
+    }
+};
 const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT] = 
 {
     {//244.14bps,SF=12,BW=62.5kHz(6),CR=2
@@ -71,7 +167,7 @@ const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT] =
 };
 bool rf_ifq;
 
-uint8_t regulatorMode = DCDC_ON;
+uint8_t regulatorMode = DCDC_OFF;
 extern struct RxDoneMsg RxDoneParams;
 uint8_t getRfPowerTabIndex(int8_t power);
 /**-------------------------radio params end----------------------------------**/
@@ -100,7 +196,6 @@ void myRadio_gpioCallback(uint8_t index)
 void myRadio_init(int agr0, void *agr1_ptr)
 {
     myRadio_gpio_init(myRadio_gpioCallback);
-    
 /**-------------------------radio init----------------------------------**/
     uint32_t ret = 0;
 #ifdef SPI_SOFT_3LINE
@@ -278,7 +373,7 @@ void myRadio_setTxPower(int8_t power)
         return;
     }
     rfTxPower = power;
-    rf_set_para(RF_PARA_TYPE_TXPOWER, rfTxPower);
+    rf_set_para(RF_PARA_TYPE_TXPOWER, rfPowerRegTab[getRfPowerTabIndex(rfTxPower)].regValue);
 }
 /**
  * 获取射频波特率
@@ -448,3 +543,14 @@ void myRadio_setCtrl(controlMode_te mode, uint32_t value)
 }
 
 /**-------------------------radio funtion end----------------------------------**/
+uint8_t getRfPowerTabIndex(int8_t power)
+{
+    for (int i = 0; i < sizeof(rfPowerRegTab)/2; i++)
+    {
+        if (rfPowerRegTab[i].power >= power)
+        {
+            return i;
+        }
+    }
+    return sizeof(rfPowerRegTab)/2 - 1;
+}

+ 0 - 1
radio/myRadio.h

@@ -11,7 +11,6 @@
 
 typedef enum
 {
-    RF_TX_PWR_NULL,
     RF_TX_PWR_N_26,
     RF_TX_PWR_N_17,
     RF_TX_PWR_N_5,