sx126x_reg.lua 8.5 KB

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