cc1200_protocol.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. * CC120X_protocol.h
  3. *
  4. * Created on: Apr 13, 2019
  5. * Author: curiousmuch
  6. */
  7. //*********************************//
  8. // IMPORTANT GPIO SIGNALS
  9. // REG DESCRIPTION
  10. // 0x1e TX CLK
  11. // 0x1d RX_CLK
  12. // 0x10 Carrier Sense Valid
  13. // 0x11 Carrier Sense
  14. //********************************//
  15. // Address Config = No address check
  16. // Bit Rate = 0.825
  17. // Carrier Frequency = 144.174988
  18. // Deviation = 2.994537
  19. // Device Address = 0
  20. // Manchester Enable = false
  21. // Modulation Format = 2-FSK
  22. // Packet Bit Length = 0
  23. // Packet Length = 63
  24. // Packet Length Mode = Not supported
  25. // RX Filter BW = 14.880952
  26. // Symbol rate = 0.825
  27. // Whitening = false
  28. #include <stdio.h>
  29. #include <stdint.h>
  30. #include "cc1200.h"
  31. // Bit Rate = 0.825kHz
  32. static const cc1200_reg_settings_t APRS_TX_RATE[]=
  33. {
  34. {CC120X_SYMBOL_RATE2, 0x35},
  35. {CC120X_SYMBOL_RATE1, 0xA0},
  36. {CC120X_SYMBOL_RATE0, 0x7B}
  37. };
  38. // Bit Rate = 13.2kHz
  39. static const cc1200_reg_settings_t APRS_RX_RATE[]=
  40. {
  41. {CC120X_SYMBOL_RATE2, 0x75},
  42. {CC120X_SYMBOL_RATE1, 0xA0},
  43. {CC120X_SYMBOL_RATE0, 0x7B}
  44. };
  45. static const cc1200_reg_settings_t APRS_RX_SETTINGS[]=
  46. {
  47. {CC120X_IOCFG3, 0x1e}, // TX Clock
  48. {CC120X_IOCFG2, 0x1d}, // RX Clock
  49. {CC120X_IOCFG0, 0x09},
  50. {CC120X_SYNC_CFG1, 0x00}, // Disable Sync Word [0x00]
  51. {CC120X_SYNC_CFG0, 0x13}, // Disable RX_CONFIG_LIMITATION 0x13
  52. {CC120X_DEVIATION_M, 0x9D},
  53. {CC120X_MODCFG_DEV_E, 0x00},
  54. {CC120X_DCFILT_CFG, 0x5D},
  55. {CC120X_PREAMBLE_CFG1, 0x00},
  56. {CC120X_PREAMBLE_CFG0, 0x00}, // Disable Preamble [0x00]
  57. {CC120X_IQIC, 0xCB},
  58. {CC120X_CHAN_BW, 0x9C},
  59. {CC120X_MDMCFG1, 0x00}, // Random guess
  60. {CC120X_MDMCFG0, 0x41},
  61. //{CC120X_MDMCFG0, 0x05},
  62. // 6 kHz
  63. {CC120X_SYMBOL_RATE2, 0x63},
  64. {CC120X_SYMBOL_RATE1, 0xA9},
  65. {CC120X_SYMBOL_RATE0, 0x2A},
  66. {CC120X_AGC_REF, 0x30},
  67. {CC120X_AGC_CS_THR, 0xEC},
  68. {CC120X_AGC_CFG3, 0x11}, // new
  69. {CC120X_AGC_CFG1, 0x51},
  70. {CC120X_AGC_CFG0, 0x87},
  71. {CC120X_FIFO_CFG, 0x00},
  72. {CC120X_FS_CFG, 0x1B},
  73. {CC120X_PKT_CFG2, 0x03},
  74. {CC120X_PKT_CFG1, 0x00},
  75. {CC120X_PKT_CFG0, 0x40}, // new
  76. {CC120X_RFEND_CFG1, 0x0F}, // new
  77. {CC120X_RFEND_CFG0, 0x00},
  78. {CC120X_PA_CFG1, 0x3F},
  79. {CC120X_PKT_LEN, 0xFF},
  80. {CC120X_IF_MIX_CFG, 0x1C},
  81. {CC120X_FREQOFF_CFG, 0x22},
  82. {CC120X_MDMCFG2, 0x0B}, // need to set CFM_DATA_EN bit for CFM mode and reduce upsampler rate
  83. {CC120X_FREQ2, 0x56},
  84. {CC120X_FREQ1, 0x81},
  85. {CC120X_FREQ0, 0x47},
  86. {CC120X_IF_ADC1, 0xEE},
  87. {CC120X_IF_ADC0, 0x10},
  88. {CC120X_FS_DIG1, 0x07},
  89. {CC120X_FS_DIG0, 0xAF},
  90. {CC120X_FS_CAL1, 0x40},
  91. {CC120X_FS_CAL0, 0x0E},
  92. {CC120X_FS_DIVTWO, 0x03},
  93. {CC120X_FS_DSM0, 0x33},
  94. {CC120X_FS_DVC0, 0x17},
  95. {CC120X_FS_PFD, 0x00},
  96. {CC120X_FS_PRE, 0x6E},
  97. {CC120X_FS_REG_DIV_CML, 0x1C},
  98. {CC120X_FS_SPARE, 0xAC},
  99. {CC120X_FS_VCO0, 0xB5},
  100. {CC120X_XOSC5, 0x0E},
  101. {CC120X_XOSC1, 0x03},
  102. };
  103. static const cc1200_reg_settings_t APRS_TX_SETTINGS[]=
  104. {
  105. {CC120X_IOCFG3, 0x1e}, // 0x1e for TX 0x1D for RX
  106. {CC120X_IOCFG0, 0x1d},
  107. {CC120X_SYNC_CFG1, 0xAB},
  108. {CC120X_DEVIATION_M, 0x9D},
  109. {CC120X_MODCFG_DEV_E, 0x00},
  110. {CC120X_DCFILT_CFG, 0x5D},
  111. {CC120X_PREAMBLE_CFG1, 0x00},
  112. {CC120X_PREAMBLE_CFG0, 0x8A},
  113. {CC120X_IQIC, 0xCB},
  114. {CC120X_CHAN_BW, 0x9C},
  115. {CC120X_MDMCFG0, 0x05},
  116. {CC120X_SYMBOL_RATE2, 0x35},
  117. {CC120X_SYMBOL_RATE1, 0xA0},
  118. {CC120X_SYMBOL_RATE0, 0x7B},
  119. {CC120X_AGC_REF, 0x30},
  120. {CC120X_AGC_CS_THR, 0xEC},
  121. {CC120X_AGC_CFG1, 0x51},
  122. {CC120X_AGC_CFG0, 0x87},
  123. {CC120X_FIFO_CFG, 0x00},
  124. {CC120X_FS_CFG, 0x1B},
  125. {CC120X_PKT_CFG2, 0x02},
  126. {CC120X_PKT_CFG1, 0x00},
  127. {CC120X_PKT_CFG0, 0x40},
  128. {CC120X_PA_CFG1, 0x3F},
  129. {CC120X_PKT_LEN, 0x3F},
  130. {CC120X_IF_MIX_CFG, 0x1C},
  131. {CC120X_FREQOFF_CFG, 0x22},
  132. {CC120X_MDMCFG2, 0x0D}, // need to set CFM_DATA_EN bit for CFM mode
  133. {CC120X_FREQ2, 0x56},
  134. {CC120X_FREQ1, 0x81},
  135. {CC120X_FREQ0, 0x47},
  136. {CC120X_IF_ADC1, 0xEE},
  137. {CC120X_IF_ADC0, 0x10},
  138. {CC120X_FS_DIG1, 0x07},
  139. {CC120X_FS_DIG0, 0xAF},
  140. {CC120X_FS_CAL1, 0x40},
  141. {CC120X_FS_CAL0, 0x0E},
  142. {CC120X_FS_DIVTWO, 0x03},
  143. {CC120X_FS_DSM0, 0x33},
  144. {CC120X_FS_DVC0, 0x17},
  145. {CC120X_FS_PFD, 0x00},
  146. {CC120X_FS_PRE, 0x6E},
  147. {CC120X_FS_REG_DIV_CML, 0x1C},
  148. {CC120X_FS_SPARE, 0xAC},
  149. {CC120X_FS_VCO0, 0xB5},
  150. {CC120X_XOSC5, 0x0E},
  151. {CC120X_XOSC1, 0x03},
  152. };