ShipCentralControl/RF-AP/资料及文档/SX127X参考例程/LSD_RF_SX1276.h

133 lines
4.6 KiB
C
Raw Permalink Normal View History

2025-04-07 09:18:02 +08:00
////////////////////////////////////////////////////////////////////////////////
// <20><>Ȩ: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Źɷ<C5B9><C9B7><EFBFBD><EFBFBD>޹<EFBFBD>˾
// <20>ļ<EFBFBD><C4BC><EFBFBD>:
// <20><EFBFBD><E6B1BE> v1.0
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IAR v5.30
// <20><><EFBFBD><EFBFBD>: ١<>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2013.12
// <20><><EFBFBD><EFBFBD>: API
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:
// <20>޸<EFBFBD><DEB8><EFBFBD>־<EFBFBD><D6BE>
////////////////////////////////////////////////////////////////////////////////
#ifndef LSD_RF_SX1276_H
#define LSD_RF_SX1276_H
//===================================<3D><><EFBFBD><EFBFBD>===================================================
typedef enum
{
NORMAL, //<2F><><EFBFBD><EFBFBD>
PARAMETER_INVALID, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SPI_READCHECK_WRONG, //SPI<50><49><EFBFBD><EFBFBD>
}tSX127xError; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
typedef enum
{
// 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]
BW500KHZ = 0x90,
BW250KHZ = 0x80,
BW125KHZ = 0x70,
BW62_50KHZ = 0x60,
BW41_66KHZ = 0x50,
BW31_25KHZ = 0x40,
BW20_83KHZ = 0x30,
BW15_62KHZ = 0x20,
BW10_41KHZ = 0x10,
BW7_81KHZ = 0x00,
}t_BandWidth; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
typedef enum{
// LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
SF12 = 0xC0,
SF11 = 0xB0,
SF10 = 0xA0,
SF09 = 0x90,
SF08 = 0x80,
SF07 = 0x70,
SF06 = 0x60,
}t_SpreadingFactor;
typedef enum{
// LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
CR_4_8 = 0x08,
CR_4_7 = 0x06,
CR_4_6 = 0x04,
CR_4_5 = 0x02,
}t_CodingRate;
typedef struct S_LoRaConfig
{
uint32_t LoRa_Freq;
t_BandWidth BandWidth;
t_SpreadingFactor SpreadingFactor;
t_CodingRate CodingRate;
int8_t PowerCfig; //0~15,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 2+PowerReg,<2C><><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MaxPower<65><72>PowerReg = 15ʱ<35><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 19<31><39>1dBm
bool MaxPowerOn; // [false: OFF, true: ON]
bool CRCON; // [false: OFF, true: ON]
bool ExplicitHeaderOn; // [false: OFF, true: ON]
uint8_t PayloadLength; //1~127
}S_LoRaConfig;
extern S_LoRaConfig G_LoRaConfig;
extern float G_BandWidthKHz;//<2F><><EFBFBD><EFBFBD>Symbol<6F><6C><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
extern float G_TsXms;//Symbol<6F><6C><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λms
//===================================<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===================================================
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : tSX127xError <20><><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ˵<><CBB5> : <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>G_LoRaConfig
////////////////////////////////////////////////////////////////////////////////
tSX127xError SX127x_init();
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8_t*data<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬uint8_t size<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
void SX1276_TxPacket(uint8_t*data);
void SX1276_Process(void);
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
void Rx_mode(void);
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD>տɱ<D5BF><C9B1><EFBFBD><EFBFBD>ݰ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8_t*cbuf<75><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
void LSD_RF_RxPacket(uint8_t*cbuf);
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD><EFBFBD>SLEEP״̬
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
void LSD_RF_SleepMode(void);
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD><EFBFBD>standby״̬
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
void LSD_RF_StandbyMode(void);
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
tSX127xError LSD_RF_FreqSet();
////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RF<52><46><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> : <20><>
// ˵<><CBB5> :
////////////////////////////////////////////////////////////////////////////////
tSX127xError LSD_RF_PoutSet();
//*****************************************************************************************
#endif