pan3028.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*******************************************************************************
  2. * @note Copyright (C) 2020 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
  3. *
  4. * @file pan3028.h
  5. * @brief
  6. *
  7. * @history - V3.0, 2021-11-05
  8. *******************************************************************************/
  9. #ifndef __PAN_3028_H
  10. #define __PAN_3028_H
  11. #include "stdio.h"
  12. #include "pan3028_port.h"
  13. /* result */
  14. #define OK 0
  15. #define FAIL 1
  16. /* 3028B mode define*/
  17. #define PAN3028_MODE_DEEP_SLEEP 0
  18. #define PAN3028_MODE_SLEEP 1
  19. #define PAN3028_MODE_STB1 2
  20. #define PAN3028_MODE_STB2 3
  21. #define PAN3028_MODE_STB3 4
  22. #define PAN3028_MODE_TX 5
  23. #define PAN3028_MODE_RX 6
  24. /* 3028B Tx mode */
  25. #define PAN3028_TX_SINGLE 0
  26. #define PAN3028_TX_CONTINOUS 1
  27. /* 3028B Rx mode */
  28. #define PAN3028_RX_SINGLE 0
  29. #define PAN3028_RX_SINGLE_TIMEOUT 1
  30. #define PAN3028_RX_CONTINOUS 2
  31. /* System control register */
  32. #define REG_SYS_CTL 0x00
  33. #define REG_FIFO_ACC_ADDR 0x01
  34. /* 3V Logical area register */
  35. #define REG_OP_MODE 0X02
  36. #define MODEM_MODE_NORMAL 0x01
  37. #define MODEM_MODE_MULTI_SECTOR 0x02
  38. #define freq_336000000 (336000000)
  39. #define freq_470000000 (470000000)
  40. #define freq_510000000 (510000000)
  41. #define freq_800000000 (800000000)
  42. #define freq_920000000 (920000000)
  43. #define CODE_RATE_45 0x01
  44. #define CODE_RATE_46 0x02
  45. #define CODE_RATE_47 0x03
  46. #define CODE_RATE_48 0x04
  47. #define SF_7 7
  48. #define SF_8 8
  49. #define SF_9 9
  50. #define SF_10 10
  51. #define SF_11 11
  52. #define SF_12 12
  53. #define BW_62_5K 6
  54. #define BW_125K 7
  55. #define BW_250K 8
  56. #define BW_500K 9
  57. #define CRC_OFF 0
  58. #define CRC_ON 1
  59. #define PLHD_IRQ_OFF 0
  60. #define PLHD_IRQ_ON 1
  61. #define PLHD_OFF 0
  62. #define PLHD_ON 1
  63. #define PLHD_LEN8 0
  64. #define PLHD_LEN16 1
  65. #define AGC_ON 1
  66. #define AGC_OFF 0
  67. #define LO_400M 0
  68. #define LO_800M 1
  69. #define DCDC_OFF 0
  70. #define DCDC_ON 1
  71. #define LDR_OFF 0
  72. #define LDR_ON 1
  73. #define REG_PAYLOAD_LEN 0x0C
  74. /*IRQ BIT MASK*/
  75. #define REG_IRQ_RX_PLHD_DONE 0x10
  76. #define REG_IRQ_RX_DONE 0x8
  77. #define REG_IRQ_CRC_ERR 0x4
  78. #define REG_IRQ_RX_TIMEOUT 0x2
  79. #define REG_IRQ_TX_DONE 0x1
  80. enum REF_CLK_SEL {REF_CLK_32M,REF_CLK_16M};
  81. enum PAGE_SEL {PAGE0_SEL,PAGE1_SEL,PAGE2_SEL, PAGE3_SEL};
  82. uint32_t PAN3028_rst(void);
  83. uint32_t PAN3028_agc_enable(uint32_t state);
  84. uint32_t PAN3028_agc_config(void);
  85. uint32_t PAN3028_init(void);
  86. uint32_t PAN3028_deepsleep_wakeup(void);
  87. uint32_t PAN3028_deepsleep(void);
  88. uint32_t PAN3028_sleep_wakeup(void);
  89. uint32_t PAN3028_sleep(void);
  90. uint32_t PAN3028_write_read_continue_regs(enum PAGE_SEL page,uint8_t addr,uint8_t *buffer,uint8_t len);
  91. uint32_t PAN3028_set_freq(uint32_t freq);
  92. uint32_t PAN3028_read_freq(void);
  93. uint32_t PAN3028_calculate_tx_time(void);
  94. uint32_t PAN3028_set_bw(uint32_t bw_val);
  95. uint8_t PAN3028_get_bw(void);
  96. uint32_t PAN3028_set_sf(uint32_t sf_val);
  97. uint8_t PAN3028_get_sf(void);
  98. uint32_t PAN3028_set_crc(uint32_t crc_val);
  99. uint8_t PAN3028_get_crc(void);
  100. uint8_t PAN3028_get_code_rate(void);
  101. uint32_t PAN3028_set_code_rate(uint8_t code_rate);
  102. uint32_t PAN3028_set_mode(uint8_t mode);
  103. uint8_t PAN3028_get_mode(void);
  104. uint32_t PAN3028_set_tx_mode(uint8_t mode);
  105. uint32_t PAN3028_set_rx_mode(uint8_t mode);
  106. uint32_t PAN3028_set_timeout(uint32_t timeout);
  107. float PAN3028_get_snr(void);
  108. float PAN3028_get_rssi(void);
  109. uint32_t PAN3028_set_tx_power(uint8_t tx_power);
  110. uint32_t PAN3028_get_tx_power(void);
  111. uint32_t PAN3028_set_preamble(uint16_t reg);
  112. uint32_t PAN3028_set_gpio_input(uint8_t gpio_pin);
  113. uint32_t PAN3028_set_gpio_output(uint8_t gpio_pin);
  114. uint32_t PAN3028_set_gpio_state(uint8_t gpio_pin, uint8_t state);
  115. uint32_t PAN3028_cad_en(void);
  116. uint32_t PAN3028_set_syncword(uint32_t sync);
  117. uint8_t PAN3028_get_syncword(void);
  118. uint32_t PAN3028_send_packet(uint8_t *buff, uint32_t len);
  119. uint8_t PAN3028_recv_packet(uint8_t *buff);
  120. uint32_t PAN3028_set_early_irq(uint32_t earlyirq_val);
  121. uint8_t PAN3028_get_early_irq(void);
  122. uint32_t PAN3028_set_plhd(uint8_t addr,uint8_t len);
  123. uint8_t PAN3028_get_plhd(void);
  124. uint32_t PAN3028_set_plhd_mask(uint32_t plhd_val);
  125. uint8_t PAN3028_get_plhd_mask(void);
  126. uint8_t PAN3028_recv_plhd8(uint8_t *buff);
  127. uint8_t PAN3028_recv_plhd16(uint8_t *buff);
  128. uint32_t PAN3028_plhd_receive(uint8_t *buf,uint8_t len);
  129. uint32_t PAN3028_set_dcdc_mode(uint32_t dcdc_val);
  130. uint32_t PAN3028_set_ldr(uint32_t mode);
  131. uint32_t PAN3028_set_all_sf_preamble(uint32_t sf);
  132. uint32_t PAN3028_set_all_sf_search(void);
  133. uint32_t PAN3028_set_all_sf_search_off(void);
  134. void PAN3028_irq_handler(void);
  135. uint32_t PAN3028_set_carrier_tx_power(uint8_t tx_power);
  136. uint32_t PAN3028_get_carrier_tx_power(void);
  137. uint32_t PAN3028_set_carrier_wave_test_mode(void);
  138. #endif