sx126x_reg.lua 8.3 KB

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