sx126x_reg.lua 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. --- 模块功能:存储sx126x寄存器数据
  2. module(...,package.seeall)
  3. --[[
  4. The addresses of the register holding LoRa Modem SyncWord value
  5. ]]
  6. REG_LR_SYNCWORD = "0740"
  7. REG_LR_SYNCWORD_LSB = "0741"
  8. REG_OCP = "08E7"
  9. LORA_MAC_PRIVATE_SYNCWORD = "1424"
  10. LORA_MAC_PUBLIC_SYNCWORD = "3444"
  11. RadioStandbyModes_t = {
  12. STDBY_RC = "00",
  13. STDBY_XOSC = "01",
  14. }
  15. RadioModems_t = {
  16. MODEM_FSK = 0,
  17. MODEM_LORA = 1,
  18. }
  19. RadioOperatingModes_t = {
  20. MODE_SLEEP = "00",
  21. MODE_STDBY_RC = "01",
  22. MODE_STDBY_XOSC = "02",
  23. MODE_FS = "03",
  24. MODE_TX = "04",
  25. MODE_RX = "05",
  26. MODE_RX_DC = "06",
  27. MODE_CAD = "07"
  28. }
  29. RadioRampTimes_t = {
  30. RADIO_RAMP_10_US = "00",
  31. RADIO_RAMP_20_US = "01",
  32. RADIO_RAMP_40_US = "02",
  33. RADIO_RAMP_80_US = "03",
  34. RADIO_RAMP_200_US = "04",
  35. RADIO_RAMP_800_US = "05",
  36. RADIO_RAMP_1700_US = "06",
  37. RADIO_RAMP_3400_US = "07"
  38. }
  39. RadioPreambleDetection_t = {
  40. RADIO_PREAMBLE_DETECTOR_OFF = "00",
  41. RADIO_PREAMBLE_DETECTOR_08_BITS = "01",
  42. RADIO_PREAMBLE_DETECTOR_16_BITS = "02",
  43. RADIO_PREAMBLE_DETECTOR_24_BITS = "03",
  44. RADIO_PREAMBLE_DETECTOR_32_BITS = "04"
  45. }
  46. RadioAddressComp_t = {
  47. RADIO_ADDRESSCOMP_FILT_OFF = "00",
  48. RADIO_ADDRESSCOMP_FILT_NODE = "01",
  49. RADIO_ADDRESSCOMP_FILT_NODE_BROAD = "02"
  50. }
  51. RadioPacketLengthModes_t = {
  52. RADIO_PACKET_FIXED_LENGTH = "00",
  53. RADIO_PACKET_VARIABLE_LENGTH = "01"
  54. }
  55. RadioCrcTypes_t = {
  56. RADIO_CRC_OFF = "01",
  57. RADIO_CRC_1_BYTES = "00",
  58. RADIO_CRC_2_BYTES = "02",
  59. RADIO_CRC_1_BYTES_INV = "04",
  60. RADIO_CRC_2_BYTES_INV = "06",
  61. RADIO_CRC_2_BYTES_IBM = "F1",
  62. RADIO_CRC_2_BYTES_CCIT = "F2"
  63. }
  64. RadioDcFree_t = {
  65. RADIO_DC_FREE_OFF = "00",
  66. RADIO_DC_FREEWHITENING = "01",
  67. }
  68. RadioLoRaPacketLengthsMode_t = {
  69. LORA_PACKET_VARIABLE_LENGTH = "00",
  70. LORA_PACKET_FIXED_LENGTH = "01",
  71. LORA_PACKET_EXPLICIT = LORA_PACKET_VARIABLE_LENGTH,
  72. LORA_PACKET_IMPLICIT = LORA_PACKET_FIXED_LENGTH,
  73. }
  74. RadioLoRaCrcModes_t = {
  75. LORA_CRC_ON = "01", -- //!< CRC activated
  76. LORA_CRC_OFF = "00", --//!< CRC not used
  77. }
  78. RadioLoRaIQModes_t = {
  79. LORA_IQ_NORMAL = "00",
  80. LORA_IQ_INVERTED = "01",
  81. }
  82. RadioPacketTypes_t = {
  83. PACKET_TYPE_GFSK = "00",
  84. PACKET_TYPE_LORA = "01",
  85. PACKET_TYPE_NONE = "0F",
  86. }
  87. RadioModShapings_t = {
  88. MOD_SHAPING_OFF = "00",
  89. MOD_SHAPING_G_BT_03 = "08",
  90. MOD_SHAPING_G_BT_05 = "09",
  91. MOD_SHAPING_G_BT_07 = "0A",
  92. MOD_SHAPING_G_BT_1 = "0B",
  93. }
  94. RadioLoRaSpreadingFactors_t = {
  95. LORA_SF5 = "05",
  96. LORA_SF6 = "06",
  97. LORA_SF7 = "07",
  98. LORA_SF8 = "08",
  99. LORA_SF9 = "09",
  100. LORA_SF10 = "0A",
  101. LORA_SF11 = "0B",
  102. LORA_SF12 = "0C",
  103. }
  104. RadioLoRaCodingRates_t = {
  105. LORA_CR_4_5 = "01",
  106. LORA_CR_4_6 = "02",
  107. LORA_CR_4_7 = "03",
  108. LORA_CR_4_8 = "04",
  109. }
  110. RadioLoRaBandwidths_t = {
  111. LORA_BW_125,
  112. LORA_BW_250,
  113. LORA_BW_500
  114. }
  115. Bandwidths = RadioLoRaBandwidths_t
  116. PacketParams_t = {
  117. PacketType = RadioPacketTypes_t,
  118. Params = {
  119. Gfsk = {
  120. PreambleLength = nil; -- //!< The preamble Tx length for GFSK packet type in bit
  121. PreambleMinDetect = RadioPreambleDetection_t; --//!< The preamble Rx length minimal for GFSK packet type
  122. SyncWordLength = nil; --//!< The synchronization word length for GFSK packet type
  123. AddrComp = RadioAddressComp_t; --//!< Activated SyncWord correlators
  124. HeaderType = RadioPacketLengthModes_t; --//!< If the header is explicit, it will be transmitted in the GFSK packet. If the header is implicit, it will not be transmitted
  125. PayloadLength = nil; --//!< Size of the payload in the GFSK packet
  126. CrcLength = RadioCrcTypes_t; --//!< Size of the CRC block in the GFSK packet
  127. DcFree = RadioDcFree_t;
  128. },
  129. LoRa = {
  130. PreambleLength = nil;
  131. HeaderType = RadioLoRaPacketLengthsMode_t;
  132. PayloadLength = nil;
  133. CrcMode = RadioLoRaCrcModes_t;
  134. InvertIQ = RadioLoRaIQModes_t;
  135. }
  136. }
  137. }
  138. PacketStatus_t = {
  139. PacketType = RadioPacketTypes_t,
  140. Params = {
  141. Gfsk = {
  142. RxStatus = nil,
  143. RssiAvg = nil, --//!< The averaged RSSI
  144. RssiSync = nil, --//!< The RSSI measured on last packet
  145. FreqError = nil
  146. },
  147. LoRa = {
  148. RssiPkt = nil, -- //!< The RSSI of the last packet
  149. SnrPkt = nil, -- //!< The SNR of the last packet
  150. SignalRssiPkt = nil,
  151. FreqError = nil
  152. }
  153. }
  154. }
  155. ModulationParams_t = {
  156. PacketType = RadioPacketTypes_t,
  157. Params = {
  158. Gfsk = {
  159. BitRate = nil,
  160. Fdev = nil,
  161. ModulationShaping =RadioModShapings_t,
  162. Bandwidth = nil
  163. },
  164. LoRa = {
  165. SpreadingFactor = RadioLoRaSpreadingFactors_t, --//!< Spreading Factor for the LoRa modulation
  166. Bandwidth = RadioLoRaBandwidths_t, --//!< Bandwidth for the LoRa modulation
  167. CodingRate = RadioLoRaCodingRates_t, --//!< Coding rate for the LoRa modulation
  168. LowDatarateOptimize = nil; -- //!< Indicates if the modem uses the low datarate optimization
  169. }
  170. }
  171. }
  172. SX126x_t = {
  173. PacketParams = PacketParams_t,
  174. PacketStatus = PacketStatus_t,
  175. ModulationParams = ModulationParams_t
  176. }
  177. -- 定义Radio命令枚举(字符串格式,用于直接通信)
  178. --[[
  179. Represents all possible opcode understood by the radio
  180. ]]
  181. RadioCommands = {
  182. RADIO_GET_STATUS = "C0",
  183. RADIO_WRITE_REGISTER = "0D",
  184. RADIO_READ_REGISTER = "1D",
  185. RADIO_WRITE_BUFFER = "0E",
  186. RADIO_READ_BUFFER = "1E",
  187. RADIO_SET_SLEEP = "84",
  188. RADIO_SET_STANDBY = "80",
  189. RADIO_SET_FS = "C1",
  190. RADIO_SET_TX = "83",
  191. RADIO_SET_RX = "82",
  192. RADIO_SET_RXDUTYCYCLE = "94",
  193. RADIO_SET_CAD = "C5",
  194. RADIO_SET_TXCONTINUOUSWAVE = "D1",
  195. RADIO_SET_TXCONTINUOUSPREAMBLE = "D2",
  196. RADIO_SET_PACKETTYPE = "8A",
  197. RADIO_GET_PACKETTYPE = "11",
  198. RADIO_SET_RFFREQUENCY = "86",
  199. RADIO_SET_TXPARAMS = "8E",
  200. RADIO_SET_PACONFIG = "95",
  201. RADIO_SET_CADPARAMS = "88",
  202. RADIO_SET_BUFFERBASEADDRESS = "8F",
  203. RADIO_SET_MODULATIONPARAMS = "8B",
  204. RADIO_SET_PACKETPARAMS = "8C",
  205. RADIO_GET_RXBUFFERSTATUS = "13",
  206. RADIO_GET_PACKETSTATUS = "14",
  207. RADIO_GET_RSSIINST = "15",
  208. RADIO_GET_STATS = "10",
  209. RADIO_RESET_STATS = "00",
  210. RADIO_CFG_DIOIRQ = "08",
  211. RADIO_GET_IRQSTATUS = "12",
  212. RADIO_CLR_IRQSTATUS = "02",
  213. RADIO_CALIBRATE = "89",
  214. RADIO_CALIBRATEIMAGE = "98",
  215. RADIO_SET_REGULATORMODE = "96",
  216. RADIO_GET_ERROR = "17",
  217. RADIO_CLR_ERROR = "07",
  218. RADIO_SET_TCXOMODE = "97",
  219. RADIO_SET_TXFALLBACKMODE = "93",
  220. RADIO_SET_RFSWITCHMODE = "9D",
  221. RADIO_SET_STOPRXTIMERONPREAMBLE = "9F",
  222. RADIO_SET_LORASYMBTIMEOUT = "A0"
  223. }