sx1276-Hal.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /*
  2. * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND
  3. * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER.
  4. * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR
  5. * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
  6. * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
  7. * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  8. *
  9. * Copyright (C) SEMTECH S.A.
  10. */
  11. /*!
  12. * \file sx1276-Hal.c
  13. * \brief SX1276 Hardware Abstraction Layer
  14. *
  15. * \version 2.0.B2
  16. * \date Nov 21 2012
  17. * \author Miguel Luis
  18. *
  19. * Last modified by Miguel Luis on Jun 19 2013
  20. */
  21. #include "platform.h"
  22. #if defined( USE_SX1276_RADIO )
  23. #include "myRadio_gpio.h"
  24. #include "sx1276-Hal.h"
  25. void SX1276SetReset( uint8_t state )
  26. {
  27. // GPIO_InitTypeDef GPIO_InitStructure;
  28. if( state == RADIO_RESET_ON )
  29. {
  30. // Set RESET pin to 0
  31. RF_SX1278_RESET_L();
  32. }
  33. else
  34. {
  35. RF_SX1278_RESET_H();
  36. }
  37. }
  38. void SX1276Write( uint8_t addr, uint8_t data )
  39. {
  40. SX1276WriteBuffer( addr, &data, 1 );
  41. }
  42. void SX1276Read( uint8_t addr, uint8_t *data )
  43. {
  44. SX1276ReadBuffer( addr, data, 1 );
  45. }
  46. void SX1276WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
  47. {
  48. addr=addr|0x80;
  49. BOARD_SPI_NSS_L(); //NSS = 0;
  50. SpiReadWrite(addr);
  51. SpiWriteData(buffer, size);
  52. BOARD_SPI_NSS_H();//NSS = 1;
  53. }
  54. void SX1276ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
  55. {
  56. addr=addr&0x7F;
  57. BOARD_SPI_NSS_L();//NSS = 0;
  58. SpiReadWrite(addr);
  59. SpiReadData(buffer, size);
  60. BOARD_SPI_NSS_H();//NSS = 1;
  61. }
  62. void SX1276WriteFifo( uint8_t *buffer, uint8_t size )
  63. {
  64. SX1276WriteBuffer( 0, buffer, size );
  65. }
  66. void SX1276ReadFifo( uint8_t *buffer, uint8_t size )
  67. {
  68. SX1276ReadBuffer( 0, buffer, size );
  69. }
  70. inline uint8_t SX1276ReadDio0( void )
  71. {
  72. return READ_RF_SX1278_DIO0();
  73. }
  74. inline uint8_t SX1276ReadDio1( void )
  75. {
  76. return READ_RF_SX1278_DIO1();
  77. }
  78. inline uint8_t SX1276ReadDio2( void )
  79. {
  80. return READ_RF_SX1278_DIO2();
  81. }
  82. inline uint8_t SX1276ReadDio3( void )
  83. {
  84. // return IoePinGet( RF_DIO3_PIN );
  85. return READ_RF_SX1278_DIO3();
  86. }
  87. inline uint8_t SX1276ReadDio4( void )
  88. {
  89. // return IoePinGet( RF_DIO4_PIN );
  90. return READ_RF_SX1278_DIO4();
  91. }
  92. inline uint8_t SX1276ReadDio5( void )
  93. {
  94. // return IoePinGet( RF_DIO5_PIN );
  95. return READ_RF_SX1278_DIO5();
  96. }
  97. inline void SX1276WriteRxTx( uint8_t txEnable )
  98. {
  99. if( txEnable != 0 )
  100. {
  101. // IoePinOn( FEM_CTX_PIN );
  102. // IoePinOff( FEM_CPS_PIN );
  103. }
  104. else
  105. {
  106. // IoePinOff( FEM_CTX_PIN );
  107. // IoePinOn( FEM_CPS_PIN );
  108. }
  109. }
  110. #endif // USE_SX1276_RADIO