Browse Source

更新文件

dropLin 9 months ago
parent
commit
0d81d055f0
12 changed files with 1217 additions and 1213 deletions
  1. 3 0
      .gitmodules
  2. 1 0
      lib-pan3029
  3. 449 449
      radio--/myRadio.c
  4. 138 138
      radio--/myRadio.h
  5. 322 322
      radio--/myRadio_gpio.c
  6. 89 89
      radio--/myRadio_gpio.h
  7. 0 0
      radio--/pan3029.c
  8. 0 0
      radio--/pan3029.h
  9. 158 158
      radio--/pan3029_port.c
  10. 57 57
      radio--/pan3029_port.h
  11. 0 0
      radio--/radio.c
  12. 0 0
      radio--/radio.h

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "lib-pan3029"]
+	path = lib-pan3029
+	url = http://git.cloudpeaks.cn/vg-module-lib/lib-pan3029.git

+ 1 - 0
lib-pan3029

@@ -0,0 +1 @@
+Subproject commit 1ed5f549d7a39de0f06b2a8980c599554d077f25

+ 449 - 449
radio/myRadio.c → radio--/myRadio.c

@@ -1,449 +1,449 @@
-#include "board.h"
-#include "myRadio.h"
-#include "myRadio_gpio.h"
-
-/**-------------------------radio include----------------------------------**/
-#include "radio.h"
-#include "pan3029.h"
-/**-------------------------radio include end----------------------------------**/
-
-static int8_t rfTxPower;
-static uint32_t rfFrequence;
-static uint32_t rfBaudrate;
-static uint8_t rf_sf;
-static uint8_t rf_bw;
-static uint8_t rf_cr;
-static rfRxCallBack rxCb;
-static uint8_t rfRxBuffer[255];
-static uint32_t rf_handle;
-static uint8_t rf_workProcess = RF_PRC_IDLE;
-static uint8_t chipType;
-/**-------------------------radio params----------------------------------**/
-typedef struct 
-{
-    int8_t power;
-    uint8_t regValue;
-}rfPowerReg_ts;
-
-const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT] = 
-{
-    {//244.14bps,SF=12,BW=62.5kHz(6),CR=2
-    .SpreadingFactor = 12,        
-    .SignalBw = 6,               
-    .ErrorCoding = 2,            
-    },
-    {//627.79 bps,SF=9,BW=62.5kHz(6),CR=3
-    .SpreadingFactor = 9,        
-    .SignalBw = 6,               
-    .ErrorCoding = 4,            
-    },
-    {//1,255.58 bps,SF=9,BW=125kHz(7),CR=4
-    .SpreadingFactor = 9, 
-    .SignalBw = 7, 
-    .ErrorCoding = 4,            
-    },
-    {//2,511.16 bps,SF=9,BW=250kHz(8),CR=3
-    .SpreadingFactor = 9,        
-    .SignalBw = 8,               
-    .ErrorCoding = 3,            
-    },
-    {//5022.32bps,SF=9,BW=500kHz(9),CR=3
-    .SpreadingFactor = 9,        
-    .SignalBw = 9,               
-    .ErrorCoding = 3,            
-    },
-    {//12500bps,SF=8,BW=500kHz(9),CR=1
-    .SpreadingFactor = 8,                                                                                
-    .SignalBw = 9,               
-    .ErrorCoding = 1,            
-    },
-    {//20400bps,SF=8,BW=500kHz(9),CR=1
-    .SpreadingFactor = 7,        
-    .SignalBw = 9,               
-    .ErrorCoding = 1,            
-    },
-    {//62500bps,SF=5,BW=500kHz(9),CR=1
-    .SpreadingFactor = 7,        
-    .SignalBw = 9,               
-    .ErrorCoding = 1,            
-    },
-};
-bool rf_ifq;
-
-uint8_t regulatorMode = DCDC_ON;
-extern struct RxDoneMsg RxDoneParams;
-uint8_t getRfPowerTabIndex(int8_t power);
-/**-------------------------radio params end----------------------------------**/
-void myRadio_delay(uint32_t time_ms)
-{
-    delay1ms(time_ms);
-}
-/**
- * @brief IO口中断回调
- *      IO口产生中断后会执行该函数
- *      用于接收射频工作的中断响应
- * 
- * @param index 
- */
-void myRadio_gpioCallback(uint8_t index)
-{
-    rf_ifq = true;
-}
-/**
- * @brief 射频初始化
- * 
- * @param agr0 
- * @param agr1_ptr 无线工作状态响应回调
- *          产生回调给外部使用,@rfRxCallBack
- */
-void myRadio_init(int agr0, void *agr1_ptr)
-{
-    myRadio_gpio_init(myRadio_gpioCallback);
-    
-/**-------------------------radio init----------------------------------**/
-    uint32_t ret = 0;
-#ifdef SPI_SOFT_3LINE
-    PAN3029_write_reg(REG_SYS_CTL, 0x03);
-    PAN3029_write_reg(0x1A, 0x83);
-#endif
-
-	ret = rf_init();
-	if(ret != OK)
-	{
-		// printf("  RF Init Fail");
-		while(1);
-	}
-
-	rf_set_default_para();
-
-    rf_set_dcdc_mode(regulatorMode);
-/**-------------------------radio init end----------------------------------**/
-    myRadio_delay(10);
-    RF_EXT_PA_TO_IDLE();
-    if ((rfRxCallBack )agr1_ptr)
-    {
-        rxCb = (rfRxCallBack )agr1_ptr;
-    }
-    rf_handle = 0xe5;
-}
-void RadioSetregulatorMode(uint8_t mode)
-{
-    regulatorMode = mode;
-}
-/**
- * @brief 射频底层执行程序
- *      要放在主循环中执行
- * 
- */
-void myRadio_process(void)
-{
-    rfRxPacket_ts rfRxPacket;
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    if (rf_ifq == false)
-    {
-        return;
-    }
-    rf_ifq = false;
-    if (!((rf_workProcess == RF_PRC_TX) || (rf_workProcess == RF_PRC_RX)))
-    {
-        return;
-    }
-
-    uint8_t plhd_len;
-    uint8_t irq = rf_get_irq();
-
-    if(irq & REG_IRQ_RX_PLHD_DONE)
-    {
-        plhd_len = rf_get_plhd_len();
-        rf_set_recv_flag(RADIO_FLAG_PLHDRXDONE);
-        RxDoneParams.PlhdSize = rf_plhd_receive(RxDoneParams.PlhdPayload,plhd_len);
-        //PAN3029_rst();//stop it
-
-    }
-    if(irq & REG_IRQ_RX_DONE)
-    {
-        RxDoneParams.Snr = rf_get_snr();
-        RxDoneParams.Rssi = rf_get_rssi();
-        rf_set_recv_flag(RADIO_FLAG_RXDONE);
-        RxDoneParams.Size = rf_receive(RxDoneParams.Payload);
-        rf_set_recv_flag(RADIO_FLAG_IDLE); 
-        if (rxCb)
-        {
-            rfRxPacket.rssi = RxDoneParams.Rssi;
-            rfRxPacket.len = RxDoneParams.Size;
-            memcpy(rfRxPacket.payload, RxDoneParams.Payload, RxDoneParams.Size);
-            rxCb(RX_STA_SECCESS, rfRxPacket);
-        }
-        
-    }
-    if(irq & REG_IRQ_CRC_ERR)
-    {
-        rf_set_recv_flag(RADIO_FLAG_RXERR);
-        rf_clr_irq();
-
-    }
-    if(irq & REG_IRQ_RX_TIMEOUT)
-    {
-        rf_set_refresh();
-        rf_set_recv_flag(RADIO_FLAG_RXTIMEOUT);
-        rf_clr_irq();
-        rf_set_recv_flag(RADIO_FLAG_IDLE); 
-        RF_EXT_PA_TO_IDLE();
-        if (rxCb)
-        {
-            rxCb(RX_STA_TIMEOUT, rfRxPacket);
-        }
-    }
-    if(irq & REG_IRQ_TX_DONE)
-    {
-        rf_set_transmit_flag(RADIO_FLAG_TXDONE);
-        rf_clr_irq();
-
-        RF_EXT_PA_TO_IDLE();
-        if (rxCb)
-        {
-            rxCb(TX_STA_SECCESS, rfRxPacket);
-        }
-    }
-}
-/**
- * @brief 退出射频进入休眠
- * 
- */
-void myRadio_abort(void)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    RF_EXT_PA_TO_IDLE();
-    // rf_deepsleep();
-    rf_sleep();
-}
-/**
- * @brief 获取射频工作中心频率
- * 
- * @return uint32_t 
- */
-uint32_t myRadio_getFrequency(void)
-{
-    if (rf_handle == 0)
-    {
-        return 0;
-    }
-    return rfFrequence;
-}
-/**
- * @brief 设置射频工作中心频率
- * 
- * @param freq 
- *      具体频点,单位:Hz
- */
-void myRadio_setFrequency(uint32_t freq)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    rfFrequence = freq;
-    rf_set_para(RF_PARA_TYPE_FREQ, rfFrequence);
-}
-/**
- * @brief 获取发射功率
- * 
- * @return int8_t 
- */
-int8_t myRadio_getTxPower(void)
-{
-    if (rf_handle == 0)
-    {
-        return 0;
-    }
-    return rfTxPower;
-}
-/**
- * @brief 设置发射功率
- * 
- * @param power 
- *          单位:dbm
- */
-void myRadio_setTxPower(int8_t power)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    rfTxPower = power;
-    rf_set_para(RF_PARA_TYPE_TXPOWER, rfTxPower);
-}
-/**
- * 获取射频波特率
- * @param : br->
-*/
-uint32_t myRadio_getBaudrate(void)
-{
-    if (rf_handle == 0)
-    {
-        return 0;
-    }
-    return rfBaudrate;
-}
-/**
- * 设置射频波特率
- * @param : br->
-*/
-void myRadio_setBaudrate(uint32_t br)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    rfBaudrate = br;
-    rf_set_para(RF_PARA_TYPE_CR, loraBaudrateFrame[br].ErrorCoding);
-    rf_set_para(RF_PARA_TYPE_BW, loraBaudrateFrame[br].SignalBw);
-    rf_set_para(RF_PARA_TYPE_SF, loraBaudrateFrame[br].SpreadingFactor);
-    rf_set_ldr(LDR_OFF);
-}
-void myRadio_setRfParams(uint8_t sf, uint8_t bw, uint8_t cr)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    rf_sf = sf;
-    rf_bw = bw;
-    rf_cr = cr;
-    rf_set_para(RF_PARA_TYPE_CR, cr);
-    rf_set_para(RF_PARA_TYPE_BW, bw);
-    rf_set_para(RF_PARA_TYPE_SF, sf);
-    rf_set_ldr(LDR_OFF);
-}
-/**
- * @brief 设置模组型号
- * 
- * @param type 
- */
-void myRadio_setChipType(uint8_t type)
-{
-    chipType = type;
-}
-/**
- * @brief 获取模组型号
- * 
- * @return uint8_t 
- */
-uint8_t myRadio_getChipType(void)
-{
-    return chipType;
-}
-int16_t myRadio_getRssi(void)
-{
-    return (int16_t)PAN3029_get_rssi();
-}
-/**
- * @brief 无线发送数据包
- * 
- * @param packet 
- */
-void myRadio_transmit(rfTxPacket_ts *packet)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    RF_EXT_PA_TO_TX();
-    uint32_t getTxtime;
-    if (rf_get_mode() == PAN3029_MODE_DEEP_SLEEP)
-    {
-        rf_deepsleep_wakeup();
-        myRadio_setFrequency(rfFrequence);
-        myRadio_setTxPower(rfTxPower);
-        myRadio_setRfParams(rf_sf, rf_bw, rf_cr);
-        myRadio_delay(10);
-    }
-    if (rf_get_mode() == PAN3029_MODE_SLEEP)
-    {
-        rf_sleep_wakeup();
-        myRadio_delay(10);
-    }
-    
-    if(rf_single_tx_data(packet->payload, packet->len, &packet->absTime) != OK)	
-    {
-    }
-    else
-    {
-    }
-    rf_workProcess = RF_PRC_TX;
-}
-/**
- * @brief 进入无线接收
- * 
- */
-void myRadio_receiver(void)
-{ 
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    RF_EXT_PA_TO_RX();
-    if (rf_get_mode() == PAN3029_MODE_DEEP_SLEEP)
-    {
-        rf_deepsleep_wakeup();
-        myRadio_setFrequency(rfFrequence);
-        myRadio_setTxPower(rfTxPower);
-        myRadio_setRfParams(rf_sf, rf_bw, rf_cr);
-        myRadio_delay(10);
-    }
-    if (rf_get_mode() == PAN3029_MODE_SLEEP)
-    {
-        rf_sleep_wakeup();
-        myRadio_delay(10);
-    }
-    rf_enter_continous_rx();
-    rf_workProcess = RF_PRC_RX;
-}
-void myRadio_setCtrl(controlMode_te mode, uint32_t value)
-{
-    if (rf_handle == 0)
-    {
-        return;
-    }
-    rf_workProcess = RF_PRC_TEST_TX;
-    myRadio_init(0, 0);
-    switch (mode)
-    {
-    case RADIO_EXT_CONTROL_TX_UNMODULATED:
-    {
-        rf_workProcess = RF_PRC_TEST_TX;
-        RF_EXT_PA_TO_TX();
-        PAN3029_set_carrier_wave_on();
-        myRadio_setTxPower(rfTxPower);
-        PAN3029_set_carrier_wave_freq(rfFrequence);
-    }
-        break;
-    case RADIO_EXT_CONTROL_TX_MODULATED:
-    {
-        RF_EXT_PA_TO_TX();
-        PAN3029_set_carrier_wave_on();
-        myRadio_setTxPower(rfTxPower);
-        PAN3029_set_carrier_wave_freq(rfFrequence);
-        rf_workProcess = RF_PRC_TEST_TX;
-    }
-        break;
-    case RADIO_EXT_CONTROL_RX_SENSITIVITY:
-    {
-        RF_EXT_PA_TO_RX();
-        myRadio_receiver();
-        rf_workProcess = RF_PRC_RX;
-    }
-        break;
-    
-    default:
-        break;
-    }
-}
-
-/**-------------------------radio funtion end----------------------------------**/
+#include "board.h"
+#include "myRadio.h"
+#include "myRadio_gpio.h"
+
+/**-------------------------radio include----------------------------------**/
+#include "radio.h"
+#include "pan3029.h"
+/**-------------------------radio include end----------------------------------**/
+
+static int8_t rfTxPower;
+static uint32_t rfFrequence;
+static uint32_t rfBaudrate;
+static uint8_t rf_sf;
+static uint8_t rf_bw;
+static uint8_t rf_cr;
+static rfRxCallBack rxCb;
+static uint8_t rfRxBuffer[255];
+static uint32_t rf_handle;
+static uint8_t rf_workProcess = RF_PRC_IDLE;
+static uint8_t chipType;
+/**-------------------------radio params----------------------------------**/
+typedef struct 
+{
+    int8_t power;
+    uint8_t regValue;
+}rfPowerReg_ts;
+
+const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT] = 
+{
+    {//244.14bps,SF=12,BW=62.5kHz(6),CR=2
+    .SpreadingFactor = 12,        
+    .SignalBw = 6,               
+    .ErrorCoding = 2,            
+    },
+    {//627.79 bps,SF=9,BW=62.5kHz(6),CR=3
+    .SpreadingFactor = 9,        
+    .SignalBw = 6,               
+    .ErrorCoding = 4,            
+    },
+    {//1,255.58 bps,SF=9,BW=125kHz(7),CR=4
+    .SpreadingFactor = 9, 
+    .SignalBw = 7, 
+    .ErrorCoding = 4,            
+    },
+    {//2,511.16 bps,SF=9,BW=250kHz(8),CR=3
+    .SpreadingFactor = 9,        
+    .SignalBw = 8,               
+    .ErrorCoding = 3,            
+    },
+    {//5022.32bps,SF=9,BW=500kHz(9),CR=3
+    .SpreadingFactor = 9,        
+    .SignalBw = 9,               
+    .ErrorCoding = 3,            
+    },
+    {//12500bps,SF=8,BW=500kHz(9),CR=1
+    .SpreadingFactor = 8,                                                                                
+    .SignalBw = 9,               
+    .ErrorCoding = 1,            
+    },
+    {//20400bps,SF=8,BW=500kHz(9),CR=1
+    .SpreadingFactor = 7,        
+    .SignalBw = 9,               
+    .ErrorCoding = 1,            
+    },
+    {//62500bps,SF=5,BW=500kHz(9),CR=1
+    .SpreadingFactor = 7,        
+    .SignalBw = 9,               
+    .ErrorCoding = 1,            
+    },
+};
+bool rf_ifq;
+
+uint8_t regulatorMode = DCDC_ON;
+extern struct RxDoneMsg RxDoneParams;
+uint8_t getRfPowerTabIndex(int8_t power);
+/**-------------------------radio params end----------------------------------**/
+void myRadio_delay(uint32_t time_ms)
+{
+    delay1ms(time_ms);
+}
+/**
+ * @brief IO口中断回调
+ *      IO口产生中断后会执行该函数
+ *      用于接收射频工作的中断响应
+ * 
+ * @param index 
+ */
+void myRadio_gpioCallback(uint8_t index)
+{
+    rf_ifq = true;
+}
+/**
+ * @brief 射频初始化
+ * 
+ * @param agr0 
+ * @param agr1_ptr 无线工作状态响应回调
+ *          产生回调给外部使用,@rfRxCallBack
+ */
+void myRadio_init(int agr0, void *agr1_ptr)
+{
+    myRadio_gpio_init(myRadio_gpioCallback);
+    
+/**-------------------------radio init----------------------------------**/
+    uint32_t ret = 0;
+#ifdef SPI_SOFT_3LINE
+    PAN3029_write_reg(REG_SYS_CTL, 0x03);
+    PAN3029_write_reg(0x1A, 0x83);
+#endif
+
+	ret = rf_init();
+	if(ret != OK)
+	{
+		// printf("  RF Init Fail");
+		while(1);
+	}
+
+	rf_set_default_para();
+
+    rf_set_dcdc_mode(regulatorMode);
+/**-------------------------radio init end----------------------------------**/
+    myRadio_delay(10);
+    RF_EXT_PA_TO_IDLE();
+    if ((rfRxCallBack )agr1_ptr)
+    {
+        rxCb = (rfRxCallBack )agr1_ptr;
+    }
+    rf_handle = 0xe5;
+}
+void RadioSetregulatorMode(uint8_t mode)
+{
+    regulatorMode = mode;
+}
+/**
+ * @brief 射频底层执行程序
+ *      要放在主循环中执行
+ * 
+ */
+void myRadio_process(void)
+{
+    rfRxPacket_ts rfRxPacket;
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    if (rf_ifq == false)
+    {
+        return;
+    }
+    rf_ifq = false;
+    if (!((rf_workProcess == RF_PRC_TX) || (rf_workProcess == RF_PRC_RX)))
+    {
+        return;
+    }
+
+    uint8_t plhd_len;
+    uint8_t irq = rf_get_irq();
+
+    if(irq & REG_IRQ_RX_PLHD_DONE)
+    {
+        plhd_len = rf_get_plhd_len();
+        rf_set_recv_flag(RADIO_FLAG_PLHDRXDONE);
+        RxDoneParams.PlhdSize = rf_plhd_receive(RxDoneParams.PlhdPayload,plhd_len);
+        //PAN3029_rst();//stop it
+
+    }
+    if(irq & REG_IRQ_RX_DONE)
+    {
+        RxDoneParams.Snr = rf_get_snr();
+        RxDoneParams.Rssi = rf_get_rssi();
+        rf_set_recv_flag(RADIO_FLAG_RXDONE);
+        RxDoneParams.Size = rf_receive(RxDoneParams.Payload);
+        rf_set_recv_flag(RADIO_FLAG_IDLE); 
+        if (rxCb)
+        {
+            rfRxPacket.rssi = RxDoneParams.Rssi;
+            rfRxPacket.len = RxDoneParams.Size;
+            memcpy(rfRxPacket.payload, RxDoneParams.Payload, RxDoneParams.Size);
+            rxCb(RX_STA_SECCESS, rfRxPacket);
+        }
+        
+    }
+    if(irq & REG_IRQ_CRC_ERR)
+    {
+        rf_set_recv_flag(RADIO_FLAG_RXERR);
+        rf_clr_irq();
+
+    }
+    if(irq & REG_IRQ_RX_TIMEOUT)
+    {
+        rf_set_refresh();
+        rf_set_recv_flag(RADIO_FLAG_RXTIMEOUT);
+        rf_clr_irq();
+        rf_set_recv_flag(RADIO_FLAG_IDLE); 
+        RF_EXT_PA_TO_IDLE();
+        if (rxCb)
+        {
+            rxCb(RX_STA_TIMEOUT, rfRxPacket);
+        }
+    }
+    if(irq & REG_IRQ_TX_DONE)
+    {
+        rf_set_transmit_flag(RADIO_FLAG_TXDONE);
+        rf_clr_irq();
+
+        RF_EXT_PA_TO_IDLE();
+        if (rxCb)
+        {
+            rxCb(TX_STA_SECCESS, rfRxPacket);
+        }
+    }
+}
+/**
+ * @brief 退出射频进入休眠
+ * 
+ */
+void myRadio_abort(void)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    RF_EXT_PA_TO_IDLE();
+    // rf_deepsleep();
+    rf_sleep();
+}
+/**
+ * @brief 获取射频工作中心频率
+ * 
+ * @return uint32_t 
+ */
+uint32_t myRadio_getFrequency(void)
+{
+    if (rf_handle == 0)
+    {
+        return 0;
+    }
+    return rfFrequence;
+}
+/**
+ * @brief 设置射频工作中心频率
+ * 
+ * @param freq 
+ *      具体频点,单位:Hz
+ */
+void myRadio_setFrequency(uint32_t freq)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    rfFrequence = freq;
+    rf_set_para(RF_PARA_TYPE_FREQ, rfFrequence);
+}
+/**
+ * @brief 获取发射功率
+ * 
+ * @return int8_t 
+ */
+int8_t myRadio_getTxPower(void)
+{
+    if (rf_handle == 0)
+    {
+        return 0;
+    }
+    return rfTxPower;
+}
+/**
+ * @brief 设置发射功率
+ * 
+ * @param power 
+ *          单位:dbm
+ */
+void myRadio_setTxPower(int8_t power)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    rfTxPower = power;
+    rf_set_para(RF_PARA_TYPE_TXPOWER, rfTxPower);
+}
+/**
+ * 获取射频波特率
+ * @param : br->
+*/
+uint32_t myRadio_getBaudrate(void)
+{
+    if (rf_handle == 0)
+    {
+        return 0;
+    }
+    return rfBaudrate;
+}
+/**
+ * 设置射频波特率
+ * @param : br->
+*/
+void myRadio_setBaudrate(uint32_t br)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    rfBaudrate = br;
+    rf_set_para(RF_PARA_TYPE_CR, loraBaudrateFrame[br].ErrorCoding);
+    rf_set_para(RF_PARA_TYPE_BW, loraBaudrateFrame[br].SignalBw);
+    rf_set_para(RF_PARA_TYPE_SF, loraBaudrateFrame[br].SpreadingFactor);
+    rf_set_ldr(LDR_OFF);
+}
+void myRadio_setRfParams(uint8_t sf, uint8_t bw, uint8_t cr)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    rf_sf = sf;
+    rf_bw = bw;
+    rf_cr = cr;
+    rf_set_para(RF_PARA_TYPE_CR, cr);
+    rf_set_para(RF_PARA_TYPE_BW, bw);
+    rf_set_para(RF_PARA_TYPE_SF, sf);
+    rf_set_ldr(LDR_OFF);
+}
+/**
+ * @brief 设置模组型号
+ * 
+ * @param type 
+ */
+void myRadio_setChipType(uint8_t type)
+{
+    chipType = type;
+}
+/**
+ * @brief 获取模组型号
+ * 
+ * @return uint8_t 
+ */
+uint8_t myRadio_getChipType(void)
+{
+    return chipType;
+}
+int16_t myRadio_getRssi(void)
+{
+    return (int16_t)PAN3029_get_rssi();
+}
+/**
+ * @brief 无线发送数据包
+ * 
+ * @param packet 
+ */
+void myRadio_transmit(rfTxPacket_ts *packet)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    RF_EXT_PA_TO_TX();
+    uint32_t getTxtime;
+    if (rf_get_mode() == PAN3029_MODE_DEEP_SLEEP)
+    {
+        rf_deepsleep_wakeup();
+        myRadio_setFrequency(rfFrequence);
+        myRadio_setTxPower(rfTxPower);
+        myRadio_setRfParams(rf_sf, rf_bw, rf_cr);
+        myRadio_delay(10);
+    }
+    if (rf_get_mode() == PAN3029_MODE_SLEEP)
+    {
+        rf_sleep_wakeup();
+        myRadio_delay(10);
+    }
+    
+    if(rf_single_tx_data(packet->payload, packet->len, &packet->absTime) != OK)	
+    {
+    }
+    else
+    {
+    }
+    rf_workProcess = RF_PRC_TX;
+}
+/**
+ * @brief 进入无线接收
+ * 
+ */
+void myRadio_receiver(void)
+{ 
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    RF_EXT_PA_TO_RX();
+    if (rf_get_mode() == PAN3029_MODE_DEEP_SLEEP)
+    {
+        rf_deepsleep_wakeup();
+        myRadio_setFrequency(rfFrequence);
+        myRadio_setTxPower(rfTxPower);
+        myRadio_setRfParams(rf_sf, rf_bw, rf_cr);
+        myRadio_delay(10);
+    }
+    if (rf_get_mode() == PAN3029_MODE_SLEEP)
+    {
+        rf_sleep_wakeup();
+        myRadio_delay(10);
+    }
+    rf_enter_continous_rx();
+    rf_workProcess = RF_PRC_RX;
+}
+void myRadio_setCtrl(controlMode_te mode, uint32_t value)
+{
+    if (rf_handle == 0)
+    {
+        return;
+    }
+    rf_workProcess = RF_PRC_TEST_TX;
+    myRadio_init(0, 0);
+    switch (mode)
+    {
+    case RADIO_EXT_CONTROL_TX_UNMODULATED:
+    {
+        rf_workProcess = RF_PRC_TEST_TX;
+        RF_EXT_PA_TO_TX();
+        PAN3029_set_carrier_wave_on();
+        myRadio_setTxPower(rfTxPower);
+        PAN3029_set_carrier_wave_freq(rfFrequence);
+    }
+        break;
+    case RADIO_EXT_CONTROL_TX_MODULATED:
+    {
+        RF_EXT_PA_TO_TX();
+        PAN3029_set_carrier_wave_on();
+        myRadio_setTxPower(rfTxPower);
+        PAN3029_set_carrier_wave_freq(rfFrequence);
+        rf_workProcess = RF_PRC_TEST_TX;
+    }
+        break;
+    case RADIO_EXT_CONTROL_RX_SENSITIVITY:
+    {
+        RF_EXT_PA_TO_RX();
+        myRadio_receiver();
+        rf_workProcess = RF_PRC_RX;
+    }
+        break;
+    
+    default:
+        break;
+    }
+}
+
+/**-------------------------radio funtion end----------------------------------**/

