Sx1278LORA扩频模块基本参数:
7 J) s: [4 p5 U
% S3 r4 G; R; V( G% C0 ]9 |; W3 N7 l) P2 I2 ]0 T$ i+ G
工作频率 :137- 525 MHz' v5 g) B4 V5 |4 D
9 e3 B9 u& D# l1 @扩散因子 :6 – 125 D& P6 q+ Z1 ~) h3 @$ Z
! V0 ], \% h% R S3 `' A带宽:7.8 - 500 kHz
9 V: \$ T% ?; h" R& I+ f4 E/ b* M# M- _ d s. O" v: R
有效比特率:018 - 37.5 kbps
& _2 M/ {, t0 L
4 ]. k. J G8 G灵敏度:-111 到 -148 dBm
$ Z1 |) t' k( W F1 U$ o
' }/ z* k! |& p' q. X5 p工作电压:2.0-3.6V- Y% V& F0 |: \" u4 h( I) N! L
- h. p7 X. w( x2 v' j9 J
发射功率:+20dBm(100mW)& }- Y- T" \0 K- |- [0 Q4 q) w( y2 h2 n
/ z& n: O! y9 [+ V8 t
通讯距离:10km-15km(500bps)(无遮挡)( e! `% b. F8 G8 v3 ?1 u" E( X& x4 |8 x
* s6 T2 _, r, O: J4 i0 E5 S" O0 ^
数据接口:SPI4 y/ a$ r4 w- o6 v
( B( z( s3 i, ~9 z" a: x6 u2 ~调制方式:LoRa/FSK/OOK' G7 Z2 X' l; l \/ w# Z$ a6 o0 Q6 z
$ A" Y* o, k* O+ S. D8 F5 Z工作温度:-20- 85°C
* z' {8 x5 }* M4 X. e9 K8 L( B q5 g* X* I$ A
以上部分技术参数名词解释:
4 y" C) u F2 L6 Y- K
7 j0 }8 a8 }1 ~5 I扩散因子:; R2 k2 `3 Q& \) V+ T2 x
" A6 f1 _3 ~0 y) q+ |- w$ `LoRaTM 扩频调制是通过展现有效信息的每个位来进行通信的,这种扩频信息的发送速率需要参考符率,这种公称符率与芯片速率之间的比率就是扩散因子,展现了发送出去的符号总数每一位的信息
+ ?, P% S; f! c" I7 `- ^" q1 s. ]& V$ j5 B' U
信号带宽:
. {+ N0 @0 M% h: M' E# A# n- x/ p* |& ?6 `# ^
增大信号的带宽,可以使数据的有效率提高,即能使传输时间减少,不过会使灵敏度变小。2 p. \, [8 C" y' L
3 j1 p* @: q# c, W7 ?+ M4 J
调制方式: V, y1 B% g8 k! G; ~& Q) g8 ]
/ \) W; x4 z% z1 v/ {! M9 [% i5 D
LoRaTM调质解调器使用的是扩频调制技术和向前纠错技术,它的无线通信链路比传统基于 FSK 或 OOK 调制器有更远传播范围和更加健壮。: e6 E# }4 _1 f, f. [# c
! B" Q+ Z* i' q- p3 { [4 T频率跳跃扩频技术(FHSS):
. j6 w5 s: c! Q$ ?. p4 Z9 B- n1 m7 h7 x, }. D
FHSS方案的工作原理为:每个LoRaTM数据包的部分内容通过在微控制器MCU管理的频率查询表中选取的跳频信道进行发送。在预定的跳频周期结束之后,发射机和接收机切换到跳频预定义列表中的下一个信道,以便继续发送和接收数据包的下一部分内容。在任一信道内的驻留时间由FreqHoppingPeriod决定,他是符号长度的整数倍。
; B7 M- i% Z/ p' `' y6 I* I& h y2 [
SX1276/77/78/79 基本区别:一张图说明:4 ^1 ^) x5 I' n6 M( P8 n- L# J! O
1 x9 o+ y# c+ e. X2 \
/ {/ V# S; M: E7 y: N& P
# \, L+ g* j* y, O# \6 |$ g9 ]8 c+ J
* T' e3 }( i' }! q
主要工作模式功耗参考表:一张表说明:4 \" H3 i4 \/ D$ w7 y ^" |
' _+ V3 ?& Y. g- l9 p* E; l- p
: a, i' b8 _3 W3 f
7 R( |/ |$ L+ C5 S
4 \ S- x' u/ R4 GLORA调制模式下的运行方式:) f& K x, n' a) g
LORA 调制模式可以通过设置寄存器 RegOpMode 的 LongRangeMode位来进行选择:$ l6 s0 v8 c" y6 h; L$ ~ h9 \( c
' \' x$ K; g! f4 O: o, V; j+ K" W' X1 F% R
2 }5 q1 i9 \% h2 ^2 q5 kLORA 调制解调器发送和接收工作流程:/ J/ _) H6 A) b& B+ S
8 u0 n$ J8 Z1 N# r/ `/ W! S4 |' Q* Q; C6 W
) ^) L4 q+ w7 j! U6 x( b Q数据发送流程:' x9 I" D; ?" m, ^- `
在发送模式下,在需要发送数据时才开启RF,PLL,和 PA 模块,这样可以减小功耗;
9 s: t" K# V! w d4 i1 N8 I' ]5 a2 F$ }+ ?7 `, Y% S" F
注意事项:
1 O; Q) g, s, P+ p% _
# w5 n6 D* _7 A. e1、 静态寄存器只有在休眠模式、待机模式和 FSTX 模式下才能被使用。
: U: _5 S% a' ]1 h |6 \6 N( A# A7 h2 i& J) |- X& o; _
2、 LORA 调制的 FIFO 只有在待机模式下才能被写满。2 p3 q% b ^" W3 W
/ G; I& E* e/ q9 W% {3 N N8 T6 D
3、 数据是在发送 TX 模式请求后才发送! m% i5 D0 \6 p* m
9 [# S- u9 |* D9 p; ]* O4、 数据发送结束后,TxDone 中断发出,设备进入待机模式
% S/ j# z/ {8 `. ^: X" ?* y- H# Y# B( v3 a3 c- q+ N$ i
5、 继之前的数据传输后,无线设备可以通过手动设置成休眠模式或是写入一些) q9 N! T; A/ L) f1 K2 D: q0 [
数据到 FIFO 为下次发送做准备# K! B8 W+ r! L* a
8 u7 T5 b/ h6 S) c
6、 LoRaTM 发送数据在 FIFO 填充% ?8 F9 ~; I8 c! Y: M2 k5 q
7 s/ y( R4 V; m) |
数据接收流程:" h# ^9 `5 s2 t7 q
注意事项:* T7 t0 O; w& z5 y
5 z+ c4 ~) S/ t& T. F
( Z5 L) k G& h5 G) b+ }" Q0 b9 [
7 V& K/ h+ x; P- g* Z$ O* l, ?2 Z# V" K' ^* E
) Z( i. F1 n/ I4 J( J2 p
LORA接收模式工作在两种不同的模式
& Y3 k/ R) t( Q6 {' S1. 单个接收模式( s! ]: }; h6 u x9 F
在这种模式下,调制解调器会在一个给定的时间窗口检测数据包的序文,如果在最后一个时间窗口都没有找到一个序文,那么芯片本身就会产生一个RxTimenout 中断然后回到待机模式。
9 j7 k0 E. @# T5 h7 _3 N1 K; d6 T7 o' C6 J" z
2.连续接收模式; h7 A% _5 {( C# }+ |2 h8 C
在连续接收模式下,调制解调器会一直扫描信道而获取一个有效的序文数据包,调制解调器会一直检测和追踪信道上的序文,直到有效数据包被接收,然后继续等待下一个序文如果序文长度超过了寄存器RegPreambleMsb 和 RegPreambleLsb 中设置的预期值,那么这个序文数据包就会被抛弃,然后重新开始序文的搜索,然而,这种情况不会产生中断标志位。与单个接收模式不同,连续接收模式下,当产生超时中断时,设备不会进入待机模式。7 c3 C+ Y/ @0 W
+ |8 e r; v; D, nCAD(channel activity detection):
o8 K! s4 j y. C8 ~扩频技术的使用不能解决信道是否被其他lora 信号占用的问题,RSSI 也无法解决这个问题,为此,CAD 就是用于解决检测信道是是否有其他 LORA 信号问题工作模式。
) X% s/ b- N, _2 v# f3 ?8 P. ]# p/ [3 T0 W$ Q/ W
数字 IO 管脚映射:
2 I4 \& o# K T* l3 Q在 LORA 模式下有 6 个通用 IO 管脚,下表给出了这六个 IO 管脚的详细信息(跟寄存器RegDioMapping1 和寄存器 RegDioMapping2 的配置有很大关系) r" I' Z! Y* m) y& P* i( I
: X+ Q8 u( b, ^" l% L6 k" a
* p3 c! J9 m F( Y
! X0 ]6 W) R5 F1 Y8 M8 r( ]STM32Cube软件配置:# H" z O1 }2 o2 x+ Z3 d
SPI接口配置:
9 U6 K" e3 X% \; e- O" ]. B* {原理图中使用到的SPI接口为SPI1 J- u- \( d3 L+ ]2 i5 A4 `
5 m7 c! ^2 m" m2 L0 O
配置为全双工主模式。在参数配置中,注意一下几点:& N4 j% w# a7 @1 F' L; Z
/ F, Y9 N7 i" R: |2 D# C0 k* r
数字IO管脚配置:
- n) M" G3 b t) Z* w输入模式
# |* m/ d1 w/ H5 Z7 t: U# U. Q! Q( L) y. W3 r* t
! k# J! \* U/ X1 J- @6 J0 I" O
8 z# y6 V: d9 u# O9 f
~. X# R* f9 k# d& y6 F# J生成工程代码:" |& l6 F7 A9 X
SPI的主要接口函数为:
3 Y8 u" ]% f- L) u: u0 E5 x
* v3 A) N% c. u5 l8 U4 e% Z; r* ]$ p! ~' L
9 U: P) Y9 |1 t- s1278编程:
8 M1 ] R5 h- l9 b: v& M1278复位步骤:* N7 Y( n& K4 c h
NRST = Low 低电平大于100uS, 然后NRST= High 高电平大于5mS 即可完成手动复位。( n! F3 E1 Z, w, z- g0 E
/ {8 Z( A; W& q) A& D1 V. s# o
SPI接口说明:
6 X9 {6 i$ x/ \, k, P5 dSPI第一个数据字节为地址域,bit7 为读写控制位, “1” 表示写, “0” 表示读;bit(6-0)对应当前操作的寄存器地址。 在连续读写操作模式时, 寄存器会自动加“1” ,直到NSS脚被拉高;特别注意: FIFO操作时, 寄存器地址不会自动增加, 而是FIFO内的缓存地址。 寄存器的详细说明请参考芯片数据手册的“寄存器说明章节” 。
' q4 V1 R/ e4 |7 }7 f2 k' F2 V( ^
SPI接口C程序:# l" x1 l- \- K
在sx1276-Hal.c和spi.c中定义
4 m, x+ \* F) c通讯接口函数使用HAL库中的:HAL_SPI_TransmitReceive()' I0 ?/ D& M+ h K8 f0 R
5 Z" {7 R+ Q, N h- uint8_t SpiInOut( uint8_t outData )
1 k7 z+ C# v/ t# s/ o- g - ) i4 H8 V: m) h* ]9 }, k* J( b2 i; ^1 G2 k
- {
* N2 s; A' t# A% i - 3 f2 J/ @* }* [: J' w0 o
- uint8_tretemp;
$ o# ^6 m8 B `; e( _3 ^$ s- i
( J* \4 {; ~2 O( o m; J P: _$ r- , T( k+ ]' B1 f$ j+ Z, f
2 I. ~+ v; B4 x1 C3 |& d7 k* i- HAL_SPI_TransmitReceive(&hspi1,&outData,&retemp,1,1000);4 s$ P$ `2 ]/ @
' U0 ]) M7 Z& o8 [1 Z# o
" d7 }% o6 e& ~( f! {. l
+ [* \8 P* Y* h8 e3 C- returnretemp;1 R! K& q% y7 _7 n$ J
2 e7 P: B3 V O: _
. z: K6 u, X H4 g. `8 V8 I- % r* r; |' _! }' v, P2 B! y/ `0 ~9 R
- }
复制代码
# D" p, N M, Y; tSPI通讯接口函数
1 O+ {) ^6 @) B3 P; Y2 c* c* P. ]% A. [ m; h& _% N6 z
5 C5 N8 K) \" F- void SX1276Write( uint8_t addr, uint8_tdata )
# ^1 V' H' Z) w8 I5 k' H5 T - " m) `( p z3 x" n4 k( J0 ]; [( A' s
- {0 a0 J7 w9 ~4 d
/ a- f: U. Y0 Y7 b6 A- SX1276WriteBuffer( addr, &data, 1 );3 K) E% i% l& D3 B6 F5 w+ `7 L% Z
& ?! M! [) `2 G' V% k- }$ y' \: C; z7 i; k$ O5 h! [
+ I) m# E! }+ h- % c+ c, z1 m7 Q- \/ L
- B1 J( Z& C0 i8 G m$ ~: ~1 D( h
- void SX1276Read( uint8_t addr, uint8_t*data )
: L. B* q- D/ C3 K x& O
# j+ u5 m p2 n7 i- {
9 {4 d8 J# l3 V6 Y' F
0 t( r- i8 i1 k+ l% n- Z% E- SX1276ReadBuffer( addr, data, 1 );
- T- K/ x, b& z4 p/ y$ p# u6 Q - 1 D( Y* x$ k( M& O/ j
- }
# o# ~$ T/ F* ]' M
. _3 W7 }1 f# S( n+ g5 P- h0 a$ ?" ?5 m- $ c6 Z& j: a3 [
- ! j' Z7 B; c. L1 ?$ V' j
- void SX1276WriteBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )) u" E' K( k+ D! z" E: D% O8 J' `4 D
" `- U0 v" u# ]- {
4 f3 N9 n# u8 h! \- N- v - ' g" P) |: S/ C @4 h1 K' S4 p# B
- uint8_t i;3 K. q' @5 B2 X9 u
- + @) y2 K1 d2 H$ q& r9 K
6 c2 V; B \ I- 9 P- q. W- P: q3 h
- //NSS = 0;
% F3 I+ A& @6 Y: v6 S5 E- F" f( U" f
. b3 _1 j, Y! M* O+ E+ \# B4 k- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );4 |1 L m2 `1 \5 S4 v5 D0 F
- 6 \. `+ s g# r/ z+ Y
& j6 c% u; d) A7 }' n6 A @
" `! V/ H/ F0 @& j' {- SpiInOut( addr | 0x80 );8 ~3 a% \# ]6 t* \
- 6 e5 l# C- s/ {" L- l$ P
- 2 V6 I( F# Y1 {! a2 @# W. B- s6 n
; G, W) t+ \2 f" P- for( i = 0; i < size; i++ )" Q. A# I0 ]( c! T& s
- + e% t4 J& r. q" G
- {
6 n/ t1 a; \8 E* H
' M, M9 ?% Y: h2 e# j3 K7 }- SpiInOut( buffer<i> </i>);- r- A7 v4 C) R2 z4 w' W% `. O) o
% c& A" l* W0 d( g! W7 v- }
: V# x0 h8 ~4 o - ; z; m* z/ Y$ M
- & e6 e! J) f h; Q" k
3 A* v3 j( @5 ~4 _! O& u- //NSS = 1;
" z0 J) s% B% q( p) k6 x
; B0 ` q% L, e+ d6 j- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );
I9 V$ Q2 O. f- Y' Q' H$ T/ e - ' w* T0 Z7 ?7 h1 |( F; _3 O) s
- }' O2 d9 R+ @3 K1 [3 F
- ; C0 P- ?% I. h9 ^( x
! P, G9 i; M2 Y. M, G% N4 M- . V j3 n: S$ t; T* B( P
- void SX1276ReadBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )" p. {9 B1 J' m- A
- % n' `0 D6 z; Q6 L
- {( Z- H+ `0 b8 b- s3 h5 W
- + Q* u6 M- u! i
- uint8_t i;6 q I! ^8 h5 m9 G
9 L) ?) R: d# I1 C
5 K! B$ t7 h5 ]% V, w" [# ~7 p" E$ L
# q6 n; a% [* @+ p& ?- //NSS = 0;1 K& [9 }* d/ Z( h& L
5 v, r) h) k. j0 D- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );
; K- t# D( c( r
5 \* p2 m6 X0 `9 e- C4 Z- O& D6 ?( ^" |
0 K- X5 [- h$ X0 D7 Z- SpiInOut( addr & 0x7F );
% J& t( ?4 Y: h2 O- `# |* N# Q
$ d, {% n& J- z1 ~% i: ]6 O- " \1 S/ g3 p5 }9 U
- + u2 u* [3 ~: `8 K. R
- for( i = 0; i < size; i++ )
: |- I, ?5 ^" Y7 H4 r3 Z0 @3 q
+ A! ?% Q0 k9 }* \, B- {
- D8 _8 }$ ~4 ^% I
7 U8 m7 N6 k) W0 ]8 F1 Q- buffer = SpiInOut( 0 );$ J) C* k8 q! }. _2 F4 R
) s9 n( L) t- U- A! u- }
) w6 }5 z; M( X8 a" P - 7 ]' K3 b% W( z$ D# U
8 R; ~' u; `2 p6 b/ e
( h) @5 v( p8 r4 D; }% [- //NSS = 1;, H2 O& q7 L( |% R& G9 M3 o2 u+ _
- / ^( k c0 c* H* M; e
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );: k; n$ P, u( Z+ ]
2 ^% w& `; E- q5 g- M- }- Y1 h8 u+ w$ _4 t X3 b# R6 T
2 D5 ?. [! |5 A8 W- z" A+ e" \6 L8 d' z8 L6 e
- - C" z$ t6 J# S8 A
- void SX1276WriteFifo( uint8_t *buffer,uint8_t size )
- ?' B8 v& F4 H: z9 X
; S! Z) L0 H2 r7 C- {
5 b# J3 H7 Z. O. u4 x
E1 s2 N9 Y" P% ?& e- SX1276WriteBuffer( 0, buffer, size );
! p% m8 t' B2 Q - . W6 H2 R8 B2 O" p
- }# N2 L0 g. I; M" F, h# [' a
3 y n; u- l/ i8 o# I
4 k+ I) P3 K+ s& X- ( c( @6 H: u' p) i+ A, @
- void SX1276ReadFifo( uint8_t *buffer,uint8_t size )
* a" Y! W f$ Z( {
. e3 d1 d* d1 L+ Q& Z: S7 v- {" ~5 {% _: J5 `2 y& u, a" W
- ! v/ r6 R i+ E7 S
- SX1276ReadBuffer( 0, buffer, size );( ~9 C( k/ N3 {" G3 i: U& \
8 }) e; {4 S' \- Q& a- }
复制代码
; O6 F/ I' [; o/ l$ C, n数字I/O接口函数:
' ?* o2 [5 U) r; P4 L* o
# A. r$ g+ q& k% l中断函数
* q8 V: |* Q) `# k; ~
, Z% @ T4 L {; N m数字IO管脚功能配置
6 O# v* b8 A. O. D9 |* U0 I) v外部中断上升沿触发,下拉3 {; [$ c2 W9 u) j
- ?9 d9 r( i* m# B9 n s7 K, q9 y1278扩频模块参数修改+ v9 O8 ?: Z4 V$ w5 {0 Q
在文件sx1276-LoRa.c中,由该结构体初始化模块参数- k& @( f6 r4 W, N# g3 u
- typedef struct sLoRaSettings
" S- C; h- Q: B$ y
- J/ ^- b5 i6 `! I! k( h. F- {8 u7 p) _4 ~8 ]
- \7 X- P$ w# `! t5 j
- uint32_t RFFrequency;
4 y; B' K. M- X( f/ v4 T - 4 ]9 z; {/ B2 c; y
- int8_t Power;
6 e, W, l, I( p8 T; U - - j- s4 N' {, Q
- uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
' @' U1 N' @, k0 [4 V3 R, B - ' \9 l; o3 z2 T; S8 T* M
- // 5: 41.6 kHz, 6: 62.5 kHz, 7:125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] ; v8 _( U) o+ F/ U6 [) m9 K5 n
- % j N3 @6 {+ D2 }5 D; {
- uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12:4096 chips]; p% F+ R3 R( [2 }% l9 X8 L w
- ( r% y' B- Z: [0 I) v/ `
- uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8], N" q, Q. G+ f9 L
- & J! V8 {4 ?# j& @0 W: J
- bool CrcOn; // [0: OFF, 1: ON]
6 ^9 O+ P" x# W( v3 X - - ^1 T" t [0 q2 Z, S
- bool ImplicitHeaderOn; // [0: OFF, 1: ON]
9 w1 j' X1 q+ ]* b1 R
8 X6 R6 p3 Z \- bool RxSingleOn; // [0: Continuous, 1 Single]( c. T4 B8 L0 U! K
- ' o: g4 g6 c+ r/ F7 n
- bool FreqHopOn; // [0: OFF, 1: ON]' b: \, f0 ]* Z" l, k+ D* i% i
' C z, o2 [, m" d& O- uint8_t HopPeriod; // Hops every frequency hopping period symbols
+ W/ t% R! B, a8 J6 E& Y4 a
2 v" K/ Q* X1 H. J- uint32_t TxPacketTimeout;9 e+ z0 g3 p9 E) |3 \6 I
5 Z5 D: L2 W' r7 g3 d I- uint32_t RxPacketTimeout;# _; B/ F+ a2 ]) i! a' e
- 6 \4 G8 N7 b9 s
- uint8_t PayloadLength;
& f; i+ C; v; @, M
" j6 y o1 a' F& _# P- }tLoRaSettings;4 x' e7 J2 g& Y" I) f
& n2 E6 ?" Q0 v: K" }
# b$ G" ]! f! [; O9 J1 G
复制代码
. F1 e' @" r# y+ S/ v) ~例:
# Z0 ^2 D2 P) ^
# e4 ^1 n1 p7 d( P- q2 G1 [. D- tLoRaSettings LoRaSettings =3 K3 C' W5 i; {$ }& e3 }) ?
- 1 g3 J0 {, t3 f% p M& i6 R+ P0 h
- {( a# {5 U, @% D* X2 T" l0 A
- 7 K, x! t" ^# {) N3 `
- 433000000, // RFFrequency
& [$ T+ n8 y1 |9 V1 i5 a$ Y - # @% K* ~- m, @) D
- 20, // Power
8 X6 Y# x) P- n8 D3 T - ) v+ M: R8 B$ c
- 9, // SignalBw [0: 7.8kHz, 1: 10.4kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,- B6 ]3 u. v9 O$ P3 I
: V& i" h: }1 v9 j& E- // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other:Reserved]+ ]$ K: ?5 D3 ?) @, I
]0 p }. e% x- _- 7, // SpreadingFactor [6: 64, 7:128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]1 V2 [/ N; x" @6 n" `
- F: q5 L# q6 i/ M- \- |6 L7 Y3 t0 y- 2, // ErrorCoding[1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]; z4 w* b6 \* j: i# B+ ~0 M
( ]5 S# ]( X3 ]" d! g1 g- true, // CrcOn [0:OFF, 1: ON]
! l4 ^) @0 }* N/ B. f
* Y/ i0 N) C2 a; L0 x- false, // ImplicitHeaderOn [0: OFF, 1: ON]) c+ e# {: g# ^+ c. B- A1 F
- , {6 K/ B0 v5 w# p+ X
- 1, // RxSingleOn[0: Continuous, 1 Single]; H, A& G- m3 q* f
/ m9 _1 |7 y. i" T/ U- 0, // FreqHopOn [0:OFF, 1: ON]
2 v% {6 C( j- M" X2 K) n - 3 b! O, g# t0 X
- 4, // HopPeriodHops every frequency hopping period symbols) }2 t8 d) t& a0 L* p4 h/ p2 m
8 t8 h2 w5 z6 h' y# F" Z- 300, // TxPacketTimeout! y' w8 g3 \) F' \
- 7 l* t, ^3 M2 q1 v' Z$ t
- 300, //RxPacketTimeout5 J( B; p% j; M% p+ Q3 M
" z/ ?0 a( m4 @6 c, x8 {) ?% D* Z1 |+ E- 128, //PayloadLength (used for implicit header mode)
$ U, [9 y: y Q) l7 f# Z6 \ Q - % F: z$ q. \+ O
- };
复制代码 # f2 A. N5 X/ I3 |: T
: B4 o2 v; i/ \: V! G; i" Y) x6 _ f1 |$ R) v, K& T
, e, ~ A5 @' ]8 H% q- [7 S
|