Sx1278LORA扩频模块基本参数:
) j' h# @5 W0 C2 H b- X
6 x1 U& T/ S8 m! m. l0 Q9 q/ K a( p7 B i2 i X3 B2 }9 p
工作频率 :137- 525 MHz
/ y) Q: d* f9 A: O. A# a6 q3 ?9 ~! Y3 Q( @8 Q
扩散因子 :6 – 12
! [3 E8 m8 d2 ~6 ~5 ?) b) Q/ I! \" v3 w3 @0 K. g
带宽:7.8 - 500 kHz& s6 }& ^3 R+ E: E1 N
( u* h) v( |. i. E有效比特率:018 - 37.5 kbps1 _: Y0 c% @' E# V. |+ m
* G* u! W* }# z; z- M3 o
灵敏度:-111 到 -148 dBm
/ T& }) I; p) P/ u4 {( i3 f) H( @2 ^
工作电压:2.0-3.6V
, P$ e, M& Z l) r H/ |- S) n- Z, X6 s
发射功率:+20dBm(100mW), d! a8 c4 c8 c% D% ?: w9 P( I
; l/ \% W9 u m5 q/ d: L
通讯距离:10km-15km(500bps)(无遮挡)
* m3 Z4 @' p' E) r- O: D5 I2 |: S' ^. f- W: ^4 K0 W
数据接口:SPI I8 _0 _- q( f
( T' y. w0 D: f& {/ b- p5 _0 V调制方式:LoRa/FSK/OOK
* R; v! \: V W$ B5 n. ?" M+ Z
, p1 r9 H) Z/ M8 t9 f% |工作温度:-20- 85°C2 t1 G; M% ~% l
! [% h( k+ V1 U+ I0 ^% b以上部分技术参数名词解释:
5 \5 K7 ~5 d/ @: O8 p9 J
. n% w( A# w. {/ f扩散因子:
4 S' J3 F j+ l+ d/ d o" `6 g% L* {- O( q
LoRaTM 扩频调制是通过展现有效信息的每个位来进行通信的,这种扩频信息的发送速率需要参考符率,这种公称符率与芯片速率之间的比率就是扩散因子,展现了发送出去的符号总数每一位的信息
4 G) m. w) v, I ^, l) o9 R/ e7 |8 W( i$ b+ T
信号带宽:
9 u; }* z' K) U
% H) L" Y. v5 I, p增大信号的带宽,可以使数据的有效率提高,即能使传输时间减少,不过会使灵敏度变小。" A; j! U$ n( \: w- T Z7 q+ I
8 h4 }- h2 N% [: |8 K
调制方式:7 P0 p9 W) m4 R+ d. q8 o0 u8 d( Q' W
$ D- j; a3 a0 {) V9 H' X, x. J( PLoRaTM调质解调器使用的是扩频调制技术和向前纠错技术,它的无线通信链路比传统基于 FSK 或 OOK 调制器有更远传播范围和更加健壮。: Q% ~0 X6 G+ t; t3 E( }
/ n" e/ ^! x/ n' D* _0 e- `5 b
频率跳跃扩频技术(FHSS):
/ U) |( I# F4 J$ @- Y$ d( |9 U2 ^) i. C0 }; E
FHSS方案的工作原理为:每个LoRaTM数据包的部分内容通过在微控制器MCU管理的频率查询表中选取的跳频信道进行发送。在预定的跳频周期结束之后,发射机和接收机切换到跳频预定义列表中的下一个信道,以便继续发送和接收数据包的下一部分内容。在任一信道内的驻留时间由FreqHoppingPeriod决定,他是符号长度的整数倍。0 H; N% ~$ a" M0 e1 \
1 w$ M! p8 J$ ~4 e- E' D" A
SX1276/77/78/79 基本区别:一张图说明:
$ \* |6 X; F" o% z2 v. v
6 H; U: o* I% o( y: b3 ~
6 B4 P6 o3 I0 |7 c U/ {% C9 u2 L2 c0 v+ _9 S1 v9 p( {( h |. h2 r
9 D' M7 v) @$ l3 h3 w8 k
2 X9 t5 u- ?2 u1 |! h! |
主要工作模式功耗参考表:一张表说明:
/ _/ M3 u0 w7 d$ r# l6 h. f3 C% h+ a) r
. E0 w2 ~3 x4 R% w0 |
: t: T I# M6 Y9 {+ K# c" X) z* W" Q8 j$ h
LORA调制模式下的运行方式:1 f: j! l. U! z' x+ H
LORA 调制模式可以通过设置寄存器 RegOpMode 的 LongRangeMode位来进行选择:
; R4 L6 }! _# G2 J( Y; k! W: n' p" a& v) w6 |
+ p2 W6 T, y0 M& Z- h! x$ s; |
% d: Q; ~8 @, |LORA 调制解调器发送和接收工作流程:
# m1 }5 k1 ~2 f' |* Z0 [8 r
: N" ^4 D7 }8 H- x$ d% k j& s8 r, c5 I! t" c
数据发送流程:* ^3 w; i1 Z; X& @
在发送模式下,在需要发送数据时才开启RF,PLL,和 PA 模块,这样可以减小功耗;: W a$ X3 e2 \5 F6 I4 H* P2 E
) T! e8 w6 J/ y( w9 A; `! x
注意事项:
$ E8 }6 C1 [3 q7 ^0 Q, B! |4 f/ Z# j
1、 静态寄存器只有在休眠模式、待机模式和 FSTX 模式下才能被使用。9 c- n/ N; p1 O" u
8 I! |2 m5 ?0 W3 m2、 LORA 调制的 FIFO 只有在待机模式下才能被写满。3 w" [. a. z: J7 ]% a
+ k' ^, X. F$ d8 h/ u6 F m% A( ~3、 数据是在发送 TX 模式请求后才发送- d8 Y7 M% Q$ P- E
0 j4 `6 e+ P* N( w" S* K
4、 数据发送结束后,TxDone 中断发出,设备进入待机模式
9 Z0 b8 S, M5 R/ R8 U3 V9 C: c( @/ E4 L
5、 继之前的数据传输后,无线设备可以通过手动设置成休眠模式或是写入一些
. F4 s/ [# G2 B6 e9 e/ m; z0 C4 z数据到 FIFO 为下次发送做准备$ \3 V8 T& b. B0 E1 M0 t( z% W) i
. I0 s: H$ p6 N! E; U* X
6、 LoRaTM 发送数据在 FIFO 填充
& ^& d6 s" Z0 n3 w4 j( w; I
' B, N) J j3 |4 v% s数据接收流程:$ z3 C i) U3 p' I4 ^3 Y
注意事项:
0 ^; F% f4 q) }' g/ |( A& ], g- v) _, D" @" x
" ~5 T3 ]$ J) @$ P" k: {
- k* s9 K0 ^ n- u# @# w* K% a; B9 E) ]
5 S& w0 V! x! b, E F
LORA接收模式工作在两种不同的模式
% E; _6 [0 u& F- d8 }* _, H. | @9 Q1. 单个接收模式" T5 E) P( \7 R# Q p
在这种模式下,调制解调器会在一个给定的时间窗口检测数据包的序文,如果在最后一个时间窗口都没有找到一个序文,那么芯片本身就会产生一个RxTimenout 中断然后回到待机模式。' }! H2 m$ `0 q" A; z$ p! b
& m( L R: }5 V& _
2.连续接收模式
M- F- o% Z2 y# Y7 p7 c' U* d在连续接收模式下,调制解调器会一直扫描信道而获取一个有效的序文数据包,调制解调器会一直检测和追踪信道上的序文,直到有效数据包被接收,然后继续等待下一个序文如果序文长度超过了寄存器RegPreambleMsb 和 RegPreambleLsb 中设置的预期值,那么这个序文数据包就会被抛弃,然后重新开始序文的搜索,然而,这种情况不会产生中断标志位。与单个接收模式不同,连续接收模式下,当产生超时中断时,设备不会进入待机模式。
: l/ K1 e# `$ @1 N! z \9 E# N& R8 w1 }% g. H9 y
CAD(channel activity detection):
, Y0 i* m! p4 l7 W扩频技术的使用不能解决信道是否被其他lora 信号占用的问题,RSSI 也无法解决这个问题,为此,CAD 就是用于解决检测信道是是否有其他 LORA 信号问题工作模式。
3 W* z. \8 K2 }+ ?5 a6 |5 a! {, x) x' ^5 y
数字 IO 管脚映射:
! U! h$ W8 J: `# y6 ]: p/ w在 LORA 模式下有 6 个通用 IO 管脚,下表给出了这六个 IO 管脚的详细信息(跟寄存器RegDioMapping1 和寄存器 RegDioMapping2 的配置有很大关系)
# [+ c6 t o6 A# W" n/ ?6 N' Q& [7 k- i( x
: ?7 B& Y. g z9 y7 b( R
9 I% }4 A' g; s' t
STM32Cube软件配置:* {& _" S" X$ N. F7 j
SPI接口配置:2 k* j% k- o, o6 X$ {& Q
原理图中使用到的SPI接口为SPI1 J
5 L% J/ i( M& \, j, k5 z! E( `0 O- H% }
配置为全双工主模式。在参数配置中,注意一下几点:" e7 {, j) C; e5 p- K9 ^$ j
" n; f8 Y& ~4 Z, f! K数字IO管脚配置:
' {4 K3 O7 u: o输入模式% l9 j7 V. ?5 F- [1 L) O: y
4 f: T1 ?: h$ I/ U
) @- y# `% H' j
3 M: |6 t1 t; w1 W
+ I" Z% ~9 k9 o) Q/ K' m3 x生成工程代码:4 o- J) O. ]$ I0 {( I7 Z) d
SPI的主要接口函数为:0 O" a+ y* ^ e) d$ `7 e! S. B
\0 P$ }1 Z. ~4 f. q; W T9 e. f
7 D0 T& v1 @$ A$ t8 s8 W
0 a+ J% F3 v1 Y1 J- I3 _1278编程:
% l, x2 h7 \1 Q) `% P1278复位步骤:
9 T& S* Q* g( tNRST = Low 低电平大于100uS, 然后NRST= High 高电平大于5mS 即可完成手动复位。 y7 r6 c& S* ^4 i! a$ o
& E, q3 Q1 Q: U. O, `SPI接口说明:
6 K- j- R0 ^& Q V' _* pSPI第一个数据字节为地址域,bit7 为读写控制位, “1” 表示写, “0” 表示读;bit(6-0)对应当前操作的寄存器地址。 在连续读写操作模式时, 寄存器会自动加“1” ,直到NSS脚被拉高;特别注意: FIFO操作时, 寄存器地址不会自动增加, 而是FIFO内的缓存地址。 寄存器的详细说明请参考芯片数据手册的“寄存器说明章节” 。3 b, b: r( r% C4 i
* y) l& `( n2 W+ q; a) x
SPI接口C程序:
- b1 Y- |' O% ~5 \% g7 Q$ |& g在sx1276-Hal.c和spi.c中定义
0 @- E( f4 \, y$ Q- {# d通讯接口函数使用HAL库中的:HAL_SPI_TransmitReceive()7 g- @* A" V, ~2 O7 z; y
) ^2 r5 {2 P' r* l8 `& _3 t- uint8_t SpiInOut( uint8_t outData ). C! G U7 \8 W, J, [+ [
- 9 `& Z' {/ j4 D& {
- {
8 h3 n7 F: ?) p) ` - 6 b, M* c" K2 C# s% u% }. D
- uint8_tretemp;) J% n5 l# a8 ^8 p( j
- , X# Z. P& H3 f. W
- - H7 u- L: v; Y" s
Z3 o% l3 g: L) B+ u! o' u9 }- HAL_SPI_TransmitReceive(&hspi1,&outData,&retemp,1,1000);
8 P2 E$ Z4 v: c0 e
, G8 t" j' _1 u3 c! Z- 5 l- w5 f, w n% a
# Z4 i+ ?5 E" }& U. ?% D) r7 k5 G- returnretemp;' b9 ~/ W& [! y' n2 Z7 q- ~
- 5 T* V3 `3 Z! C3 J3 v0 X! J
- 5 _) `! A+ m5 H" G) ` x
- 4 Q& U; R$ t3 D c
- }
复制代码 ' P4 m) k+ J8 P! o, ]( m& |
SPI通讯接口函数
3 r( L% I* R n& k2 [: l* D6 A3 X6 m" ?1 @4 I3 `5 A
3 F' \# |+ D- o5 a4 N
- void SX1276Write( uint8_t addr, uint8_tdata )' e# f& v ?/ q* z' f
- 6 o1 r: }9 `* p0 ]3 N
- {0 }; }* h6 V! s: S6 W
- ( y, a& Y7 C7 `( H
- SX1276WriteBuffer( addr, &data, 1 );+ U7 i- E/ J7 o; V9 {' A
6 I$ A, q: z1 x( Q2 b) v$ `- }* K) O" p3 O- H a" m
- 1 y) o2 _( e' ?' P
- : y: S* x1 J. h9 _0 R
) c4 S2 W- V3 U- void SX1276Read( uint8_t addr, uint8_t*data )
; Q X: |/ A3 A- I* f( V; K0 c* r - ) L" G! K# L0 f) L0 Z1 o1 Z/ s
- {8 R2 j# t( [* E. U9 x; \
/ ^& w* c6 W, w2 ^$ m4 w( f- SX1276ReadBuffer( addr, data, 1 );
0 d/ m3 }& @: ^. j. S) j! \ ^( t
& U T' y* S4 }( k! [6 A) m- }
" Q/ k" h% ]4 \! R' ~( Z! b
3 a3 m- T; P# ?) `/ I3 c @6 `5 i- 1 w0 U5 @% |" b' b
- T" P# w6 d2 S4 m( [, `7 V
- void SX1276WriteBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )2 T5 k9 s V, S% S( P# w( R
- " Z5 l g! w# W+ ^, H* p+ G
- {1 Z$ {$ _+ W2 Y. m' E" a
- ; u) b2 A6 k% {: y) }
- uint8_t i;
! c+ k* b! I7 Z% x$ e) h. v, ^
$ k# E' u4 g! f
- U2 D" O, s5 q6 P6 V
: G4 q4 e/ Z9 [. M3 X- Q8 v6 j- //NSS = 0;. H/ v3 m5 h- X0 n: H: q% C
- / I7 g8 I% D5 b: q% D' c
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );
% {, f$ m: q9 v C$ A- H7 l4 u9 o: d& t
1 B% e& i% q! C) c- 5 V: |; y O% Y1 f& H+ b' }- v
- 9 d& |" G% l5 _
- SpiInOut( addr | 0x80 );" G2 ~. w* c( \7 n
- 2 E5 _7 Z6 ^+ Y; Q) q) o2 W
$ [/ A" F+ {( \9 Y/ }4 i
9 v( s6 P, i! N6 ?' U- for( i = 0; i < size; i++ )2 F T: }. z- H, N' v' O
- $ \: _- C% s( O+ W8 a( `( R1 T- c
- {" o- k& j+ r( f7 m9 d1 e' _+ P
# o ?" \0 p% q N; q" a- SpiInOut( buffer<i> </i>);) B. w- r1 K' t- v
8 V: C" z5 p; X# i$ p0 `- }/ c9 r6 I! e: g4 G8 f# Z
- + _) N1 C1 X9 i6 L- V7 ]
' a. Z- u. @- ^% ^9 r- T5 M0 f- 0 b l. T+ o5 b! C% c8 ^. Y
- //NSS = 1;1 b2 w! M/ E. U+ I
- 3 G8 Z/ c9 g3 }- Q9 m
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );# R X: G+ y4 ^0 _+ P
. J6 `8 r0 }8 h* O: m( _- }
2 D( d2 N& ~1 m - , @8 T5 V9 ?' }% F5 x
- 4 V; }; S' b) S
! d2 L2 T3 e' V5 I+ l- void SX1276ReadBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )8 s1 x! U" _( ?4 O: N
: N* c7 X) m# t- {
0 W" y9 k' l- Y9 w3 ]
9 Q; ~. S9 M, B- uint8_t i;
- N V' n: [ c& f8 {7 f* T+ |+ A - 4 S% J3 y4 w8 F, o$ J
- * A- v W' K* d; z$ n
% Y6 `7 e6 z# o1 H( V* S- //NSS = 0;% p( i8 w, `- q! K
- 4 M# q) Y! q0 M
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );
! m5 ^: |. ?( L
5 G. }4 J0 l1 v% P$ u, y- " k3 ^# T) R" X5 n' u& h
- . b2 t$ I, B! D
- SpiInOut( addr & 0x7F );
8 y; u& e3 G8 ?/ O0 Y8 \8 @) T
; y K( D/ k5 Q }2 Z
! r2 J9 d$ k, z7 ^- ( z& Y/ n; C: N# y" m
- for( i = 0; i < size; i++ ). E" t6 |+ T& O1 K. D/ B
- * [5 K& e4 b- B9 i' O4 J# T
- {
8 B* {, U! c% Z+ f - 2 }9 l$ I9 T( w: m0 v
- buffer = SpiInOut( 0 );! C& c% d* e( Z& ^' W
6 P7 j9 }3 T) \- }
7 O( B C8 z( L- D, y
" P$ C z, d5 _8 [1 {# W/ M
m3 j# ?+ }; D a: B. ]
( [ M z( I J& C4 a- //NSS = 1;
5 ^% F" Y! c3 C# T& P - 8 Z+ J& S* W7 k* d' q& R& Y; ]
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );5 I4 A3 M, q- {. X. t. k5 Y
- 9 y- }1 a! I4 `/ g5 q
- }& Z9 S* ^& t8 R: X
- 6 ?: X: O: B# l+ R `( \& V+ t6 w
8 N3 Z! R4 p% W; H* Q
' @3 B# C( S7 _- void SX1276WriteFifo( uint8_t *buffer,uint8_t size )! y) z+ U- H9 n9 l$ f0 u
- 0 E0 e; s- l8 K0 ]3 ~; g5 ~0 V% A
- {9 q# w' }7 R$ O& k2 L M; |- h. g
- 7 K! }# H2 q& N- b- v/ ?4 U
- SX1276WriteBuffer( 0, buffer, size );
2 l8 b0 t/ Y8 ?& u% c" u" X2 ]/ e - % J. e3 D6 |, |6 J# G- J
- }. L }/ o9 e- a5 b
. r4 o' s- ^; S* f( A( f |" A- ) {6 V# b$ G. ]7 D# y
( T: [* |% e3 q- d; L% j4 W- void SX1276ReadFifo( uint8_t *buffer,uint8_t size )
& C' ~% t& D! X' |( U/ e* } - & J( Z3 ?+ ~3 Y
- {& H) a; c. k& c) y7 K
+ F3 y9 K1 M- ], c' Y: E1 r- SX1276ReadBuffer( 0, buffer, size );
! r5 N* G% \7 k. Y( v
* m6 ~) k& E: |& A% a" Z$ _* X- }
复制代码
, I6 V3 m+ _; z3 Z# K0 O0 ~数字I/O接口函数:2 x0 L' T( b% j) }' T$ H4 x3 s2 ?
/ l$ b2 D1 o% K, Y% r U中断函数
8 k& V j; c: s! c
) E% n( E; S" k# S+ z数字IO管脚功能配置8 C8 z* c# a+ e7 Q
外部中断上升沿触发,下拉. F0 B4 W! J0 j; S: t" `$ \
% G0 l+ [3 [3 ?) T3 K0 C- w
1278扩频模块参数修改4 @& \7 }# I& K" W' \
在文件sx1276-LoRa.c中,由该结构体初始化模块参数
D3 w' \" f5 E, l' d1 k- typedef struct sLoRaSettings, K" V, n0 r+ o7 {; ^
& [9 t& p) a" z [- {
& N) M6 Z! O1 X4 i, v6 y
! O2 @# \: e* z4 i) m- uint32_t RFFrequency;
0 e8 S* `2 ^) K) g
3 I9 i* t, P. r3 e) W- int8_t Power;
6 v- d0 b1 H7 J& W% h - ' n6 j8 R4 o- r" j
- uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,. Y. M0 ?: Y" K) b' O
- 2 S% y8 V3 E4 _# {
- // 5: 41.6 kHz, 6: 62.5 kHz, 7:125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] % E/ |1 I7 b2 Z- r, o+ P6 I8 G
- + y; q6 x& i" [
- uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12:4096 chips]
+ h( X1 @6 D5 g! A5 j& K$ a2 o' [8 { - ; _+ `+ d" P2 @) S) R( ]1 W/ x
- uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]! k7 T3 T- i# Y1 ^
: t. J$ C8 e. n- bool CrcOn; // [0: OFF, 1: ON]; {: }) C8 B# f% {3 j& b; |7 X
- - z. ?/ u; t3 W/ ]+ V$ u$ e$ \
- bool ImplicitHeaderOn; // [0: OFF, 1: ON]
& ~. G& u$ A t- p1 u+ U
7 ]$ c" g% z" Y# a6 K( p2 h- bool RxSingleOn; // [0: Continuous, 1 Single]
2 J3 I0 @. j' ^( C1 _+ W
% q6 o% v% q, c' X- bool FreqHopOn; // [0: OFF, 1: ON]. \2 Q4 p: {1 Z) N0 I- ]- R! P. b0 ~2 z
' i7 d9 n! h" g* O& q- uint8_t HopPeriod; // Hops every frequency hopping period symbols
" ]$ V2 u! j3 y. }" U1 [4 X
- R4 k+ D+ }3 ?0 S- uint32_t TxPacketTimeout;
4 c R5 C" e9 w$ y# Q
7 ~. `# R5 n6 p- uint32_t RxPacketTimeout;
( q4 _8 K# O' n! m- X - # b/ r X$ P n$ R" F( X) a
- uint8_t PayloadLength;) G: f/ c- Q% h/ b, O5 R9 g4 M8 T
- ) Y% [( }* q& r9 N. `
- }tLoRaSettings;& v+ i; l) B, d7 B8 l2 S* a9 o1 N
- . ~# B( z' F- _6 i5 U
; E; Z, f" z: t0 E' b
复制代码
2 T2 {% t/ L) x例:
$ ]! G8 A1 T) r( E% E6 r4 Q
7 `0 x2 U7 ~0 m4 X- tLoRaSettings LoRaSettings =
. @, Y o: F! D
, C# `5 \6 q8 V- ?- {
2 M/ I* {' R( X# T5 G, s - : m$ d* j) F" n- M5 ] q
- 433000000, // RFFrequency
4 x" _) f1 Y6 P$ X8 v5 Q - ' ^9 @* X" K& x
- 20, // Power7 g9 ?) E# x% J) k9 V& o
% L5 ~5 H( d! K) ~7 {- 9, // SignalBw [0: 7.8kHz, 1: 10.4kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
# \9 B2 y2 f9 y- d: ]
d0 X- ? x, g9 S* y- // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other:Reserved]
) Q+ r* b# Z i* ?
" N- Z! R* G9 e) u% l4 q- 7, // SpreadingFactor [6: 64, 7:128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]$ B# F) p& ~9 W. S2 @) b
- : k. c: S3 H3 j0 V2 k
- 2, // ErrorCoding[1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
3 P6 U" S9 K! y; c1 Q
4 ^/ E6 V$ N. R8 Y9 |& n- true, // CrcOn [0:OFF, 1: ON]& ~ @/ z; a) ?$ Y% @- s( Z$ H
- 5 s: u& l( f- G: S. o* B0 A# `
- false, // ImplicitHeaderOn [0: OFF, 1: ON]6 G8 t4 E4 \* d, ?
- 9 U5 R# u6 \# i' o" }0 t
- 1, // RxSingleOn[0: Continuous, 1 Single]6 ]2 j. U) c1 a2 x
- 8 C* v: s+ {4 q2 I. M; l
- 0, // FreqHopOn [0:OFF, 1: ON]
9 o" |4 H% l' |4 V, @) j - 2 Y$ J/ s3 w# } ] t" }
- 4, // HopPeriodHops every frequency hopping period symbols
, O) D4 G% F# c6 i+ t) k8 G0 [
$ Z; G0 M& q. O8 B/ S% s+ o- 300, // TxPacketTimeout
8 n; ~! I! `; I; b# E. b
* ?6 }! t. ?4 c' x& ]# D( M- 300, //RxPacketTimeout
9 t, S# v7 `+ \4 P# y - % t# W' h* m8 Q9 G, ]2 d) b
- 128, //PayloadLength (used for implicit header mode)
" I$ e4 a/ I& p1 z% P" h - ' j; c4 ~. y, O5 t* O/ g, M: K
- };
复制代码
. d+ p& b. W0 V. R2 E0 \( Y/ h
& o Y+ @6 s+ o \6 f% E
" [3 {4 J. k$ r- P( K4 h+ l
Y8 K$ [9 o% d5 D7 p# A$ B |