+ 138 - 138
radio/myRadio.h → radio--/myRadio.h

@@ -1,138 +1,138 @@
-#ifndef __MY_RADIO_H
-#define __MY_RADIO_H
-/* Includes ------------------------------------------------------------------*/
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-
-#define MAX_RF_PACKET_LEN 255
-
-
-typedef enum
-{
-    RF_TX_PWR_NULL,
-    RF_TX_PWR_N_26,
-    RF_TX_PWR_N_17,
-    RF_TX_PWR_N_5,
-    RF_TX_PWR_N_3,
-    RF_TX_PWR_N_2,
-    RF_TX_PWR_N_1,
-    RF_TX_PWR_P_2,
-    RF_TX_PWR_P_4,
-    RF_TX_PWR_P_5,
-    RF_TX_PWR_P_7,
-    RF_TX_PWR_P_8,
-    RF_TX_PWR_P_9,
-    RF_TX_PWR_P_10,
-    RF_TX_PWR_P_11,
-    RF_TX_PWR_P_12,
-    RF_TX_PWR_P_13,
-    RF_TX_PWR_P_14,
-    RF_TX_PWR_P_15,
-    RF_TX_PWR_P_16,
-    RF_TX_PWR_P_17,
-    RF_TX_PWR_P_18,
-    RF_TX_PWR_P_19,
-    RF_TX_PWR_P_20,
-    RF_TX_PWR_MAX_COUNT,
-}rf_txPwr_te;
-typedef enum
-{
-    DVTP_VG4130S433N0S1,
-    DVTP_VG4130S490N0S1,
-    DVTP_VG4130S868N0S1,
-    DVTP_VG4130S915N0S1,
-    DVTP_MAX_COUNT,
-}deviceType_te;
-
-typedef enum
-{
-    RF_BAUDRATE_RESV1,  
-    RF_BAUDRATE_RESV2,  
-    RF_BAUDRATE_1220,   
-    RF_BAUDRATE_2440,   
-    RF_BAUDRATE_5000,   
-    RF_BAUDRATE_12500,  
-    RF_BAUDRATE_20400,  
-    RF_BAUDRATE_62500,  
-    MAX_RF_BAUDRATE_COUNT,    //
-}rfBaudrate_te;
-typedef enum
-{
-    FREQ_BAND_315,
-    FREQ_BAND_433,
-    FREQ_BAND_490,
-    FREQ_BAND_868,
-    FREQ_BAND_915,
-    MAX_FREQ_BAND_COUNT,
-}freqBand_te;
-//! \brief Structure for the TX Packet
-typedef struct
-{
-    uint8_t rmvAddr[8];              //
-    uint32_t absTime;                //
-    uint8_t len;                     //
-    uint8_t payload[MAX_RF_PACKET_LEN];       //
-} rfTxPacket_ts;
-
-typedef struct
-{
-    uint8_t rmvAddr[8];              //
-    int16_t rssi;                     //
-    uint32_t absTime;                //
-    uint32_t rxTimeout;              //
-    uint8_t len;                     //
-    uint8_t payload[MAX_RF_PACKET_LEN];
-} rfRxPacket_ts;
-typedef struct
-{
-    uint8_t SignalBw;                   // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
-                                        // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved]  
-    uint8_t SpreadingFactor;            // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096  chips]
-    uint8_t ErrorCoding;                // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
-}loraBaudrateFrame_ts;
-typedef enum 
-{
-    RADIO_EXT_CONTROL_TX_UNMODULATED,   //等婥疏髡薹聆彸
-    RADIO_EXT_CONTROL_RX_SENSITIVITY,   //諉彶鍾鏗僅聆彸
-    RADIO_EXT_CONTROL_TX_MODULATED,   //蟀哿覃秶聆彸
-}controlMode_te;
-typedef enum
-{
-    RX_STA_SECCESS,
-    RX_STA_TIMEOUT,
-    RX_STA_PAYLOAD_ERROR,
-    TX_STA_SECCESS,
-    TX_STA_ERROR,
-}rxStatus_te;
-typedef enum
-{
-    RF_PRC_IDLE,
-    RF_PRC_SLEEP,
-    RF_PRC_TX,
-    RF_PRC_RX,
-    RF_PRC_TEST_TX,
-    RF_PRC_TEST_RX,
-}rfProccess_te;
-typedef void (*rfRxCallBack)(uint8_t status, rfRxPacket_ts packet);
-extern const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT];
-
-void myRadio_init(int agr0, void *agr1_ptr);
-void myRadio_abort(void);
-uint32_t myRadio_getFrequency(void);
-void myRadio_setFrequency(uint32_t freq);
-int8_t myRadio_getTxPower(void);
-void myRadio_setTxPower(int8_t power);
-uint32_t myRadio_getBaudrate(void);
-void myRadio_setBaudrate(uint32_t br);
-void myRadio_setRfParams(uint8_t sf, uint8_t bw, uint8_t cr);
-void myRadio_setChipType(uint8_t type);
-uint8_t myRadio_getChipType(void);
-int16_t myRadio_getRssi(void);
-void myRadio_transmit(rfTxPacket_ts *packet);
-void myRadio_receiver(void);
-void myRadio_setCtrl(controlMode_te mode, uint32_t value);
-
-#endif
-
+#ifndef __MY_RADIO_H
+#define __MY_RADIO_H
+/* Includes ------------------------------------------------------------------*/
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+
+#define MAX_RF_PACKET_LEN 255
+
+
+typedef enum
+{
+    RF_TX_PWR_NULL,
+    RF_TX_PWR_N_26,
+    RF_TX_PWR_N_17,
+    RF_TX_PWR_N_5,
+    RF_TX_PWR_N_3,
+    RF_TX_PWR_N_2,
+    RF_TX_PWR_N_1,
+    RF_TX_PWR_P_2,
+    RF_TX_PWR_P_4,
+    RF_TX_PWR_P_5,
+    RF_TX_PWR_P_7,
+    RF_TX_PWR_P_8,
+    RF_TX_PWR_P_9,
+    RF_TX_PWR_P_10,
+    RF_TX_PWR_P_11,
+    RF_TX_PWR_P_12,
+    RF_TX_PWR_P_13,
+    RF_TX_PWR_P_14,
+    RF_TX_PWR_P_15,
+    RF_TX_PWR_P_16,
+    RF_TX_PWR_P_17,
+    RF_TX_PWR_P_18,
+    RF_TX_PWR_P_19,
+    RF_TX_PWR_P_20,
+    RF_TX_PWR_MAX_COUNT,
+}rf_txPwr_te;
+typedef enum
+{
+    DVTP_VG4130S433N0S1,
+    DVTP_VG4130S490N0S1,
+    DVTP_VG4130S868N0S1,
+    DVTP_VG4130S915N0S1,
+    DVTP_MAX_COUNT,
+}deviceType_te;
+
+typedef enum
+{
+    RF_BAUDRATE_RESV1,  
+    RF_BAUDRATE_RESV2,  
+    RF_BAUDRATE_1220,   
+    RF_BAUDRATE_2440,   
+    RF_BAUDRATE_5000,   
+    RF_BAUDRATE_12500,  
+    RF_BAUDRATE_20400,  
+    RF_BAUDRATE_62500,  
+    MAX_RF_BAUDRATE_COUNT,    //
+}rfBaudrate_te;
+typedef enum
+{
+    FREQ_BAND_315,
+    FREQ_BAND_433,
+    FREQ_BAND_490,
+    FREQ_BAND_868,
+    FREQ_BAND_915,
+    MAX_FREQ_BAND_COUNT,
+}freqBand_te;
+//! \brief Structure for the TX Packet
+typedef struct
+{
+    uint8_t rmvAddr[8];              //
+    uint32_t absTime;                //
+    uint8_t len;                     //
+    uint8_t payload[MAX_RF_PACKET_LEN];       //
+} rfTxPacket_ts;
+
+typedef struct
+{
+    uint8_t rmvAddr[8];              //
+    int16_t rssi;                     //
+    uint32_t absTime;                //
+    uint32_t rxTimeout;              //
+    uint8_t len;                     //
+    uint8_t payload[MAX_RF_PACKET_LEN];
+} rfRxPacket_ts;
+typedef struct
+{
+    uint8_t SignalBw;                   // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
+                                        // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved]  
+    uint8_t SpreadingFactor;            // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096  chips]
+    uint8_t ErrorCoding;                // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
+}loraBaudrateFrame_ts;
+typedef enum 
+{
+    RADIO_EXT_CONTROL_TX_UNMODULATED,   //等婥疏髡薹聆彸
+    RADIO_EXT_CONTROL_RX_SENSITIVITY,   //諉彶鍾鏗僅聆彸
+    RADIO_EXT_CONTROL_TX_MODULATED,   //蟀哿覃秶聆彸
+}controlMode_te;
+typedef enum
+{
+    RX_STA_SECCESS,
+    RX_STA_TIMEOUT,
+    RX_STA_PAYLOAD_ERROR,
+    TX_STA_SECCESS,
+    TX_STA_ERROR,
+}rxStatus_te;
+typedef enum
+{
+    RF_PRC_IDLE,
+    RF_PRC_SLEEP,
+    RF_PRC_TX,
+    RF_PRC_RX,
+    RF_PRC_TEST_TX,
+    RF_PRC_TEST_RX,
+}rfProccess_te;
+typedef void (*rfRxCallBack)(uint8_t status, rfRxPacket_ts packet);
+extern const loraBaudrateFrame_ts loraBaudrateFrame[MAX_RF_BAUDRATE_COUNT];
+
+void myRadio_init(int agr0, void *agr1_ptr);
+void myRadio_abort(void);
+uint32_t myRadio_getFrequency(void);
+void myRadio_setFrequency(uint32_t freq);
+int8_t myRadio_getTxPower(void);
+void myRadio_setTxPower(int8_t power);
+uint32_t myRadio_getBaudrate(void);
+void myRadio_setBaudrate(uint32_t br);
+void myRadio_setRfParams(uint8_t sf, uint8_t bw, uint8_t cr);
+void myRadio_setChipType(uint8_t type);
+uint8_t myRadio_getChipType(void);
+int16_t myRadio_getRssi(void);
+void myRadio_transmit(rfTxPacket_ts *packet);
+void myRadio_receiver(void);
+void myRadio_setCtrl(controlMode_te mode, uint32_t value);
+
+#endif
+

