pan3031.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /*******************************************************************************
  2. * @note Copyright (C) 2020 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
  3. *
  4. * @file pan3031.h
  5. * @brief
  6. *
  7. * @history - V3.0, 2021-11-05
  8. *******************************************************************************/
  9. #ifndef __PAN_3031_H
  10. #define __PAN_3031_H
  11. #include "pan3031_port.h"
  12. /* result */
  13. #define OK 0
  14. #define FAIL 1
  15. /* 3031B mode define*/
  16. #define PAN3031_MODE_DEEP_SLEEP 0
  17. #define PAN3031_MODE_SLEEP 1
  18. #define PAN3031_MODE_STB1 2
  19. #define PAN3031_MODE_STB2 3
  20. #define PAN3031_MODE_STB3 4
  21. #define PAN3031_MODE_TX 5
  22. #define PAN3031_MODE_RX 6
  23. /* 3031B Tx mode */
  24. #define PAN3031_TX_SINGLE 0
  25. #define PAN3031_TX_CONTINOUS 1
  26. /* 3031B Rx mode */
  27. #define PAN3031_RX_SINGLE 0
  28. #define PAN3031_RX_SINGLE_TIMEOUT 1
  29. #define PAN3031_RX_CONTINOUS 2
  30. /* System control register */
  31. #define REG_SYS_CTL 0x00
  32. #define REG_FIFO_ACC_ADDR 0x01
  33. /* 3V Logical area register */
  34. #define REG_OP_MODE 0X02
  35. #define MODEM_MODE_NORMAL 0x01
  36. #define MODEM_MODE_MULTI_SECTOR 0x02
  37. #define freq_360000000 (360000000)
  38. #define freq_370000000 (370000000)
  39. #define freq_385000000 (385000000)
  40. #define freq_405000000 (405000000)
  41. #define freq_430000000 (430000000)
  42. #define freq_460000000 (460000000)
  43. #define freq_495000000 (495000000)
  44. #define freq_535000000 (535000000)
  45. #define freq_600000000 (600000000)
  46. #define freq_720000000 (720000000)
  47. #define freq_740000000 (740000000)
  48. #define freq_770000000 (770000000)
  49. #define freq_810000000 (810000000)
  50. #define freq_860000000 (860000000)
  51. #define freq_920000000 (920000000)
  52. #define freq_990000000 (990000000)
  53. #define freq_1070000000 (1070000000)
  54. #define freq_1200000000 (1200000000)
  55. #define CODE_RATE_45 0x01
  56. #define CODE_RATE_46 0x02
  57. #define CODE_RATE_47 0x03
  58. #define CODE_RATE_48 0x04
  59. //PAN3031 only support SF7-SF9
  60. #define SF_7 7
  61. #define SF_8 8
  62. #define SF_9 9
  63. //PAN3031 only support BW125K\BW250K\500K
  64. #define BW_125K 7
  65. #define BW_250K 8
  66. #define BW_500K 9
  67. #define CRC_OFF 0
  68. #define CRC_ON 1
  69. #define PLHD_IRQ_OFF 0
  70. #define PLHD_IRQ_ON 1
  71. #define PLHD_OFF 0
  72. #define PLHD_ON 1
  73. #define PLHD_LEN8 0
  74. #define PLHD_LEN16 1
  75. #define AGC_ON 1
  76. #define AGC_OFF 0
  77. #define LO_400M 0
  78. #define LO_800M 1
  79. #define DCDC_OFF 0
  80. #define DCDC_ON 1
  81. #define LDR_OFF 0
  82. #define LDR_ON 1
  83. #define LNA_GAIN_LOW 0
  84. #define LNA_GAIN_HIGH 1
  85. #define REG_PAYLOAD_LEN 0x0C
  86. /*IRQ BIT MASK*/
  87. #define REG_IRQ_RX_PLHD_DONE 0x10
  88. #define REG_IRQ_RX_DONE 0x8
  89. #define REG_IRQ_CRC_ERR 0x4
  90. #define REG_IRQ_RX_TIMEOUT 0x2
  91. #define REG_IRQ_TX_DONE 0x1
  92. enum REF_CLK_SEL {REF_CLK_32M,REF_CLK_16M};
  93. enum PAGE_SEL {PAGE0_SEL,PAGE1_SEL,PAGE2_SEL, PAGE3_SEL};
  94. uint32_t PAN3031_rst(void);
  95. uint32_t PAN3031_agc_enable(uint32_t state);
  96. uint32_t PAN3031_agc_config(void);
  97. uint32_t PAN3031_init(void);
  98. uint32_t PAN3031_deepsleep_wakeup(void);
  99. uint32_t PAN3031_deepsleep(void);
  100. uint32_t PAN3031_sleep_wakeup(void);
  101. uint32_t PAN3031_sleep(void);
  102. uint32_t PAN3031_write_read_continue_regs(enum PAGE_SEL page,uint8_t addr,uint8_t *buffer,uint8_t len);
  103. uint32_t PAN3031_set_freq(uint32_t freq);
  104. uint32_t PAN3031_read_freq(void);
  105. uint32_t PAN3031_calculate_tx_time(void);
  106. uint32_t PAN3031_set_bw(uint32_t bw_val);
  107. uint8_t PAN3031_get_bw(void);
  108. uint32_t PAN3031_set_sf(uint32_t sf_val);
  109. uint8_t PAN3031_get_sf(void);
  110. uint32_t PAN3031_set_crc(uint32_t crc_val);
  111. uint8_t PAN3031_get_crc(void);
  112. uint8_t PAN3031_get_code_rate(void);
  113. uint32_t PAN3031_set_code_rate(uint8_t code_rate);
  114. uint32_t PAN3031_set_mode(uint8_t mode);
  115. uint8_t PAN3031_get_mode(void);
  116. uint32_t PAN3031_set_tx_mode(uint8_t mode);
  117. uint32_t PAN3031_set_rx_mode(uint8_t mode);
  118. uint32_t PAN3031_set_timeout(uint32_t timeout);
  119. float PAN3031_get_snr(void);
  120. float PAN3031_get_rssi(void);
  121. uint32_t PAN3031_set_tx_power(uint8_t tx_power);
  122. uint32_t PAN3031_get_tx_power(void);
  123. uint32_t PAN3031_set_preamble(uint16_t reg);
  124. uint32_t PAN3031_set_gpio_input(uint8_t gpio_pin);
  125. uint32_t PAN3031_set_gpio_output(uint8_t gpio_pin);
  126. uint32_t PAN3031_set_gpio_state(uint8_t gpio_pin, uint8_t state);
  127. uint32_t PAN3031_cad_en(void);
  128. uint32_t PAN3031_cad_off(void);
  129. uint32_t PAN3031_set_syncword(uint32_t sync);
  130. uint8_t PAN3031_get_syncword(void);
  131. uint32_t PAN3031_send_packet(uint8_t *buff, uint32_t len);
  132. uint8_t PAN3031_recv_packet(uint8_t *buff);
  133. uint32_t PAN3031_set_early_irq(uint32_t earlyirq_val);
  134. uint8_t PAN3031_get_early_irq(void);
  135. uint32_t PAN3031_set_plhd(uint8_t addr,uint8_t len);
  136. uint8_t PAN3031_get_plhd(void);
  137. uint32_t PAN3031_set_plhd_mask(uint32_t plhd_val);
  138. uint8_t PAN3031_get_plhd_mask(void);
  139. uint8_t PAN3031_recv_plhd8(uint8_t *buff);
  140. uint8_t PAN3031_recv_plhd16(uint8_t *buff);
  141. uint32_t PAN3031_plhd_receive(uint8_t *buf,uint8_t len);
  142. uint32_t PAN3031_set_dcdc_mode(uint32_t dcdc_val);
  143. uint32_t PAN3031_set_ldr(uint32_t mode);
  144. uint32_t PAN3031_set_all_sf_preamble(uint32_t sf);
  145. uint32_t PAN3031_set_all_sf_search(void);
  146. uint32_t PAN3031_set_all_sf_search_off(void);
  147. void PAN3031_irq_handler(void);
  148. uint8_t PAN3031_get_irq(void);
  149. uint8_t PAN3031_clr_irq(void);
  150. uint32_t PAN3031_set_vco(uint8_t mode);
  151. uint32_t PAN3031_set_lna_gain(uint8_t mode);
  152. /**
  153. * @brief set carrier_wave mode on
  154. * @param[in] <none>
  155. * @return result
  156. */
  157. uint32_t PAN3031_set_carrier_wave_on(void);
  158. /**
  159. * @brief set carrier_wave mode frequence
  160. * @param[in] <freq> RF frequency(in Hz) to set
  161. * @return result
  162. */
  163. uint32_t PAN3031_set_carrier_wave_freq(uint32_t freq);
  164. /**
  165. * @brief set carrier_wave mode off
  166. * @param[in] <none>
  167. * @return result
  168. */
  169. uint32_t PAN3031_set_carrier_wave_off(void);
  170. #endif