pan3029_port.c 3.1 KB

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