yincheng.zhong
2024-02-06 a6c4135e127ac1d14023101eb364d61fac7e9166
Src/radio/Lora.c
@@ -220,13 +220,17 @@
    memcpy(lp_count,&rec_lp_count,2);
    return rxbuff_len;
}
uint16_t GetLoraSyncCount(void)
{
    return rec_lp_count;
}
uint8_t lora_up_rec_flag;
extern uint16_t tx_num;
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
{
    rec_lp_count = HAL_LPTIM_ReadCounter(&hlptim1);
    rxbuff_len = size;
    memcpy( rxbuffer, payload, BufferSize );
    memcpy( rxbuffer, payload, size );
    RssiValue = rssi;
    SnrValue = snr;
    
@@ -267,22 +271,14 @@
    RadioEvents.RxTimeout = OnRxTimeout;
    RadioEvents.RxError = OnRxError;
    
        Radio.Init( &RadioEvents );
       Radio.SetChannel( RF_FREQUENCY );
      Radio.SetTxConfig( MODEM_LORA, 22, 0, LORA_BANDWIDTH,
                                   LORA_SPREADING_FACTOR, LORA_CODINGRATE,
                                   LORA_PREAMBLE_LENGTH_T, LORA_FIX_LENGTH_PAYLOAD_ON,
                                   false, 0, 0, LORA_IQ_INVERSION_ON_T, 3000 );
          TX_Buffer[0] = 'P';
          TX_Buffer[1] = 'I';
          TX_Buffer[2] = 'N';
          TX_Buffer[3] = tx_num;
          crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//计算得出要发送数据包CRC值
          TX_Buffer[4]=crc_value>>8;
          TX_Buffer[5]=crc_value;
    Radio.Init( &RadioEvents );
    Radio.Standby();
    Radio.Sleep();
//       Radio.SetChannel( UWB_CHANNEL_FRQ );
//      Radio.SetTxConfig( MODEM_LORA, 22, 0, LORA_BANDWIDTH,
//                                   LORA_SPREADING_FACTOR, LORA_CODINGRATE,
//                                   LORA_PREAMBLE_LENGTH_T, LORA_FIX_LENGTH_PAYLOAD_ON,
//                                   false, 0, 0, LORA_IQ_INVERSION_ON_T, 3000 );
}
@@ -319,17 +315,21 @@
{
    return flag_lora_wait_sync;
}
void SwitchLoraSettings(uint32_t freq,uint8_t sf)
void SwitchLoraSettings(uint32_t freq,uint8_t sf,uint8_t power)
{
    RadioEvents.TxDone = OnTxDone;
    RadioEvents.RxDone = OnRxDone;
    RadioEvents.TxTimeout = OnTxTimeout;
    RadioEvents.RxTimeout = OnRxTimeout;
    RadioEvents.RxError = OnRxError;
    Radio.Init( &RadioEvents );
    Radio.SetChannel( freq );
    
    Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, 2,
//    RadioEvents.TxDone = OnTxDone;
//    RadioEvents.RxDone = OnRxDone;
//    RadioEvents.TxTimeout = OnTxTimeout;
//    RadioEvents.RxTimeout = OnRxTimeout;
//    RadioEvents.RxError = OnRxError;
    //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
//    Radio.Init( &RadioEvents );
    Radio.Standby();
  //  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
    Radio.SetChannel( freq );
    Radio.SetTxConfig( MODEM_LORA, power, 0, 2,
    sf, LORA_CODINGRATE,LORA_PREAMBLE_LENGTH_T, LORA_FIX_LENGTH_PAYLOAD_ON,
    false, 0, 0, LORA_IQ_INVERSION_ON_T, 3000 );
@@ -337,29 +337,10 @@
    sf,LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH_R,
    LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
    0, false, 0, 0, LORA_IQ_INVERSION_ON_R, 0 );
}
void SwitchLoraSettingstest(uint32_t freq,uint8_t sf)
{
    RadioEvents.TxDone = OnTxDone;
    RadioEvents.RxDone = OnRxDone;
    RadioEvents.TxTimeout = OnTxTimeout;
    RadioEvents.RxTimeout = OnRxTimeout;
    RadioEvents.RxError = OnRxError;
    Radio.Init( &RadioEvents );
    Radio.SetChannel( freq );
    Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, 2,
    sf, LORA_CODINGRATE,LORA_PREAMBLE_LENGTH_T, LORA_FIX_LENGTH_PAYLOAD_ON,
    false, 0, 0, LORA_IQ_INVERSION_ON_T, 3000 );
    Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH,
    sf,LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH_R,
    LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
    0, false, 0, 0, LORA_IQ_INVERSION_ON_R, 1 );
    
    Radio.Rx( RX_TIMEOUT_VALUE );
}
uint16_t rec_wenjian_daxiao;
uint16_t wangguan_up_id;
uint8_t send_lora_data[250];