+ 322 - 322
radio/myRadio_gpio.c → radio--/myRadio_gpio.c

@@ -1,322 +1,322 @@
-#include "myRadio_gpio.h"
-#include "stm32f10x.h"
-#include "stm32f10x_exti.h"
-
-RADIO_GPIO_CALLBACK gpioCallback;
-int spiMosiMode = 0;
-//---------------------------射频SPI驱动部分---------------------
-void BOARD_SPI_NSS_H(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_CSN, BOARD_PIN_H);
-}
-void BOARD_SPI_NSS_L(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_CSN, BOARD_PIN_L);
-}
-void BOARD_SPI_SCK_H(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_CLK, BOARD_PIN_H);
-}
-void BOARD_SPI_SCK_L(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_CLK, BOARD_PIN_L);
-}
-void BOARD_SPI_MISO_H(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_MISO, BOARD_PIN_H);
-}
-void BOARD_SPI_MISO_L(void)
-{
-    GPIO_WriteBit(BOARD_GPIO_SPI_MISO, BOARD_PIN_L);
-}
-void BOARD_SPI_MOSI_H(void)
-{
-#ifdef SPI_SOFT_3LINE
-    int ret;
-    if (spiMosiMode == 0)
-    {
-        GPIO_InitTypeDef GPIO_InitStructure;
-        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
-        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
-        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
-    }
-    spiMosiMode = 1;
-#endif
-    GPIO_WriteBit(BOARD_GPIO_SPI_MOSI, BOARD_PIN_H);
-}
-void BOARD_SPI_MOSI_L(void)
-{
-#ifdef SPI_SOFT_3LINE
-    int ret;
-    if (spiMosiMode == 0)
-    {
-        GPIO_InitTypeDef GPIO_InitStructure;
-        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
-        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
-        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
-    }
-    spiMosiMode = 1;
-#endif
-    GPIO_WriteBit(BOARD_GPIO_SPI_MOSI, BOARD_PIN_L);
-}
-uint8_t READ_BOARD_SPI_MISO(void)
-{
-#ifndef SPI_SOFT_3LINE
-    return GPIO_ReadInputDataBit(BOARD_GPIO_SPI_MISO);
-#else
-    int ret;
-    if (spiMosiMode == 1)
-    {
-        GPIO_InitTypeDef GPIO_InitStructure;
-        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
-        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
-        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
-    }
-    spiMosiMode = 0;
-    ret = GPIO_ReadInputDataBit(BOARD_GPIO_SPI_MOSI);
-    return ret;
-#endif
-}
-
-//---------------------------射频驱动IO部分---------------------
-void RF_PAN3029_IRQ_H(void)
-{
-    GPIO_WriteBit(RF_PAN3029_IRQ, BOARD_PIN_H);
-}
-void RF_PAN3029_IRQ_L(void)
-{
-    GPIO_WriteBit(RF_PAN3029_IRQ, BOARD_PIN_L);
-}
-void RF_PAN3029_NRST_H(void)
-{
-    GPIO_WriteBit(RF_PAN3029_NRST, BOARD_PIN_H);
-}
-void RF_PAN3029_NRST_L(void)
-{
-    GPIO_WriteBit(RF_PAN3029_NRST, BOARD_PIN_L);
-}
-void RF_PAN3029_IO3_H(void)
-{
-    GPIO_WriteBit(RF_PAN3029_IO3, BOARD_PIN_H);
-}
-void RF_PAN3029_IO3_L(void)
-{
-    GPIO_WriteBit(RF_PAN3029_IO3, BOARD_PIN_L);
-}
-void RF_EXT_PA_RE_H(void)
-{
-    GPIO_WriteBit(RF_EXTPA_RE, BOARD_PIN_H);
-}
-void RF_EXT_PA_RE_L(void)
-{
-    GPIO_WriteBit(RF_EXTPA_RE, BOARD_PIN_L);
-}
-void RF_EXT_PA_TE_H(void)
-{
-    GPIO_WriteBit(RF_EXTPA_TE, BOARD_PIN_H);
-}
-void RF_EXT_PA_TE_L(void)
-{
-    GPIO_WriteBit(RF_EXTPA_TE, BOARD_PIN_L);
-}
-uint8_t READ_RF_PAN3029_IRQ(void)
-{
-    return GPIO_ReadInputDataBit(RF_PAN3029_IRQ);
-}
-void EXTI0_IRQHandler(void)
-{
-    if(EXTI_GetITStatus(EXTI_Line0) != RESET)
-    {
-        /* Clear the EXTI line 1 pending bit */
-        EXTI_ClearITPendingBit(EXTI_Line0);
-        if (READ_RF_PAN3029_IRQ())
-        {
-            gpioCallback(1);
-        }
-        
-    }
-}
-// BOARD_GPIOB
-void myRadio_gpio_irq_init()
-{
-    NVIC_InitTypeDef  NVIC_InitStructure;
-    EXTI_InitTypeDef  EXTI_InitStructure;
-    GPIO_InitTypeDef  GPIO_InitStructure;
-
-    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IRQ_PIN;         
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_Init(RF_PAN3029_IRQ_PORT, &GPIO_InitStructure);
-
-    EXTI_ClearITPendingBit(EXTI_Line0);
-    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
-    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
-    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
-    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
-    EXTI_Init(&EXTI_InitStructure);
-    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
-    /* Enable and set EXTI1 Interrupt */
-    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
-    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
-    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
-    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
-    NVIC_Init(&NVIC_InitStructure);
-}
-void myRadio_gpio_init(RADIO_GPIO_CALLBACK cb)
-{
-    GPIO_InitTypeDef  GPIO_InitStructure;
-	SPI_InitTypeDef  SPI_InitStructure;
-    
-#if defined(SPI_HARD)    
-    //----------SPI1时钟使能
-    RCC_APB2PeriphClockCmd(	RCC_APB2Periph_SPI1, ENABLE );
-
-	GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI;
-	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
-	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-	GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
-
-    GPIO_SetBits(BOARD_GPIO_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI);
-    /*!< SPI configuration */
-    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
-    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
-    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
-    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
-    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
-    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
-    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
-
-    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
-    SPI_InitStructure.SPI_CRCPolynomial = 7;
-    SPI_Init(SPI1, &SPI_InitStructure);
-
-    /*!< Enable the SPI1  */
-    SPI_Cmd(SPI1, ENABLE);
-#else
-
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
-#ifndef SPI_SOFT_3LINE
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MISO;           
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_MISO, &GPIO_InitStructure);
-#endif
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
-    BOARD_SPI_SCK_L();
-
-#endif
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CSN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_CSN, &GPIO_InitStructure);
-
-    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IRQ_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_PAN3029_IRQ_PORT, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_NRST_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_PAN3029_NRST_PORT, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IO3_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_PAN3029_IO3_PORT, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IO11_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_PAN3029_IO11_PORT, &GPIO_InitStructure);
-
-    GPIO_InitStructure.GPIO_Pin = RF_EXTPA_RE_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_EXTPA_RE_PORT, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = RF_EXTPA_TE_PIN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(RF_EXTPA_TE_PORT, &GPIO_InitStructure);
-
-    BOARD_SPI_NSS_H();
-    RF_PAN3029_NRST_H();
-    myRadio_gpio_irq_init();
-    gpioCallback = cb;
-}
-uint8_t myRadioSpi_rwByte(uint8_t byteToWrite)
-{
-    uint16_t i;
-    uint8_t temp;
-    temp = 0;   
-#if defined(SPI_HARD)
-	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
-    {
-        i++;
-        if(i > 2000)return 0;
-    }			  
-	SPI_I2S_SendData(SPI1, byteToWrite); //通过外设SPIx发送一个数据
-	i=0;
-
-	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
-    {
-        i++;
-        if(i > 2000)return 0;
-    }
-    /*!< Return the byte read from the SPI bus */
-    temp = SPI_I2S_ReceiveData(SPI1);
-#else
-    BOARD_SPI_SCK_L();
-    for(i = 0; i < 8; i ++)
-    {
-        if(byteToWrite & 0x80)
-        {
-            BOARD_SPI_MOSI_H();
-        }
-        else
-        {
-            BOARD_SPI_MOSI_L();
-        } 
-
-        byteToWrite <<= 1;
-
-        BOARD_SPI_SCK_H();
-        temp <<= 1;
-        if(READ_BOARD_SPI_MISO())
-        {
-            temp ++; 
-        }
-        BOARD_SPI_SCK_L();
-    }
-#endif
-	return temp;
-}
-
-void myRadioSpi_wBuffer(uint8_t* pData, uint8_t len)
-{
-    uint8_t i;
-    
-    for(i = 0; i < len; i++)
-    {
-        myRadioSpi_rwByte(*pData);
-        pData ++;
-    }
-}
-
-void myRadioSpi_rBuffer(uint8_t* pData, uint8_t len)
-{
-    uint8_t i;
-    
-    for(i = 0; i < len; i++)
-    {
-        *pData = myRadioSpi_rwByte(0xFF);
-        pData ++;
-    }
-}
-
+#include "myRadio_gpio.h"
+#include "stm32f10x.h"
+#include "stm32f10x_exti.h"
+
+RADIO_GPIO_CALLBACK gpioCallback;
+int spiMosiMode = 0;
+//---------------------------射频SPI驱动部分---------------------
+void BOARD_SPI_NSS_H(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_CSN, BOARD_PIN_H);
+}
+void BOARD_SPI_NSS_L(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_CSN, BOARD_PIN_L);
+}
+void BOARD_SPI_SCK_H(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_CLK, BOARD_PIN_H);
+}
+void BOARD_SPI_SCK_L(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_CLK, BOARD_PIN_L);
+}
+void BOARD_SPI_MISO_H(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_MISO, BOARD_PIN_H);
+}
+void BOARD_SPI_MISO_L(void)
+{
+    GPIO_WriteBit(BOARD_GPIO_SPI_MISO, BOARD_PIN_L);
+}
+void BOARD_SPI_MOSI_H(void)
+{
+#ifdef SPI_SOFT_3LINE
+    int ret;
+    if (spiMosiMode == 0)
+    {
+        GPIO_InitTypeDef GPIO_InitStructure;
+        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
+        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
+        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
+    }
+    spiMosiMode = 1;
+#endif
+    GPIO_WriteBit(BOARD_GPIO_SPI_MOSI, BOARD_PIN_H);
+}
+void BOARD_SPI_MOSI_L(void)
+{
+#ifdef SPI_SOFT_3LINE
+    int ret;
+    if (spiMosiMode == 0)
+    {
+        GPIO_InitTypeDef GPIO_InitStructure;
+        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
+        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
+        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
+    }
+    spiMosiMode = 1;
+#endif
+    GPIO_WriteBit(BOARD_GPIO_SPI_MOSI, BOARD_PIN_L);
+}
+uint8_t READ_BOARD_SPI_MISO(void)
+{
+#ifndef SPI_SOFT_3LINE
+    return GPIO_ReadInputDataBit(BOARD_GPIO_SPI_MISO);
+#else
+    int ret;
+    if (spiMosiMode == 1)
+    {
+        GPIO_InitTypeDef GPIO_InitStructure;
+        GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
+        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
+        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+        GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
+    }
+    spiMosiMode = 0;
+    ret = GPIO_ReadInputDataBit(BOARD_GPIO_SPI_MOSI);
+    return ret;
+#endif
+}
+
+//---------------------------射频驱动IO部分---------------------
+void RF_PAN3029_IRQ_H(void)
+{
+    GPIO_WriteBit(RF_PAN3029_IRQ, BOARD_PIN_H);
+}
+void RF_PAN3029_IRQ_L(void)
+{
+    GPIO_WriteBit(RF_PAN3029_IRQ, BOARD_PIN_L);
+}
+void RF_PAN3029_NRST_H(void)
+{
+    GPIO_WriteBit(RF_PAN3029_NRST, BOARD_PIN_H);
+}
+void RF_PAN3029_NRST_L(void)
+{
+    GPIO_WriteBit(RF_PAN3029_NRST, BOARD_PIN_L);
+}
+void RF_PAN3029_IO3_H(void)
+{
+    GPIO_WriteBit(RF_PAN3029_IO3, BOARD_PIN_H);
+}
+void RF_PAN3029_IO3_L(void)
+{
+    GPIO_WriteBit(RF_PAN3029_IO3, BOARD_PIN_L);
+}
+void RF_EXT_PA_RE_H(void)
+{
+    GPIO_WriteBit(RF_EXTPA_RE, BOARD_PIN_H);
+}
+void RF_EXT_PA_RE_L(void)
+{
+    GPIO_WriteBit(RF_EXTPA_RE, BOARD_PIN_L);
+}
+void RF_EXT_PA_TE_H(void)
+{
+    GPIO_WriteBit(RF_EXTPA_TE, BOARD_PIN_H);
+}
+void RF_EXT_PA_TE_L(void)
+{
+    GPIO_WriteBit(RF_EXTPA_TE, BOARD_PIN_L);
+}
+uint8_t READ_RF_PAN3029_IRQ(void)
+{
+    return GPIO_ReadInputDataBit(RF_PAN3029_IRQ);
+}
+void EXTI0_IRQHandler(void)
+{
+    if(EXTI_GetITStatus(EXTI_Line0) != RESET)
+    {
+        /* Clear the EXTI line 1 pending bit */
+        EXTI_ClearITPendingBit(EXTI_Line0);
+        if (READ_RF_PAN3029_IRQ())
+        {
+            gpioCallback(1);
+        }
+        
+    }
+}
+// BOARD_GPIOB
+void myRadio_gpio_irq_init()
+{
+    NVIC_InitTypeDef  NVIC_InitStructure;
+    EXTI_InitTypeDef  EXTI_InitStructure;
+    GPIO_InitTypeDef  GPIO_InitStructure;
+
+    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IRQ_PIN;         
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_Init(RF_PAN3029_IRQ_PORT, &GPIO_InitStructure);
+
+    EXTI_ClearITPendingBit(EXTI_Line0);
+    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
+    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
+    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
+    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
+    EXTI_Init(&EXTI_InitStructure);
+    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
+    /* Enable and set EXTI1 Interrupt */
+    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
+    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
+    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
+    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+    NVIC_Init(&NVIC_InitStructure);
+}
+void myRadio_gpio_init(RADIO_GPIO_CALLBACK cb)
+{
+    GPIO_InitTypeDef  GPIO_InitStructure;
+	SPI_InitTypeDef  SPI_InitStructure;
+    
+#if defined(SPI_HARD)    
+    //----------SPI1时钟使能
+    RCC_APB2PeriphClockCmd(	RCC_APB2Periph_SPI1, ENABLE );
+
+	GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI;
+	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
+	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+	GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
+
+    GPIO_SetBits(BOARD_GPIO_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI);
+    /*!< SPI configuration */
+    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
+    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
+    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
+    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
+    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
+    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
+    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
+
+    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
+    SPI_InitStructure.SPI_CRCPolynomial = 7;
+    SPI_Init(SPI1, &SPI_InitStructure);
+
+    /*!< Enable the SPI1  */
+    SPI_Cmd(SPI1, ENABLE);
+#else
+
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
+#ifndef SPI_SOFT_3LINE
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MISO;           
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_MISO, &GPIO_InitStructure);
+#endif
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
+    BOARD_SPI_SCK_L();
+
+#endif
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CSN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_CSN, &GPIO_InitStructure);
+
+    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IRQ_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_PAN3029_IRQ_PORT, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_NRST_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_PAN3029_NRST_PORT, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IO3_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_PAN3029_IO3_PORT, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = RF_PAN3029_IO11_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_PAN3029_IO11_PORT, &GPIO_InitStructure);
+
+    GPIO_InitStructure.GPIO_Pin = RF_EXTPA_RE_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_EXTPA_RE_PORT, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = RF_EXTPA_TE_PIN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(RF_EXTPA_TE_PORT, &GPIO_InitStructure);
+
+    BOARD_SPI_NSS_H();
+    RF_PAN3029_NRST_H();
+    myRadio_gpio_irq_init();
+    gpioCallback = cb;
+}
+uint8_t myRadioSpi_rwByte(uint8_t byteToWrite)
+{
+    uint16_t i;
+    uint8_t temp;
+    temp = 0;   
+#if defined(SPI_HARD)
+	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
+    {
+        i++;
+        if(i > 2000)return 0;
+    }			  
+	SPI_I2S_SendData(SPI1, byteToWrite); //通过外设SPIx发送一个数据
+	i=0;
+
+	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
+    {
+        i++;
+        if(i > 2000)return 0;
+    }
+    /*!< Return the byte read from the SPI bus */
+    temp = SPI_I2S_ReceiveData(SPI1);
+#else
+    BOARD_SPI_SCK_L();
+    for(i = 0; i < 8; i ++)
+    {
+        if(byteToWrite & 0x80)
+        {
+            BOARD_SPI_MOSI_H();
+        }
+        else
+        {
+            BOARD_SPI_MOSI_L();
+        } 
+
+        byteToWrite <<= 1;
+
+        BOARD_SPI_SCK_H();
+        temp <<= 1;
+        if(READ_BOARD_SPI_MISO())
+        {
+            temp ++; 
+        }
+        BOARD_SPI_SCK_L();
+    }
+#endif
+	return temp;
+}
+
+void myRadioSpi_wBuffer(uint8_t* pData, uint8_t len)
+{
+    uint8_t i;
+    
+    for(i = 0; i < len; i++)
+    {
+        myRadioSpi_rwByte(*pData);
+        pData ++;
+    }
+}
+
+void myRadioSpi_rBuffer(uint8_t* pData, uint8_t len)
+{
+    uint8_t i;
+    
+    for(i = 0; i < len; i++)
+    {
+        *pData = myRadioSpi_rwByte(0xFF);
+        pData ++;
+    }
+}
+

+ 89 - 89
radio/myRadio_gpio.h → radio--/myRadio_gpio.h

@@ -1,89 +1,89 @@
-
-#ifndef __MYRADIO_GPIO_H_
-#define __MYRADIO_GPIO_H_
-
-#include <stdint.h>
-
-#include "stm32f10x.h"
-#include "stm32f10x_gpio.h"
-#include "stm32f10x_spi.h"
-#include "board.h"
-
-#ifndef SPI_SOFT_3LINE
-    #define SPI_HARD
-#endif
-// #define SPI_SOFT_3LINE
-
-typedef void (*RADIO_GPIO_CALLBACK)(uint8_t index);
-
-//-------------射频模块引脚映射到转接板排针---------------
-#define BOARD_PIN_SPI_CLK       GPIO_Pin_5     //SPI1_SCK(8)
-#define BOARD_PORT_SPI_CLK      GPIOA          //DAC_OUT2 ADC12_IN5
-#define BOARD_GPIO_SPI_CLK      BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK          //
-
-#define BOARD_PIN_SPI_MISO      GPIO_Pin_6    //SPI1_MISO(8)
-#define BOARD_PORT_SPI_MISO     GPIOA         // TIM8_BKIN/ADC12_IN6
-                                              // TIM3_CH1(8)
-#define BOARD_GPIO_SPI_MISO     BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO         //
-
-#define BOARD_PIN_SPI_MOSI      GPIO_Pin_7    //SPI1_MOSI(8)/
-#define BOARD_PORT_SPI_MOSI     GPIOA         // TIM8_CH1N/ADC12_IN7
-                                            // TIM3_CH2(8)
-#define BOARD_GPIO_SPI_MOSI     BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI         //
-
-#define BOARD_PIN_SPI_CSN       GPIO_Pin_4     //SPI1_NSS(8)/
-#define BOARD_PORT_SPI_CSN      GPIOA          // USART2_CK(8)
-                                               // DAC_OUT1/ADC12_IN4
-#define BOARD_GPIO_SPI_CSN      BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN          //
-//用于射频中断响应
-#define RF_PAN3029_IRQ_PIN      GPIO_Pin_0  //
-#define RF_PAN3029_IRQ_PORT     GPIOB
-#define RF_PAN3029_IRQ          RF_PAN3029_IRQ_PORT, RF_PAN3029_IRQ_PIN          //
-//
-#define RF_PAN3029_NRST_PIN     GPIO_Pin_1  //
-#define RF_PAN3029_NRST_PORT    GPIOB
-#define RF_PAN3029_NRST         RF_PAN3029_NRST_PORT, RF_PAN3029_NRST_PIN          //
-//
-#define RF_PAN3029_IO3_PIN      GPIO_Pin_5  //
-#define RF_PAN3029_IO3_PORT     GPIOC
-#define RF_PAN3029_IO3          RF_PAN3029_IO3_PORT, RF_PAN3029_IO3_PIN          //
-//
-#define RF_PAN3029_IO11_PIN     GPIO_Pin_2  //
-#define RF_PAN3029_IO11_PORT    GPIOA
-#define RF_PAN3029_IO11         RF_PAN3029_IO11_PORT, RF_PAN3029_IO11_PIN          //
-//用于大功率模块的PA和LNA控制脚
-#define RF_EXTPA_RE_PIN         GPIO_Pin_10  //
-#define RF_EXTPA_RE_PORT        GPIOB
-#define RF_EXTPA_RE             RF_EXTPA_RE_PORT, RF_EXTPA_RE_PIN          //
-#define RF_EXTPA_TE_PIN         GPIO_Pin_11  //
-#define RF_EXTPA_TE_PORT        GPIOB
-#define RF_EXTPA_TE             RF_EXTPA_TE_PORT, RF_EXTPA_TE_PIN          //
-//-------------射频模块引脚映射到转接板排针---------------END
-
-uint8_t READ_RF_PAN3029_IRQ(void);
-void RF_PAN3029_IRQ_H(void);
-void RF_PAN3029_IRQ_L(void);
-
-void RF_EXT_PA_RE_H(void);
-void RF_EXT_PA_RE_L(void);
-void RF_EXT_PA_TE_H(void);
-void RF_EXT_PA_TE_L(void);
-
-#define RF_EXT_PA_TO_TX() RF_EXT_PA_TE_H();RF_EXT_PA_RE_L()
-#define RF_EXT_PA_TO_RX() RF_EXT_PA_TE_L();RF_EXT_PA_RE_H()
-#define RF_EXT_PA_TO_IDLE() RF_EXT_PA_TE_L();RF_EXT_PA_RE_L()
-
-void BOARD_SPI_NSS_H(void);
-void BOARD_SPI_NSS_L(void);
-
-//-------------将封装的API映射到射频模块硬件层---------------
-void myRadio_gpio_init(RADIO_GPIO_CALLBACK cb);
-uint8_t myRadioSpi_rwByte(uint8_t byteToWrite);
-void myRadioSpi_wBuffer(uint8_t* pData, uint8_t len);
-void myRadioSpi_rBuffer(uint8_t* pData, uint8_t len);
-
-#define SpiReadWrite(p)         myRadioSpi_rwByte(p)
-#define SpiWriteData(p1, p2)    myRadioSpi_wBuffer(p2, p1)
-#define SpiReadData(p1, p2)     myRadioSpi_rBuffer(p2, p1)
-//-------------将封装的API映射到射频模块硬件层---------------END
-#endif
+
+#ifndef __MYRADIO_GPIO_H_
+#define __MYRADIO_GPIO_H_
+
+#include <stdint.h>
+
+#include "stm32f10x.h"
+#include "stm32f10x_gpio.h"
+#include "stm32f10x_spi.h"
+#include "board.h"
+
+#ifndef SPI_SOFT_3LINE
+    #define SPI_HARD
+#endif
+// #define SPI_SOFT_3LINE
+
+typedef void (*RADIO_GPIO_CALLBACK)(uint8_t index);
+
+//-------------射频模块引脚映射到转接板排针---------------
+#define BOARD_PIN_SPI_CLK       GPIO_Pin_5     //SPI1_SCK(8)
+#define BOARD_PORT_SPI_CLK      GPIOA          //DAC_OUT2 ADC12_IN5
+#define BOARD_GPIO_SPI_CLK      BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK          //
+
+#define BOARD_PIN_SPI_MISO      GPIO_Pin_6    //SPI1_MISO(8)
+#define BOARD_PORT_SPI_MISO     GPIOA         // TIM8_BKIN/ADC12_IN6
+                                              // TIM3_CH1(8)
+#define BOARD_GPIO_SPI_MISO     BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO         //
+
+#define BOARD_PIN_SPI_MOSI      GPIO_Pin_7    //SPI1_MOSI(8)/
+#define BOARD_PORT_SPI_MOSI     GPIOA         // TIM8_CH1N/ADC12_IN7
+                                            // TIM3_CH2(8)
+#define BOARD_GPIO_SPI_MOSI     BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI         //
+
+#define BOARD_PIN_SPI_CSN       GPIO_Pin_4     //SPI1_NSS(8)/
+#define BOARD_PORT_SPI_CSN      GPIOA          // USART2_CK(8)
+                                               // DAC_OUT1/ADC12_IN4
+#define BOARD_GPIO_SPI_CSN      BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN          //
+//用于射频中断响应
+#define RF_PAN3029_IRQ_PIN      GPIO_Pin_0  //
+#define RF_PAN3029_IRQ_PORT     GPIOB
+#define RF_PAN3029_IRQ          RF_PAN3029_IRQ_PORT, RF_PAN3029_IRQ_PIN          //
+//
+#define RF_PAN3029_NRST_PIN     GPIO_Pin_1  //
+#define RF_PAN3029_NRST_PORT    GPIOB
+#define RF_PAN3029_NRST         RF_PAN3029_NRST_PORT, RF_PAN3029_NRST_PIN          //
+//
+#define RF_PAN3029_IO3_PIN      GPIO_Pin_5  //
+#define RF_PAN3029_IO3_PORT     GPIOC
+#define RF_PAN3029_IO3          RF_PAN3029_IO3_PORT, RF_PAN3029_IO3_PIN          //
+//
+#define RF_PAN3029_IO11_PIN     GPIO_Pin_2  //
+#define RF_PAN3029_IO11_PORT    GPIOA
+#define RF_PAN3029_IO11         RF_PAN3029_IO11_PORT, RF_PAN3029_IO11_PIN          //
+//用于大功率模块的PA和LNA控制脚
+#define RF_EXTPA_RE_PIN         GPIO_Pin_10  //
+#define RF_EXTPA_RE_PORT        GPIOB
+#define RF_EXTPA_RE             RF_EXTPA_RE_PORT, RF_EXTPA_RE_PIN          //
+#define RF_EXTPA_TE_PIN         GPIO_Pin_11  //
+#define RF_EXTPA_TE_PORT        GPIOB
+#define RF_EXTPA_TE             RF_EXTPA_TE_PORT, RF_EXTPA_TE_PIN          //
+//-------------射频模块引脚映射到转接板排针---------------END
+
+uint8_t READ_RF_PAN3029_IRQ(void);
+void RF_PAN3029_IRQ_H(void);
+void RF_PAN3029_IRQ_L(void);
+
+void RF_EXT_PA_RE_H(void);
+void RF_EXT_PA_RE_L(void);
+void RF_EXT_PA_TE_H(void);
+void RF_EXT_PA_TE_L(void);
+
+#define RF_EXT_PA_TO_TX() RF_EXT_PA_TE_H();RF_EXT_PA_RE_L()
+#define RF_EXT_PA_TO_RX() RF_EXT_PA_TE_L();RF_EXT_PA_RE_H()
+#define RF_EXT_PA_TO_IDLE() RF_EXT_PA_TE_L();RF_EXT_PA_RE_L()
+
+void BOARD_SPI_NSS_H(void);
+void BOARD_SPI_NSS_L(void);
+
+//-------------将封装的API映射到射频模块硬件层---------------
+void myRadio_gpio_init(RADIO_GPIO_CALLBACK cb);
+uint8_t myRadioSpi_rwByte(uint8_t byteToWrite);
+void myRadioSpi_wBuffer(uint8_t* pData, uint8_t len);
+void myRadioSpi_rBuffer(uint8_t* pData, uint8_t len);
+
+#define SpiReadWrite(p)         myRadioSpi_rwByte(p)
+#define SpiWriteData(p1, p2)    myRadioSpi_wBuffer(p2, p1)
+#define SpiReadData(p1, p2)     myRadioSpi_rBuffer(p2, p1)
+//-------------将封装的API映射到射频模块硬件层---------------END
+#endif

+ 0 - 0
radio/pan3029.c → radio--/pan3029.c


+ 0 - 0
radio/pan3029.h → radio--/pan3029.h


+ 158 - 158
radio/pan3029_port.c → radio--/pan3029_port.c

@@ -1,158 +1,158 @@
-/*******************************************************************************
- * @note Copyright (C) 2023 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
- *
- * @file pan3029.c
- * @brief
- *
- * @history - V0.2, 2023-08-04
-*******************************************************************************/
-#include "pan3029_port.h"
-
-extern uint8_t spi_tx_rx(uint8_t tx_data);
-
-rf_port_t rf_port= 
-{
-	.antenna_init = rf_antenna_init,
-	.tcxo_init = rf_tcxo_init,
-	.set_tx = rf_antenna_tx,
-	.set_rx = rf_antenna_rx,
-	.antenna_close = rf_antenna_close,
-	.tcxo_close = rf_tcxo_close,
-	.spi_readwrite = spi_readwritebyte,
-	.spi_cs_high = spi_cs_set_high,
-	.spi_cs_low = spi_cs_set_low,
-	.delayms = rf_delay_ms, 
-	.delayus = rf_delay_us,
-};
-
-/**
- * @brief spi_readwritebyte
- * @param[in] <tx_data> spi readwritebyte value
- * @return result
- */
-uint8_t spi_readwritebyte(uint8_t tx_data)
-{
-	return myRadioSpi_rwByte(tx_data);
-}
-
-/**
- * @brief spi_cs_set_high
- * @param[in] <none>
- * @return none
- */
-void spi_cs_set_high(void)
-{
-	BOARD_SPI_NSS_H();
-}
-
-/**
- * @brief spi_cs_set_low
- * @param[in] <none>
- * @return none
- */
-void spi_cs_set_low(void)
-{
-	BOARD_SPI_NSS_L();
-}
-void _delay(uint32_t time_ms)
-{
-    uint32_t i, j;
-    i = time_ms;
-    while (i --)
-    {
-        for ( j = 0; j < 10; j++)
-        {
-            ;
-        }
-    }
-}
-/**
- * @brief rf_delay_ms
- * @param[in] <time> ms
- * @return none
- */
-void rf_delay_ms(uint32_t time)
-{
-	delay1ms(time);
-}
-
-/**
- * @brief rf_delay_us
- * @param[in] <time> us
- * @return none
- */
-void rf_delay_us(uint32_t time)
-{
-	delay10us(time/10);
-}
-
-/**
- * @brief do PAN3029 TX/RX IO to initialize
- * @param[in] <none>
- * @return none
- */
-void rf_antenna_init(void)
-{
-	PAN3029_set_gpio_output(MODULE_GPIO_RX);
-	PAN3029_set_gpio_output(MODULE_GPIO_TX);
-	PAN3029_set_gpio_input(MODULE_GPIO_CAD_IRQ);
-
-	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);
-	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
-	PAN3029_set_gpio_state(MODULE_GPIO_CAD_IRQ, 0);
-}
-
-/**
- * @brief do PAN3029 XTAL IO to initialize
- * @param[in] <none>
- * @return none
- */
-void rf_tcxo_init(void)
-{
-//	PAN3029_set_gpio_output(MODULE_GPIO_TCXO);
-//	PAN3029_set_gpio_state(MODULE_GPIO_TCXO, 1);
-}
-
-/**
- * @brief close PAN3029 XTAL IO 
- * @param[in] <none>
- * @return none
- */
-void rf_tcxo_close(void)
-{
-//	PAN3029_set_gpio_output(MODULE_GPIO_TCXO);
-//	PAN3029_set_gpio_state(MODULE_GPIO_TCXO, 0);
-}
-/**
- * @brief change PAN3029 IO to rx
- * @param[in] <none>
- * @return none
- */
-void rf_antenna_rx(void)
-{ 
-	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
-	PAN3029_set_gpio_state(MODULE_GPIO_RX, 1);
-}
-
-/**
- * @brief change PAN3029 IO to tx
- * @param[in] <none>
- * @return none
- */
-void rf_antenna_tx(void)
-{
-	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);      
-	PAN3029_set_gpio_state(MODULE_GPIO_TX, 1);
-}
-
-/**
- * @brief change PAN3029 IO to close
- * @param[in] <none>
- * @return none
- */
-void rf_antenna_close(void)
-{
-	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
-	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);
-}
-
+/*******************************************************************************
+ * @note Copyright (C) 2023 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
+ *
+ * @file pan3029.c
+ * @brief
+ *
+ * @history - V0.2, 2023-08-04
+*******************************************************************************/
+#include "pan3029_port.h"
+
+extern uint8_t spi_tx_rx(uint8_t tx_data);
+
+rf_port_t rf_port= 
+{
+	.antenna_init = rf_antenna_init,
+	.tcxo_init = rf_tcxo_init,
+	.set_tx = rf_antenna_tx,
+	.set_rx = rf_antenna_rx,
+	.antenna_close = rf_antenna_close,
+	.tcxo_close = rf_tcxo_close,
+	.spi_readwrite = spi_readwritebyte,
+	.spi_cs_high = spi_cs_set_high,
+	.spi_cs_low = spi_cs_set_low,
+	.delayms = rf_delay_ms, 
+	.delayus = rf_delay_us,
+};
+
+/**
+ * @brief spi_readwritebyte
+ * @param[in] <tx_data> spi readwritebyte value
+ * @return result
+ */
+uint8_t spi_readwritebyte(uint8_t tx_data)
+{
+	return myRadioSpi_rwByte(tx_data);
+}
+
+/**
+ * @brief spi_cs_set_high
+ * @param[in] <none>
+ * @return none
+ */
+void spi_cs_set_high(void)
+{
+	BOARD_SPI_NSS_H();
+}
+
+/**
+ * @brief spi_cs_set_low
+ * @param[in] <none>
+ * @return none
+ */
+void spi_cs_set_low(void)
+{
+	BOARD_SPI_NSS_L();
+}
+void _delay(uint32_t time_ms)
+{
+    uint32_t i, j;
+    i = time_ms;
+    while (i --)
+    {
+        for ( j = 0; j < 10; j++)
+        {
+            ;
+        }
+    }
+}
+/**
+ * @brief rf_delay_ms
+ * @param[in] <time> ms
+ * @return none
+ */
+void rf_delay_ms(uint32_t time)
+{
+	delay1ms(time);
+}
+
+/**
+ * @brief rf_delay_us
+ * @param[in] <time> us
+ * @return none
+ */
+void rf_delay_us(uint32_t time)
+{
+	delay10us(time/10);
+}
+
+/**
+ * @brief do PAN3029 TX/RX IO to initialize
+ * @param[in] <none>
+ * @return none
+ */
+void rf_antenna_init(void)
+{
+	PAN3029_set_gpio_output(MODULE_GPIO_RX);
+	PAN3029_set_gpio_output(MODULE_GPIO_TX);
+	PAN3029_set_gpio_input(MODULE_GPIO_CAD_IRQ);
+
+	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);
+	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
+	PAN3029_set_gpio_state(MODULE_GPIO_CAD_IRQ, 0);
+}
+
+/**
+ * @brief do PAN3029 XTAL IO to initialize
+ * @param[in] <none>
+ * @return none
+ */
+void rf_tcxo_init(void)
+{
+//	PAN3029_set_gpio_output(MODULE_GPIO_TCXO);
+//	PAN3029_set_gpio_state(MODULE_GPIO_TCXO, 1);
+}
+
+/**
+ * @brief close PAN3029 XTAL IO 
+ * @param[in] <none>
+ * @return none
+ */
+void rf_tcxo_close(void)
+{
+//	PAN3029_set_gpio_output(MODULE_GPIO_TCXO);
+//	PAN3029_set_gpio_state(MODULE_GPIO_TCXO, 0);
+}
+/**
+ * @brief change PAN3029 IO to rx
+ * @param[in] <none>
+ * @return none
+ */
+void rf_antenna_rx(void)
+{ 
+	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
+	PAN3029_set_gpio_state(MODULE_GPIO_RX, 1);
+}
+
+/**
+ * @brief change PAN3029 IO to tx
+ * @param[in] <none>
+ * @return none
+ */
+void rf_antenna_tx(void)
+{
+	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);      
+	PAN3029_set_gpio_state(MODULE_GPIO_TX, 1);
+}
+
+/**
+ * @brief change PAN3029 IO to close
+ * @param[in] <none>
+ * @return none
+ */
+void rf_antenna_close(void)
+{
+	PAN3029_set_gpio_state(MODULE_GPIO_TX, 0);
+	PAN3029_set_gpio_state(MODULE_GPIO_RX, 0);
+}
+

+ 57 - 57
radio/pan3029_port.h → radio--/pan3029_port.h

@@ -1,57 +1,57 @@
-/*******************************************************************************
- * @note Copyright (C) 2023 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
- *
- * @file radio.c
- * @brief
- *
- * @history - V1.0, 2023-05-21
-*******************************************************************************/
-#ifndef __pan3029_PORT_H_
-#define __pan3029_PORT_H_
-#include "stdio.h"
-#include "stdint.h"
-#include "stdlib.h"
-#include "stdbool.h"
-#include "math.h"
-#include "pan3029.h"
-#include "radio.h"
-#include "myRadio_gpio.h"
-
-#define SPI_WRITE_CHECK         1
-
-#define MODULE_GPIO_TX          0
-#define MODULE_GPIO_RX          10
-#define MODULE_GPIO_TCXO        3
-#define MODULE_GPIO_CAD_IRQ     11
-
-typedef struct {
-	void (*antenna_init)(void);
-	void (*tcxo_init)(void);
-	void (*set_tx)(void);
-	void (*set_rx)(void);
-	void (*antenna_close)(void);
-	void (*tcxo_close)(void);
-	uint8_t (*spi_readwrite)(uint8_t tx_data);
-	void (*spi_cs_high)(void);
-	void (*spi_cs_low)(void);
-	void (*delayms)(uint32_t time);
-	void (*delayus)(uint32_t time);
-}rf_port_t;
-
-extern rf_port_t rf_port;
-
-uint8_t spi_readwritebyte(uint8_t tx_data);
-void spi_cs_set_high(void);
-void spi_cs_set_low(void);
-void rf_delay_ms(uint32_t time);
-void rf_delay_us(uint32_t time);
-void rf_antenna_init(void);
-void rf_tcxo_init(void);
-void rf_tcxo_close(void);
-void rf_antenna_rx(void);
-void rf_antenna_tx(void);
-void rf_antenna_close(void);
-
-#endif
-
-
+/*******************************************************************************
+ * @note Copyright (C) 2023 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
+ *
+ * @file radio.c
+ * @brief
+ *
+ * @history - V1.0, 2023-05-21
+*******************************************************************************/
+#ifndef __pan3029_PORT_H_
+#define __pan3029_PORT_H_
+#include "stdio.h"
+#include "stdint.h"
+#include "stdlib.h"
+#include "stdbool.h"
+#include "math.h"
+#include "pan3029.h"
+#include "radio.h"
+#include "myRadio_gpio.h"
+
+#define SPI_WRITE_CHECK         1
+
+#define MODULE_GPIO_TX          0
+#define MODULE_GPIO_RX          10
+#define MODULE_GPIO_TCXO        3
+#define MODULE_GPIO_CAD_IRQ     11
+
+typedef struct {
+	void (*antenna_init)(void);
+	void (*tcxo_init)(void);
+	void (*set_tx)(void);
+	void (*set_rx)(void);
+	void (*antenna_close)(void);
+	void (*tcxo_close)(void);
+	uint8_t (*spi_readwrite)(uint8_t tx_data);
+	void (*spi_cs_high)(void);
+	void (*spi_cs_low)(void);
+	void (*delayms)(uint32_t time);
+	void (*delayus)(uint32_t time);
+}rf_port_t;
+
+extern rf_port_t rf_port;
+
+uint8_t spi_readwritebyte(uint8_t tx_data);
+void spi_cs_set_high(void);
+void spi_cs_set_low(void);
+void rf_delay_ms(uint32_t time);
+void rf_delay_us(uint32_t time);
+void rf_antenna_init(void);
+void rf_tcxo_init(void);
+void rf_tcxo_close(void);
+void rf_antenna_rx(void);
+void rf_antenna_tx(void);
+void rf_antenna_close(void);
+
+#endif
+
+

+ 0 - 0
radio/radio.c → radio--/radio.c


+ 0 - 0
radio/radio.h → radio--/radio.h