sx126x_driver.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef __SX126X_DRIVER_H
  2. #define __SX126X_DRIVER_H
  3. #include "sys.h"
  4. #include "sx126x_reg.h"
  5. #include "drv_spi.h"
  6. //#include <math.h>
  7. /*!
  8. * \brief Provides the frequency of the chip running on the radio and the frequency step
  9. *
  10. * \remark These defines are used for computing the frequency divider to set the RF frequency
  11. */
  12. //#define XTAL_FREQ ( double )32000000
  13. //#define FREQ_DIV ( double )pow( 2.0, 25.0 )
  14. //#define FREQ_STEP ( double )( XTAL_FREQ / FREQ_DIV )
  15. #define FREQ_STEP ( double )( 0.95367431640625 )
  16. #define FALSE 0
  17. #define TRUE 1
  18. #define RADIO_SX126X 2 //1:SX1261 2:SX1262
  19. #define SX1261 1
  20. #define SX1262 2
  21. /*!
  22. * Board MCU pins definitions
  23. */
  24. #ifdef USE_TCXO
  25. #define RADIO_TCXO_SETUP_TIME 5 // [ms]
  26. #else
  27. #define RADIO_TCXO_SETUP_TIME 0 // No Used
  28. #endif
  29. #define RADIO_NSS_GPIO_PORT GPIOA
  30. #define RADIO_NSS_GPIO_PIN GPIO_Pin_4
  31. #define radio_nss_low() PAout(4) = 0
  32. #define radio_nss_high() PAout(4) = 1
  33. #define RADIO_NRESET_PORT GPIOA
  34. #define RADIO_NRESET_PIN GPIO_Pin_3
  35. #define RADIO_BUSY_PORT GPIOA
  36. #define RADIO_BUSY_PIN GPIO_Pin_2
  37. #define RADIO_DIO1_PORT GPIOC
  38. #define RADIO_DIO1_PIN GPIO_Pin_0
  39. #define RADIO_DIO1_EXTI_PORT EXTI_PORT_GPIOA
  40. #define RADIO_DIO1_ITC ITC_IRQ_PORTA
  41. #define RADIO_SWITCH_TX_PORT GPIOA
  42. #define RADIO_SWITCH_TX_PIN GPIO_Pin_1
  43. #define RADIO_SWITCH_RX_PORT GPIOA
  44. #define RADIO_SWITCH_RX_PIN GPIO_Pin_0
  45. #define radio_rx_on() PAout(0) = 1
  46. #define radio_rx_off() PAout(0) = 0
  47. #ifndef USE_DIO2
  48. #define radio_tx_on() PAout(1) = 1
  49. #define radio_tx_off() PAout(1) = 0
  50. #else
  51. #define radio_tx_on()
  52. #define radio_tx_off()
  53. #endif
  54. void SX126xIoDeInit( void );
  55. void SX126xRecoverIoInit(void);
  56. void SX126xReset( void ); //ÖÁÉÙ50us£¬µäÐÍÖµ100us
  57. void SX126xWakeup( void );
  58. void SX126xWriteRegisters( uint16_t address, uint8_t *buffer, uint16_t size );
  59. void SX126xWriteRegister( uint16_t address, uint8_t value );
  60. void SX126xReadRegisters( uint16_t address, uint8_t *buffer, uint16_t size );
  61. uint8_t SX126xReadRegister( uint16_t address );
  62. void SX126xWriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size );
  63. void SX126xReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size );
  64. uint8_t SX126xGetPaSelect(void);
  65. void SX126xInit( void );
  66. RadioOperatingModes_t SX126xGetOperatingMode( void );
  67. void SX126xCheckDeviceReady( void );
  68. uint8_t SX126xGetPayload( uint8_t *buffer, uint8_t *size, uint8_t maxSize );
  69. void SX126xSendPayload( uint8_t *payload, uint8_t size, uint32_t timeout );
  70. uint8_t SX126xSetSyncWord( uint8_t *syncWord );
  71. void SX126xSetCrcSeed( uint16_t seed );
  72. void SX126xSetCrcPolynomial( uint16_t polynomial );
  73. void SX126xSetWhiteningSeed( uint16_t seed );
  74. uint32_t SX126xGetRandom( void );
  75. void SX126xSetSleep( SleepParams_t sleepConfig );
  76. void SX126xSetStandby( RadioStandbyModes_t standbyConfig );
  77. void SX126xSetFs( void );
  78. void SX126xSetTx( uint32_t timeout );
  79. void SX126xSetRx( uint32_t timeout );
  80. void SX126xSetRxBoosted( uint32_t timeout );
  81. void SX126xSetRxDutyCycle( uint32_t rxTime, uint32_t sleepTime );
  82. void SX126xSetCad( void );
  83. void SX126xSetTxContinuousWave( void );
  84. void SX126xSetTxInfinitePreamble( void );
  85. void SX126xSetStopRxTimerOnPreambleDetect( uint8_t enable );
  86. void SX126xSetLoRaSymbNumTimeout( uint8_t SymbNum );
  87. void SX126xSetRegulatorMode( RadioRegulatorMode_t mode );
  88. void SX126xCalibrate( CalibrationParams_t calibParam );
  89. void SX126xCalibrateImage( uint32_t freq );
  90. void SX126xSetPaConfig( uint8_t paDutyCycle, uint8_t hpMax, uint8_t deviceSel, uint8_t paLut );
  91. void SX126xSetRxTxFallbackMode( uint8_t fallbackMode );
  92. void SX126xSetDioIrqParams( uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask, uint16_t dio3Mask );
  93. uint16_t SX126xGetIrqStatus( void );
  94. void SX126xSetDio2AsRfSwitchCtrl( uint8_t enable );
  95. void SX126xSetDio3AsTcxoCtrl( RadioTcxoCtrlVoltage_t tcxoVoltage, uint32_t timeout );
  96. void SX126xSetRfFrequency( uint32_t frequency );
  97. void SX126xSetPacketType( RadioPacketTypes_t packetType );
  98. RadioPacketTypes_t SX126xGetPacketType( void );
  99. void SX126xSetTxParams( int8_t power, RadioRampTimes_t rampTime );
  100. void SX126xSetModulationParams( ModulationParams_t *modulationParams );
  101. void SX126xSetPacketParams( PacketParams_t *packetParams );
  102. void SX126xSetCadParams( RadioLoRaCadSymbols_t cadSymbolNum, uint8_t cadDetPeak, uint8_t cadDetMin, RadioCadExitModes_t cadExitMode, uint32_t cadTimeout );
  103. void SX126xSetBufferBaseAddress( uint8_t txBaseAddress, uint8_t rxBaseAddress );
  104. RadioStatus_t SX126xGetStatus( void );
  105. int8_t SX126xGetRssiInst( void );
  106. void SX126xGetRxBufferStatus( uint8_t *payloadLength, uint8_t *rxStartBufferPointer );
  107. void SX126xGetPacketStatus( PacketStatus_t *pktStatus );
  108. RadioError_t SX126xGetDeviceErrors( void );
  109. void SX126xClearDeviceErrors( void );
  110. void SX126xClearIrqStatus( uint16_t irq );
  111. #endif