pan3031_port.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*******************************************************************************
  2. * @note Copyright (C) 2020 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
  3. *
  4. * @file pan3031_port.c
  5. * @brief
  6. *
  7. * @history - V3.0, 2021-11-05
  8. *******************************************************************************/
  9. #include "pan3031_port.h"
  10. #include "radio.h"
  11. #include "pan3031.h"
  12. #include "myRadio_gpio.h"
  13. extern uint8_t spi_tx_rx(uint8_t tx_data);
  14. rf_port_t rf_port=
  15. {
  16. .antenna_init = rf_antenna_init,
  17. .tcxo_init = rf_tcxo_init,
  18. .set_tx = rf_antenna_tx,
  19. .set_rx = rf_antenna_rx,
  20. .antenna_close = rf_antenna_close,
  21. .tcxo_close = rf_tcxo_close,
  22. .spi_readwrite = spi_readwritebyte,
  23. .spi_cs_high = spi_cs_set_high,
  24. .spi_cs_low = spi_cs_set_low,
  25. .delayms = rf_delay_ms,
  26. .delayus = rf_delay_us,
  27. };
  28. /**
  29. * @brief spi_readwritebyte
  30. * @param[in] <tx_data> spi readwritebyte value
  31. * @return result
  32. */
  33. uint8_t spi_readwritebyte(uint8_t tx_data)
  34. {
  35. return SpiReadWrite(tx_data);
  36. }
  37. /**
  38. * @brief spi_cs_set_high
  39. * @param[in] <none>
  40. * @return none
  41. */
  42. void spi_cs_set_high(void)
  43. {
  44. BOARD_SPI_NSS_H();
  45. }
  46. /**
  47. * @brief spi_cs_set_low
  48. * @param[in] <none>
  49. * @return none
  50. */
  51. void spi_cs_set_low(void)
  52. {
  53. BOARD_SPI_NSS_L();
  54. }
  55. /**
  56. * @brief rf_delay_ms
  57. * @param[in] <time> ms
  58. * @return none
  59. */
  60. void rf_delay_ms(uint32_t time)
  61. {
  62. uint32_t i, j;
  63. i = time;
  64. while (i --)
  65. {
  66. for ( j = 0; j < 1000; j++)
  67. {
  68. ;
  69. }
  70. }
  71. }
  72. /**
  73. * @brief rf_delay_us
  74. * @param[in] <time> us
  75. * @return none
  76. */
  77. void rf_delay_us(uint32_t time)
  78. {
  79. uint32_t i, j;
  80. i = time;
  81. while (i --)
  82. {
  83. for ( j = 0; j < 1; j++)
  84. {
  85. ;
  86. }
  87. }
  88. }
  89. /**
  90. * @brief do PAN3031 TX/RX IO to initialize
  91. * @param[in] <none>
  92. * @return none
  93. */
  94. void rf_antenna_init(void)
  95. {
  96. PAN3031_set_gpio_output(MODULE_GPIO_RX);
  97. PAN3031_set_gpio_output(MODULE_GPIO_TX);
  98. PAN3031_set_gpio_state(MODULE_GPIO_RX, 0);
  99. PAN3031_set_gpio_state(MODULE_GPIO_TX, 0);
  100. }
  101. /**
  102. * @brief do PAN3031 XTAL IO to initialize
  103. * @param[in] <none>
  104. * @return none
  105. */
  106. void rf_tcxo_init(void)
  107. {
  108. PAN3031_set_gpio_output(MODULE_GPIO_TCXO);
  109. PAN3031_set_gpio_state(MODULE_GPIO_TCXO, 1);
  110. }
  111. /**
  112. * @brief close PAN3031 XTAL IO
  113. * @param[in] <none>
  114. * @return none
  115. */
  116. void rf_tcxo_close(void)
  117. {
  118. PAN3031_set_gpio_output(MODULE_GPIO_TCXO);
  119. PAN3031_set_gpio_state(MODULE_GPIO_TCXO, 0);
  120. }
  121. /**
  122. * @brief change PAN3031 IO to rx
  123. * @param[in] <none>
  124. * @return none
  125. */
  126. void rf_antenna_rx(void)
  127. {
  128. PAN3031_set_gpio_state(MODULE_GPIO_TX, 0);
  129. PAN3031_set_gpio_state(MODULE_GPIO_RX, 1);
  130. }
  131. /**
  132. * @brief change PAN3031 IO to tx
  133. * @param[in] <none>
  134. * @return none
  135. */
  136. void rf_antenna_tx(void)
  137. {
  138. PAN3031_set_gpio_state(MODULE_GPIO_RX, 0);
  139. PAN3031_set_gpio_state(MODULE_GPIO_TX, 1);
  140. }
  141. /**
  142. * @brief change PAN3031 IO to close
  143. * @param[in] <none>
  144. * @return none
  145. */
  146. void rf_antenna_close(void)
  147. {
  148. PAN3031_set_gpio_state(MODULE_GPIO_TX, 0);
  149. PAN3031_set_gpio_state(MODULE_GPIO_RX, 0);
  150. }