| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #ifndef __SX126X_DRIVER_H
- #define __SX126X_DRIVER_H
- #include "sys.h"
- #include "sx126x_reg.h"
- #include "drv_spi.h"
- //#include <math.h>
- /*!
- * \brief Provides the frequency of the chip running on the radio and the frequency step
- *
- * \remark These defines are used for computing the frequency divider to set the RF frequency
- */
- //#define XTAL_FREQ ( double )32000000
- //#define FREQ_DIV ( double )pow( 2.0, 25.0 )
- //#define FREQ_STEP ( double )( XTAL_FREQ / FREQ_DIV )
- #define FREQ_STEP ( double )( 0.95367431640625 )
-
- #define FALSE 0
- #define TRUE 1
- #define RADIO_SX126X 2 //1:SX1261 2:SX1262
- #define SX1261 1
- #define SX1262 2
- /*!
- * Board MCU pins definitions
- */
- #ifdef USE_TCXO
- #define RADIO_TCXO_SETUP_TIME 5 // [ms]
- #else
- #define RADIO_TCXO_SETUP_TIME 0 // No Used
- #endif
-
- #define RADIO_NSS_GPIO_PORT GPIOA
- #define RADIO_NSS_GPIO_PIN GPIO_Pin_4
- #define radio_nss_low() PAout(4) = 0
- #define radio_nss_high() PAout(4) = 1
- #define RADIO_NRESET_PORT GPIOA
- #define RADIO_NRESET_PIN GPIO_Pin_3
- #define RADIO_BUSY_PORT GPIOA
- #define RADIO_BUSY_PIN GPIO_Pin_2
- #define RADIO_DIO1_PORT GPIOC
- #define RADIO_DIO1_PIN GPIO_Pin_0
- #define RADIO_DIO1_EXTI_PORT EXTI_PORT_GPIOA
- #define RADIO_DIO1_ITC ITC_IRQ_PORTA
- #define RADIO_SWITCH_TX_PORT GPIOA
- #define RADIO_SWITCH_TX_PIN GPIO_Pin_1
- #define RADIO_SWITCH_RX_PORT GPIOA
- #define RADIO_SWITCH_RX_PIN GPIO_Pin_0
- #define radio_rx_on() PAout(0) = 1
- #define radio_rx_off() PAout(0) = 0
- #ifndef USE_DIO2
- #define radio_tx_on() PAout(1) = 1
- #define radio_tx_off() PAout(1) = 0
- #else
- #define radio_tx_on()
- #define radio_tx_off()
- #endif
- void SX126xIoDeInit( void );
- void SX126xRecoverIoInit(void);
- void SX126xReset( void ); //ÖÁÉÙ50us£¬µäÐÍÖµ100us
- void SX126xWakeup( void );
- void SX126xWriteRegisters( uint16_t address, uint8_t *buffer, uint16_t size );
- void SX126xWriteRegister( uint16_t address, uint8_t value );
- void SX126xReadRegisters( uint16_t address, uint8_t *buffer, uint16_t size );
- uint8_t SX126xReadRegister( uint16_t address );
- void SX126xWriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size );
- void SX126xReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size );
- uint8_t SX126xGetPaSelect(void);
- void SX126xInit( void );
- RadioOperatingModes_t SX126xGetOperatingMode( void );
- void SX126xCheckDeviceReady( void );
- uint8_t SX126xGetPayload( uint8_t *buffer, uint8_t *size, uint8_t maxSize );
- void SX126xSendPayload( uint8_t *payload, uint8_t size, uint32_t timeout );
- uint8_t SX126xSetSyncWord( uint8_t *syncWord );
- void SX126xSetCrcSeed( uint16_t seed );
- void SX126xSetCrcPolynomial( uint16_t polynomial );
- void SX126xSetWhiteningSeed( uint16_t seed );
- uint32_t SX126xGetRandom( void );
- void SX126xSetSleep( SleepParams_t sleepConfig );
- void SX126xSetStandby( RadioStandbyModes_t standbyConfig );
- void SX126xSetFs( void );
- void SX126xSetTx( uint32_t timeout );
- void SX126xSetRx( uint32_t timeout );
- void SX126xSetRxBoosted( uint32_t timeout );
- void SX126xSetRxDutyCycle( uint32_t rxTime, uint32_t sleepTime );
- void SX126xSetCad( void );
- void SX126xSetTxContinuousWave( void );
- void SX126xSetTxInfinitePreamble( void );
- void SX126xSetStopRxTimerOnPreambleDetect( uint8_t enable );
- void SX126xSetLoRaSymbNumTimeout( uint8_t SymbNum );
- void SX126xSetRegulatorMode( RadioRegulatorMode_t mode );
- void SX126xCalibrate( CalibrationParams_t calibParam );
- void SX126xCalibrateImage( uint32_t freq );
- void SX126xSetPaConfig( uint8_t paDutyCycle, uint8_t hpMax, uint8_t deviceSel, uint8_t paLut );
- void SX126xSetRxTxFallbackMode( uint8_t fallbackMode );
- void SX126xSetDioIrqParams( uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask, uint16_t dio3Mask );
- uint16_t SX126xGetIrqStatus( void );
- void SX126xSetDio2AsRfSwitchCtrl( uint8_t enable );
- void SX126xSetDio3AsTcxoCtrl( RadioTcxoCtrlVoltage_t tcxoVoltage, uint32_t timeout );
- void SX126xSetRfFrequency( uint32_t frequency );
- void SX126xSetPacketType( RadioPacketTypes_t packetType );
- RadioPacketTypes_t SX126xGetPacketType( void );
- void SX126xSetTxParams( int8_t power, RadioRampTimes_t rampTime );
- void SX126xSetModulationParams( ModulationParams_t *modulationParams );
- void SX126xSetPacketParams( PacketParams_t *packetParams );
- void SX126xSetCadParams( RadioLoRaCadSymbols_t cadSymbolNum, uint8_t cadDetPeak, uint8_t cadDetMin, RadioCadExitModes_t cadExitMode, uint32_t cadTimeout );
- void SX126xSetBufferBaseAddress( uint8_t txBaseAddress, uint8_t rxBaseAddress );
- RadioStatus_t SX126xGetStatus( void );
- int8_t SX126xGetRssiInst( void );
- void SX126xGetRxBufferStatus( uint8_t *payloadLength, uint8_t *rxStartBufferPointer );
- void SX126xGetPacketStatus( PacketStatus_t *pktStatus );
- RadioError_t SX126xGetDeviceErrors( void );
- void SX126xClearDeviceErrors( void );
- void SX126xClearIrqStatus( uint16_t irq );
- #endif
|