Эх сурвалжийг харах

RF_Init中增加寄存器读写判断spi是否正常

dropLin 4 сар өмнө
parent
commit
3eef79ce1c
3 өөрчлөгдсөн 24 нэмэгдсэн , 13 устгасан
  1. 3 3
      radio/RF.H
  2. 15 5
      radio/RF.c
  3. 6 5
      radio/myRadio.c

+ 3 - 3
radio/RF.H

@@ -127,7 +127,7 @@
 #define         PAYLOAD_WIDTH                  15				//Payload宽度:     8bytes				
 #define         TRANSMIT_TYPE                  TRANS_BURST_MODE              // TRANS_BURST_MODE    TRANS_ENHANCE_MODE
 #define         DATA_RATE                      DR_1M                            //通信速率2Mbps     DR_250K       DR_2M    DR_1M
-#define         RF_POWER                      (RF13dBm |DATA_RATE)		//发射功率8dBm 
+#define         RF_POWER                      (RF8dBm |DATA_RATE)		//发射功率8dBm 
 #define         CE_MODE                        CE_MODE_SOFT                     //IO控制CE信号  
 #define         SPI_MODE                       SPI_3_LINE_MODE                  //4线SPI 
 
@@ -141,7 +141,7 @@
 
 /******************* Function declare *******************/
 
-void 		RF_Init(void);
+void 		RF_Init(uint8_t __rfPower);
 void        RF_Reset(void);                                        
 void 		RF_TxMode(void);
 void	 	RF_RxMode(void);
@@ -151,7 +151,7 @@ void 		RF_ClearFIFO(void);
 void 		RF_SetChannel( uint8_t Channel);
 void    	RF_TxData( uint8_t *ucPayload,  uint8_t length);
 uint8_t 	RF_DumpRxData( uint8_t *ucPayload,  uint8_t length);
-void 		RF_Carrier( uint8_t ucChannel_Set);
+void 		RF_Carrier(uint8_t ucChannel_Set, uint8_t rfPower);
 void        RF_TX_CheckResult(uint8_t *ucAckPayload, uint8_t length);
 void RF_ReadBuf(uint8_t reg, unsigned char *pBuf, uint8_t length);
 #endif

+ 15 - 5
radio/RF.c

@@ -253,7 +253,7 @@ void RF_TX_CheckResult(uint8_t *ucAckPayload, uint8_t length)
 //            XN297L_Initial
 //                Initial RF
 /******************************************************************************/
-void RF_Init(void)
+void RF_Init(uint8_t __rfPower)
 {
 #if (DATA_RATE == DR_1M || DATA_RATE == DR_2M)
     uint8_t BB_cal_data[] = {0x0A, 0x6D, 0x67, 0x9C, 0x46};
@@ -294,7 +294,7 @@ void RF_Init(void)
     RF_WriteBuf(W_REGISTER + RF_CAL, RF_cal_data, sizeof(RF_cal_data));
     RF_WriteBuf(W_REGISTER + DEM_CAL2, Dem_cal2_data, sizeof(Dem_cal2_data));
     RF_WriteReg(W_REGISTER + DYNPD, 0x00);
-    RF_WriteReg(W_REGISTER + RF_SETUP, RF_POWER); // 8dbm  1Mbps
+    RF_WriteReg(W_REGISTER + RF_SETUP, __rfPower |DATA_RATE); // 8dbm  1Mbps
     RF_WriteReg(ACTIVATE, 0x73);
 
 #if (TRANSMIT_TYPE == TRANS_ENHANCE_MODE)
@@ -313,11 +313,21 @@ void RF_Init(void)
 #if (EN_ACK_PAYLOAD == 1)
     feature |= 0x02;
 #endif
-
     if (PAYLOAD_WIDTH > 32)
         feature |= 0x18;
 
     RF_WriteReg(W_REGISTER + FEATURE, feature);
+
+    uint8_t R_BB_cal_data[5] = {0};
+    RF_ReadBuf(R_REGISTER + BB_CAL, R_BB_cal_data, sizeof(R_BB_cal_data));
+    printf("R_BB_cal_data: %02x %02x %02x %02x %02x\n", R_BB_cal_data[0], R_BB_cal_data[1], R_BB_cal_data[2], R_BB_cal_data[3], R_BB_cal_data[4]);
+    if (memcmp(R_BB_cal_data, BB_cal_data, sizeof(BB_cal_data)) != 0)
+    {
+        printf("BB_cal_data error\n");
+        // while (1)
+        //     ;
+    }
+    
 }
 void RF_Reset(void)
 {
@@ -326,7 +336,7 @@ void RF_Reset(void)
 /******************************************************************************/
 //            		进入载波模式
 /******************************************************************************/
-void RF_Carrier(uint8_t ucChannel_Set)
+void RF_Carrier(uint8_t ucChannel_Set, uint8_t rfPower)
 {
     uint8_t BB_cal_data[] = {0x0A, 0x6D, 0x67, 0x9C, 0x46};
     uint8_t RF_cal_data[] = {0xF6, 0x37, 0x5D};
@@ -347,7 +357,7 @@ void RF_Carrier(uint8_t ucChannel_Set)
     delay_us(500);                                  // delay 500us
     RF_WriteReg(W_REGISTER + CONFIG, 0X8E);         // tx mode
     RF_WriteReg(W_REGISTER + RF_CH, ucChannel_Set); // 单载波频点
-    RF_WriteReg(W_REGISTER + RF_SETUP, RF_POWER);   // 13dbm
+    RF_WriteReg(W_REGISTER + RF_SETUP, rfPower |DATA_RATE);   // 13dbm
     RF_WriteBuf(W_REGISTER + BB_CAL, BB_cal_data, sizeof(BB_cal_data));
     RF_WriteBuf(W_REGISTER + RF_CAL2, RF_cal2_data, sizeof(RF_cal2_data));
     RF_WriteBuf(W_REGISTER + DEM_CAL, Dem_cal_data, sizeof(Dem_cal_data));

+ 6 - 5
radio/myRadio.c

@@ -8,8 +8,8 @@
 
 static rfRxCallBack rxCb;
 static uint8_t rfMode;
+static uint8_t rfPower = RF8dBm;
 rfRxPacket_ts rfRxPacket;
-
 void myRadio_delay(uint32_t time_ms)
 {
     delay1ms(time_ms);
@@ -17,7 +17,8 @@ void myRadio_delay(uint32_t time_ms)
 void myRadio_init(int agr0, void *agr1_ptr)
 {
     spi_init();
-    RF_Init();
+    RF_Init(rfPower);
+
     if ((rfRxCallBack )agr1_ptr)
     {
         rxCb = (rfRxCallBack )agr1_ptr;
@@ -56,11 +57,11 @@ void myRadio_setFrequency(uint32_t freq)
 }
 int8_t myRadio_getTxPower(void)
 {
-    return 0;
+    return rfPower;
 }
 void myRadio_setTxPower(int8_t power)
 {
-    power;
+    rfPower = power;
 }
 void myRadio_setCtrl(controlMode_te mode, uint32_t value)
 { 
@@ -69,7 +70,7 @@ void myRadio_setCtrl(controlMode_te mode, uint32_t value)
     case RADIO_EXT_CONTROL_TX_UNMODULATED:
     {
         rfMode = 3;
-        RF_Carrier(0);
+        RF_Carrier(0, rfPower);
     }
     break;
     case RADIO_EXT_CONTROL_RX_SENSITIVITY: