|
|
@@ -1,5 +1,4 @@
|
|
|
|
|
|
-[toc]
|
|
|
|
|
|
<center>
|
|
|
<text style="font-size:70px;color:red;" >
|
|
|
@@ -21,35 +20,7 @@
|
|
|
|
|
|
## 已适配的无线模块
|
|
|
|
|
|
-- VG4130SxxxN0S1系列
|
|
|
-
|
|
|
-## IO口定义
|
|
|
-
|
|
|
-| 序号 | 模块IO | MCU IO| 转接板排针 | 模块功能 | 必需 | 备注 |
|
|
|
-|:----:|:----:|:----:|:----:|:----:|:----:|----|
|
|
|
-| 1 | IRQ | PB0 | IO0 | 收发状态中断信号输出 | ✓ | 输出高电平,外部可做上升沿触发检测 |
|
|
|
-| 2 | NRST | PB1 | IO1 | 芯片复位脚 | N | 可以不控制,悬空或者置高 |
|
|
|
-| 3 | DIO03 | PC5 | IO2 | | N | |
|
|
|
-| 4 | DIO11 | PA2 | IO3 | | N | |
|
|
|
-| 5 | NC | | | | X | |
|
|
|
-| 6 | NC | | | | X | |
|
|
|
-| 7 | VCC | | VCC | | ✓ | |
|
|
|
-| 8 | GND | | G | | ✓ | |
|
|
|
-| 9 | GND | | G | | ✓ | |
|
|
|
-| 10 | NSS | PA4 | NSS | NSS | ✓ | 从机SPI片选脚 |
|
|
|
-| 11 | MOSI | PA7 | DO | MOSI | ✓ | 主机SPI数据发送,从机SPI数据接收 |
|
|
|
-| 12 | MISO | PA6 | DI | MISO | P | 主机SPI数据接收,从机SPI数据发送,3线SPI可以不接 |
|
|
|
-| 13 | SCK | PA5 | SCK | SCK | ✓ | 主机SPI时钟输出 |
|
|
|
-| 14 | NC | | | | X | |
|
|
|
-| 15 | GND | | G | | ✓ | |
|
|
|
-| 16 | ANT | | | | ✓ | |
|
|
|
-
|
|
|
-
|
|
|
-说明:
|
|
|
-- `✓`:表示必须连接
|
|
|
-- `N`:表示可以根据实际需要选择是否连接
|
|
|
-- `P`:表示根据SPI模式选择是否连接
|
|
|
-- `X`:表示不需要连接
|
|
|
+- PAN312xSxxxN0S1系列
|
|
|
|
|
|
## SPI驱动接口
|
|
|
- 固件已适配3线和4线SPI接口
|
|
|
@@ -160,9 +131,7 @@ void myRadio_abort(void)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- RF_EXT_PA_TO_IDLE();
|
|
|
- // rf_deepsleep();
|
|
|
- rf_sleep();
|
|
|
+
|
|
|
}
|
|
|
```
|
|
|
### 2、射频模块进入接收状态
|
|
|
@@ -174,21 +143,7 @@ void myRadio_receiver(void)
|
|
|
{
|
|
|
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;
|
|
|
}
|
|
|
```
|
|
|
@@ -201,28 +156,7 @@ void myRadio_transmit(rfTxPacket_ts *packet)
|
|
|
{
|
|
|
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;
|
|
|
}
|
|
|
```
|
|
|
@@ -239,22 +173,7 @@ 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();
|
|
|
@@ -289,62 +208,6 @@ void myRadio_process(void)
|
|
|
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);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
```
|
|
|
### 6、无线波特率设置
|
|
|
@@ -354,11 +217,7 @@ void myRadio_process(void)
|
|
|
|
|
|
## 版本更新
|
|
|
- V10
|
|
|
- - 优化发射功率设置
|
|
|
-- V11
|
|
|
- - 更改基础频点为433000000
|
|
|
-- V12
|
|
|
- - 增加同步字设置,默认为0x45
|
|
|
+ -初始版本
|
|
|
|
|
|
## 免责说明
|
|
|
1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。
|