Sx1278LORA扩频模块基本参数:
1 m+ [$ {2 E! r* U( e0 `9 Y' s# d! X- }
& c' i* t' ^8 o- [' x: p$ e
工作频率 :137- 525 MHz
; G6 J, u1 j) o2 u; J
0 C/ m8 N# A1 p/ B扩散因子 :6 – 12
o0 m/ n' c( l" H. @8 o7 X7 g
- m0 K* s% A' I+ W4 s$ P' i带宽:7.8 - 500 kHz
' B! j, _# B5 m
! s# Y6 I- k) ?5 x有效比特率:018 - 37.5 kbps
) `1 }# H) n$ T! l8 ^# L3 T
8 |* G' b* e0 e+ P$ a9 h, p灵敏度:-111 到 -148 dBm! z& w& k: [- \9 i5 {5 \/ }7 d& f
4 n- ]" d$ f; G; M工作电压:2.0-3.6V' ]/ S0 h: M; G! S% l
+ I+ A3 q0 N" o$ @2 K( w4 f发射功率:+20dBm(100mW)% x5 O6 Y" m4 J# u$ \0 h
8 G6 J# R6 g" v
通讯距离:10km-15km(500bps)(无遮挡)
* `) k% D! L, e2 m8 U
7 u* a# P4 c \2 |6 g+ s$ f数据接口:SPI3 `* |% R" f* M, u
+ i% D: c1 H8 [# w0 I, F调制方式:LoRa/FSK/OOK
7 L# s0 t* m, R( M0 J0 ^( d* f9 c* E& V6 z; N2 Y
工作温度:-20- 85°C
( `. N6 o+ m3 e" S) |2 Q$ E( t( ]% n K$ a' `6 l+ E
以上部分技术参数名词解释:
7 k9 J ~% b7 k/ I9 X- |/ _
( {2 u' ] _4 z2 O0 U扩散因子:; @0 I( B0 S l+ m3 k0 E
: U$ d H- v% Q' F* s9 DLoRaTM 扩频调制是通过展现有效信息的每个位来进行通信的,这种扩频信息的发送速率需要参考符率,这种公称符率与芯片速率之间的比率就是扩散因子,展现了发送出去的符号总数每一位的信息
7 d* P7 M2 s, w& S) _6 h* B5 |
0 [0 g* l3 P, v信号带宽:
3 Q8 v7 M0 I, B' D3 Z, c( r0 c; Y$ B; `0 `
增大信号的带宽,可以使数据的有效率提高,即能使传输时间减少,不过会使灵敏度变小。 k' {, `# f; J% R
/ A9 G3 S" H# l. m+ S# ?8 ]0 A
调制方式:
1 i$ i# Y; x4 Z& ]: F/ ^- D, i7 H; j& o- w7 ?; ?, n- b
LoRaTM调质解调器使用的是扩频调制技术和向前纠错技术,它的无线通信链路比传统基于 FSK 或 OOK 调制器有更远传播范围和更加健壮。( A. ^( ]" {5 O H8 g
( e! ^4 N, ~4 |; l9 L* T+ J频率跳跃扩频技术(FHSS):
p; x! `- u# c6 m/ J4 x* r! r+ r6 f/ e1 n# h( K6 b3 V" H
FHSS方案的工作原理为:每个LoRaTM数据包的部分内容通过在微控制器MCU管理的频率查询表中选取的跳频信道进行发送。在预定的跳频周期结束之后,发射机和接收机切换到跳频预定义列表中的下一个信道,以便继续发送和接收数据包的下一部分内容。在任一信道内的驻留时间由FreqHoppingPeriod决定,他是符号长度的整数倍。
1 L$ k, f) X' T' Q+ {2 O2 `: E6 i: A' E! T/ M8 q6 K8 p
SX1276/77/78/79 基本区别:一张图说明:
* C i& G1 J9 I# t+ ~+ S( n3 j1 U9 _. |8 e3 t1 Y$ ^# ~5 q
5 `9 S. o. e' I3 _8 i; Q _& U; o$ J9 w2 ~: P3 x2 e+ X U1 E* e
j. S% B0 ^4 q* U9 M n
' `6 ]6 z6 M5 N! k
主要工作模式功耗参考表:一张表说明:
( k# L! @; m, n" D
: T3 C* E+ L' \% y2 g$ k. P4 o
# D; B, X8 H7 v A2 q) E* G- B' x w _, e( w. D2 d& V% h5 Z5 S
H5 T$ _2 C% c8 S) I
LORA调制模式下的运行方式: _; d+ [4 ^# V1 d3 q
LORA 调制模式可以通过设置寄存器 RegOpMode 的 LongRangeMode位来进行选择:% v, E: \) J- S& I* l* @+ X0 f: g
( E2 t0 b8 J% C/ Y- c
' N0 I4 W+ V) `1 w7 w6 B- O6 ~$ G- i7 f
LORA 调制解调器发送和接收工作流程:, q0 u2 y% a7 b
9 W/ A3 U3 z" y* M) K X7 s/ A+ \9 }7 r3 _$ t& f1 {) R( n5 u
数据发送流程:0 v5 k1 I* M7 L# z* s" h8 `8 o
在发送模式下,在需要发送数据时才开启RF,PLL,和 PA 模块,这样可以减小功耗;- H% r V% V1 F( t/ m. K1 v& R
$ t& q: n1 H3 ~+ U- c/ Z6 W注意事项:% W+ R. X9 l E- o3 v
# q2 M4 |- d, }* R- V+ z
1、 静态寄存器只有在休眠模式、待机模式和 FSTX 模式下才能被使用。
) a$ g' a2 F% l9 H* U1 T5 h8 @$ }; ]0 `6 Y- P2 g, m
2、 LORA 调制的 FIFO 只有在待机模式下才能被写满。
0 k/ N5 T. N, u
+ o5 g; L( }. H k: _& m' K& j3、 数据是在发送 TX 模式请求后才发送
* W# D$ e& a2 e3 R& D# A" o& Z* e8 O. q; \) w
4、 数据发送结束后,TxDone 中断发出,设备进入待机模式& G, W- Y H4 y
4 w: g( D6 Z0 g, G
5、 继之前的数据传输后,无线设备可以通过手动设置成休眠模式或是写入一些# d( ?2 S6 e# }3 i" V6 _) ^
数据到 FIFO 为下次发送做准备6 d% B& z9 w% o7 h( n) m: s
, ]8 e& ^2 w1 @1 G, R6、 LoRaTM 发送数据在 FIFO 填充
+ @; `; o, E: W; f: `- q( D. \ o, n+ y2 i
数据接收流程:$ c- ?' v* V5 X# c
注意事项:: T0 m% e: k1 E( I1 l* x* D
- S0 Z7 |# L5 f) \; w
- h2 Q; z4 ]2 q, H7 X' }4 n
& w. d: z! M1 t2 R. x* C% Y. R, G# S
+ B9 i- R3 j3 @: `' r3 NLORA接收模式工作在两种不同的模式
" C7 U+ U$ u1 X& e* V1. 单个接收模式7 ?/ Z+ o- z$ ?4 A$ l# B
在这种模式下,调制解调器会在一个给定的时间窗口检测数据包的序文,如果在最后一个时间窗口都没有找到一个序文,那么芯片本身就会产生一个RxTimenout 中断然后回到待机模式。
5 K9 w9 Z9 J: P8 p8 X; D; P- y& ^, H' K, o% O% D& i
2.连续接收模式
) g2 [$ H- v. d p在连续接收模式下,调制解调器会一直扫描信道而获取一个有效的序文数据包,调制解调器会一直检测和追踪信道上的序文,直到有效数据包被接收,然后继续等待下一个序文如果序文长度超过了寄存器RegPreambleMsb 和 RegPreambleLsb 中设置的预期值,那么这个序文数据包就会被抛弃,然后重新开始序文的搜索,然而,这种情况不会产生中断标志位。与单个接收模式不同,连续接收模式下,当产生超时中断时,设备不会进入待机模式。9 u/ e q# e: L3 Y1 i" }
5 v- R2 Z- v2 }1 \) ^) \CAD(channel activity detection):
+ J" R" K% S! N$ {8 o4 p4 K扩频技术的使用不能解决信道是否被其他lora 信号占用的问题,RSSI 也无法解决这个问题,为此,CAD 就是用于解决检测信道是是否有其他 LORA 信号问题工作模式。
# M3 Z" q: M6 h( L0 {
; u7 i: G( A9 z9 ^" F; r, }$ f0 H) M* s数字 IO 管脚映射:; ?; l9 N( C& K+ }# P" ^2 ^
在 LORA 模式下有 6 个通用 IO 管脚,下表给出了这六个 IO 管脚的详细信息(跟寄存器RegDioMapping1 和寄存器 RegDioMapping2 的配置有很大关系)3 Q: O& h3 W+ I/ \- D- A. ]3 n K; h8 j
9 X9 {5 O" D7 o$ _4 l
: Q0 N" y" m) o3 Z9 B. Q9 y
0 J; C; |1 k1 `6 D! [! nSTM32Cube软件配置:0 X# X- u9 l$ j$ I$ Y
SPI接口配置:' S p& \# K& _6 u
原理图中使用到的SPI接口为SPI1 J
8 W; c/ w2 L Q9 a
0 F, H- l! O ^( m7 T2 l/ q) U P配置为全双工主模式。在参数配置中,注意一下几点:
6 a' H. w+ C$ n/ W: z, Z! t' Q4 _7 H" c& ]+ K/ y* t3 E3 R1 D$ {7 F
数字IO管脚配置:
- F3 G$ P6 ]% S* U1 Y输入模式3 |: A. D" B8 {" a7 _% q
# d# Z, Z* j6 H
4 o) j% J9 a5 o( }7 `$ B, A1 P# P# q
5 s2 D( E- ~* Q% }) `# j0 A! e
生成工程代码:# U# P* O6 y& m% f. v$ V3 ~7 B
SPI的主要接口函数为:' c& `0 Y+ X" `+ H
) ~! w3 k4 z# N
7 S, {1 z" F' O" B9 w( L o N
& p! K. i! k* {7 q* m1 \1278编程:0 i$ K9 K$ O3 E: m1 h; L
1278复位步骤:1 `$ F1 ]% l6 ^2 ?) E, N3 E
NRST = Low 低电平大于100uS, 然后NRST= High 高电平大于5mS 即可完成手动复位。* q5 ~4 F2 [* y: ], R" A8 P$ i
+ n1 }; F* x1 V6 LSPI接口说明:+ T' F! q1 J9 N2 [' }8 t, o
SPI第一个数据字节为地址域,bit7 为读写控制位, “1” 表示写, “0” 表示读;bit(6-0)对应当前操作的寄存器地址。 在连续读写操作模式时, 寄存器会自动加“1” ,直到NSS脚被拉高;特别注意: FIFO操作时, 寄存器地址不会自动增加, 而是FIFO内的缓存地址。 寄存器的详细说明请参考芯片数据手册的“寄存器说明章节” 。' O7 D e; p! k8 A1 Z7 v9 N& n
: j% N7 ?6 c3 n7 ?7 u& W$ p W
SPI接口C程序:
. B: n. y0 p2 b6 W) H0 D6 c7 v9 F在sx1276-Hal.c和spi.c中定义: J7 @! [7 J" x6 E0 `3 e/ e: V' b
通讯接口函数使用HAL库中的:HAL_SPI_TransmitReceive(), g8 l" \4 N( D
! R! g6 u7 j3 n- uint8_t SpiInOut( uint8_t outData )
: x. _0 z4 q5 C. N- ]' C - 0 L3 S: u9 N0 q8 {, i
- {- T! H/ R% v7 p0 h* j$ ~- V1 j
5 y4 u6 r2 u, p+ s- uint8_tretemp;
, l# c3 Q: M2 X: l# n' X! w
! S- h Q. y% ?
; ?! y( D/ b$ i! \7 i f/ l- T/ @- @ d: x2 j- r8 Y
- HAL_SPI_TransmitReceive(&hspi1,&outData,&retemp,1,1000);. V# J7 r! z$ o2 I% P5 b. ^3 e
4 y6 }1 |' Y7 r" r/ I- : x/ ?' y. m. d3 D
- ! g6 ^4 T( j% d3 i7 ^7 L) x
- returnretemp;1 |! D8 p: ?2 }' Y
7 a6 X% [. l0 n ~6 l& A
+ Y) `6 M8 _, B
4 a2 z; F9 D1 h4 a$ [- }
复制代码 1 p2 M) k. s) ~/ f
SPI通讯接口函数
3 t) c* v: U7 Z( x) M0 J* y# w$ X& |& w1 L+ z, V
3 {9 U# G+ {4 _: t: x+ j& V- void SX1276Write( uint8_t addr, uint8_tdata )
$ X4 M, B6 ^ e - ' X7 j# i [4 T! m# n! }% o
- {
* i% R# y. Q4 C$ d
) M. K0 D2 s0 ?& ~- SX1276WriteBuffer( addr, &data, 1 );
, f7 T- v& r7 U0 W - 3 w& h% E9 [! l, {
- }
: ^& y: [ h& k8 L$ Q/ ?8 p. Q
2 [) u6 g7 m3 ^ |* u% T. w
8 ?3 n s) G# j. J- V/ [
: I# m; I0 n* k. ?- void SX1276Read( uint8_t addr, uint8_t*data )
! y8 Y' G7 R# E5 \4 E
; r, x* K/ r& H& w, Q; ?5 J e- J- {; z, }& a# r2 x& h" ^3 J1 R! b
- - J8 s. w3 I0 t1 ?
- SX1276ReadBuffer( addr, data, 1 );: Y5 ^% K, C0 p# G7 p
$ u3 m* ^ T: F* w _- }
& ~; r- r. Q& D, j7 d- z - . _" v+ X7 m' c/ e# X8 b
+ W L0 V" X: \
! p7 J. \; f/ U9 s5 V* M7 w- void SX1276WriteBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )
' ^( Y, H7 A0 f2 ]" B
B# R! b) x2 O6 F# `8 v- {
9 |+ H* X9 |) N9 p( ] - 2 }; u/ T& N! ]( s( u( G0 A
- uint8_t i;
$ o% {" @% A; [9 E4 L( g
W8 R" h( R G( ?9 C* Z% l8 j- : X. ~) \( W( o, k4 a
- ) A! K- L) O$ I5 d3 ]3 [
- //NSS = 0;3 q0 h! C! T" j2 F9 B7 F
- 0 a( a% N8 c4 m
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );$ [; d& P2 Y1 h. Y0 T$ }5 S
3 f* n2 `3 q) r% H& R1 `- & U( [0 V; w: O- ]( G: ?" l
$ y5 [2 @* C. f$ {8 M! Q- SpiInOut( addr | 0x80 );0 x3 c9 @6 R( P. f b
- 8 t. ^6 [( v5 y
- 5 t8 z' H! J. t1 x. _9 D
g" k9 T9 G G( `- for( i = 0; i < size; i++ )$ I" ~1 q, D }* j' L- c
4 j1 }/ } p" A0 r* _- {
9 W' P# e& d5 n1 @; k
8 ^& B9 t" W: q" v- SpiInOut( buffer<i> </i>);6 `& F: G8 C b
- 0 H# r2 S, u6 P/ g7 z' t$ O
- }
9 Q& u( x Z, t/ Z$ ]" y+ E
+ p) t' j% j* t* g. `; w; d- : A0 X, h/ l* H& Y
- 4 B# Z) d* W/ U+ D, n/ i6 @
- //NSS = 1;
* A5 e5 ]1 ^ ^% K4 p& ? - J( P1 R( M; `8 R/ ]( x7 r6 M3 |
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );% O8 Y- t5 C3 H+ p$ z V& W
- G0 _; m V# h% x& ~+ C- } y8 P! j: L- Y" O% G, Q& K' e
- * ^8 X2 ?8 D; O
- $ n, X! J$ L5 h9 g+ u% {! o
3 m% Q, u. c; j% y& C5 e- void SX1276ReadBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )$ B, ~6 T1 W' y+ M" u
- 6 l) j. s6 H8 V: { n8 J
- {
" f0 w8 R3 o2 l4 r& Z1 A, X# {) o
4 t5 v; R2 O/ G9 {- uint8_t i;
- A4 K P( a# H7 W - . b5 j9 C5 `. I- A' F. r& I. Z
$ z3 z. u( f" W( E5 l; b7 v9 R- 9 a4 u/ [+ d! ^" ]
- //NSS = 0;/ T: ^9 A5 r: x5 V5 P, V c6 }' e
- 0 p. e# k$ |0 `% E, `
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );" M! ]0 i: J( p( ` b5 O: Y; G
/ y% j9 f8 L/ v% @- " u/ D* t- Z. r& ]4 t d
- ' s( w, x) S8 w$ ]" b3 y+ _9 O
- SpiInOut( addr & 0x7F );0 P# c" C. o4 Q( o% M) o) `. J
' T5 i) X! x0 K- ) D x! j- p- k
- * f& s7 k& l; {' s' N# z
- for( i = 0; i < size; i++ ): g; f" x. y, Z6 ~1 x
^; u5 V2 a' K0 L3 n! H0 ]& ^- {$ f, j% a% F* ~' E) Z/ t
2 c; H# y2 M g- buffer = SpiInOut( 0 );7 i6 m7 p; p! j5 b1 p
- * C3 N7 I7 C w; I' W, ^0 V
- }' F0 V/ }1 v: v/ G( t
' |4 W: k$ q* H h& S( A- 4 Z7 f$ K# R7 ?1 ]3 Y# X/ }1 `
; Y/ z! n' d# y0 c. y C- Z- //NSS = 1;
+ @ A9 q- S# H: x1 c: M
j9 |' a! Y/ P$ d4 a6 i- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );) X3 |# K; O- o9 h9 A
- # [; t( L& G L8 Y
- }
( |2 g8 b8 O! u! Y - " L- X! x( v* D" z. e6 ?
- & [7 y& S9 Y' N
" P# e+ ?, `$ A" Y- void SX1276WriteFifo( uint8_t *buffer,uint8_t size )
+ u% `: L2 H" w) O9 l, w
% _ }# u2 z, U0 Z$ t5 W- {
6 v3 U d. L! z7 \
& d+ q3 u2 z- ]9 X8 o4 S5 l6 _- SX1276WriteBuffer( 0, buffer, size );
8 b8 s5 S" L. E9 H/ d3 b
% c+ @1 q b# I: U- y! W- }" G% T h5 ~5 Y9 F
- 2 L+ J' U8 G7 Y" B& ~
3 Q% C, ?# x U/ w" M( |9 _- 6 C# z; g/ l' {8 S% k. B* D* \
- void SX1276ReadFifo( uint8_t *buffer,uint8_t size )) }( ?1 C& N) X5 X. R
- ! O9 X% p* j) n6 c/ d0 F) H4 z+ [
- {
* U1 a- f1 e. s8 @! t+ [ - ' t( j2 y5 r+ h% |8 u% g
- SX1276ReadBuffer( 0, buffer, size );
5 Y5 F9 W0 ]) k( L4 X - 6 m5 V2 J: J) [% L
- }
复制代码 1 ]$ J# W5 r& P0 x! n; @
数字I/O接口函数:0 @. Q9 C, R4 ^ [& J
) Y& \% P/ V) B5 B; L& k/ N中断函数
9 Z4 r! `: F$ A! N% P9 M1 n
9 E2 M \3 o1 b% V数字IO管脚功能配置- V; U: n) I! Z8 K; Z9 u6 H
外部中断上升沿触发,下拉
! C: r5 N6 B: H, d& c. s6 l* g) a% v0 \
1278扩频模块参数修改7 U) g* }: e9 {
在文件sx1276-LoRa.c中,由该结构体初始化模块参数
& m$ A, Y7 ~9 B( a6 s0 V- typedef struct sLoRaSettings
6 A$ g" O6 V* `* D- A- Z% S
: W, J0 R9 K, ]3 s" {3 i7 W8 }, H- {
- D* L3 G/ m& B4 e4 Y3 U - . p/ u5 K9 A, z+ Z; H+ Q
- uint32_t RFFrequency;; F9 h& P. D, i, s, D; z! L& E6 |
- ! O: {/ u: c% Y( h* K0 n9 _ u
- int8_t Power;
9 l$ p ]" x' i- @, P6 `) Q6 u - ( e- i6 _, r$ }% ~, c$ }# E
- uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,4 D& z* j: S; G3 g$ ]0 H& V
- 8 W& r- d. V* w0 |0 A/ H+ `" W
- // 5: 41.6 kHz, 6: 62.5 kHz, 7:125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] 1 K6 |: t3 [; X; T
- 5 b( j6 a' D; v! t& j5 _
- uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12:4096 chips]
0 U7 G5 ~3 Q$ P2 w1 N - 1 L. o) H, ~3 k8 I8 R2 R
- uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]1 q" E' Z& a5 K% p' Q! f$ E7 n
# K9 ~% q0 w) w8 A9 t3 \6 y- s- bool CrcOn; // [0: OFF, 1: ON]5 j% }0 ]) s' [ b% N) ~: v" i m
0 u$ T. g. o9 W: O- bool ImplicitHeaderOn; // [0: OFF, 1: ON]
1 y9 _1 ~; g& R4 D+ T( y3 m6 T1 d
2 v J/ Q% {' P- bool RxSingleOn; // [0: Continuous, 1 Single]
7 ?: T3 T" j3 G# z
% W- r7 z: N' O& Y; U- bool FreqHopOn; // [0: OFF, 1: ON]
& {2 P; u' B; T- ]: k; O) u
/ Z1 u5 J. V5 ~- B& J; x3 F- uint8_t HopPeriod; // Hops every frequency hopping period symbols& a2 g5 x$ D) Y* s7 f! D ?$ f
4 R) Q# @0 R2 z- Q8 T- uint32_t TxPacketTimeout;) _! T4 m# [2 V2 N
& S9 F6 @9 k. V, }- uint32_t RxPacketTimeout;6 ?. A3 h: y% o6 j; B" n6 ? }
& u0 Q v! n6 x5 b- uint8_t PayloadLength;
4 W% b% q" U; h5 [ _% W
' A. j! F( `( Q( k9 c- }tLoRaSettings;
Q. h2 ?$ J0 }: N$ g - ' K1 h( Q& m6 p% f# b; s) Z+ A2 r
- - R. w6 b a+ k' Y, W$ N7 e
复制代码 C! n% G/ h0 T- }+ P% t6 e& e* b0 j
例:
2 G5 N1 X- t9 S' G- f9 u
9 t1 r; `* q( h+ F1 O- n1 P- tLoRaSettings LoRaSettings =
8 a% Y$ U9 P& n - 1 z$ k/ {2 T" Z" ?0 j+ P2 u
- {
$ O+ `5 w8 g3 ^+ d8 A - + _0 P) p4 o! p. T8 H/ s
- 433000000, // RFFrequency
# i$ B# R6 B. I1 \ - 4 [+ Y$ u5 Z' V, f* S6 ]
- 20, // Power( k7 C! E: K7 q6 F
- % f: @8 ]; ^3 \: ]6 ]- O
- 9, // SignalBw [0: 7.8kHz, 1: 10.4kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,' b, @- e# j! q7 G8 }' S' B2 @* U
2 u$ c D, ~1 p2 g1 t Y- \- // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other:Reserved]
$ Z+ B0 k3 {3 f
; C2 Y, g1 M0 w& d- {- 7, // SpreadingFactor [6: 64, 7:128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
' z; `4 U% h* h% G% W - # g. @+ B0 z9 W; |: N
- 2, // ErrorCoding[1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
9 G- f' a7 D6 @7 Q( A7 c5 K
$ @: `+ u V2 A5 j! \6 k- true, // CrcOn [0:OFF, 1: ON]
% d$ R+ x( t n6 s( O% I F/ ` - 5 W6 T" L5 z! ~0 i% o- L
- false, // ImplicitHeaderOn [0: OFF, 1: ON]
; X2 \7 _$ ^" V. [& t% U: S
! f5 h3 L! \3 {% w8 i& E- 1, // RxSingleOn[0: Continuous, 1 Single]- v j. ^( N ]! Z; _9 B
- , ^- Z/ U+ g( V3 X2 v/ b
- 0, // FreqHopOn [0:OFF, 1: ON]
1 N+ w, v" F& O' ^ - 3 u* r4 s7 Z1 ?( [1 q
- 4, // HopPeriodHops every frequency hopping period symbols/ S) `3 F- I; r* `" V
- 5 w9 B" e7 _. S
- 300, // TxPacketTimeout7 t8 ^+ a d; e
- 2 \1 x8 G" G+ E5 G# `' |5 f
- 300, //RxPacketTimeout
2 k, D' H( o; z2 e% g N* K& N - ' K) x+ Z: t8 q( f' B4 r
- 128, //PayloadLength (used for implicit header mode)
3 k0 y' y% @! A- G
+ P8 M5 d7 O4 X8 a: A P& C- };
复制代码 * \" g9 e. V& X- H; a& E
6 L3 H4 z( B4 w, s' F- |# K( T
; F& u: ]- i1 l
0 G5 @3 Q2 ]# V5 k% @
|