Sx1278LORA扩频模块基本参数:
0 H! _0 f, J# v7 n- \$ Y+ X% N A, A6 S! n, R7 ]
- c+ [$ m, n p* I$ f' D T工作频率 :137- 525 MHz
1 I$ t5 l+ @% `0 |& |& m5 b- F( h) D/ Y* {( |
扩散因子 :6 – 120 x" p: c* B- b! H
9 Y' P2 [' ?. h1 ], w, L带宽:7.8 - 500 kHz
( D. r: j4 C) m2 ^( U* i$ v6 {1 w5 ^# [
有效比特率:018 - 37.5 kbps
7 S" w: B/ ]# p# d
* |5 f. ^* a |0 I4 y. y灵敏度:-111 到 -148 dBm
" `1 `6 l+ A( \" I6 w Y2 _" p$ b6 d; N2 Q
工作电压:2.0-3.6V
3 O2 M! M: f) e; B- D" m! r$ z, b; |7 o: a
发射功率:+20dBm(100mW)
/ Q6 `7 V2 |5 T6 b6 X$ m4 _
8 {' `; Z5 p& a: |通讯距离:10km-15km(500bps)(无遮挡)
! c) C5 o# Q5 ~( {1 u+ f- Z) g, `5 n" N' n: W' {9 D, K
数据接口:SPI; O$ v7 k/ ^- E; w' f* j2 T
( N- p, S D- K b调制方式:LoRa/FSK/OOK4 c2 U. `9 q% x. V- I( ~
6 z) ~0 U. ~: [# k; B工作温度:-20- 85°C/ P1 b8 Q6 Y7 W5 X6 m* s1 Q
* \' j9 _2 J/ C0 L9 F3 C! Z5 n# p以上部分技术参数名词解释:1 B( g& e2 p* a2 U/ w
6 d5 Q; }4 e4 f, n6 C
扩散因子: y$ @$ m- e8 z! Q3 @$ C
# |* f* @2 A1 K% xLoRaTM 扩频调制是通过展现有效信息的每个位来进行通信的,这种扩频信息的发送速率需要参考符率,这种公称符率与芯片速率之间的比率就是扩散因子,展现了发送出去的符号总数每一位的信息! H- s1 s, p+ h8 J& w8 p- Q4 `
4 {# a( M6 D' y
信号带宽:- D0 ~7 u) O( `6 U0 H( P( \: P
& [- h3 z& e. i: t增大信号的带宽,可以使数据的有效率提高,即能使传输时间减少,不过会使灵敏度变小。
" u1 F6 v' K: b6 z7 t- T
! ?" V H e2 F) e! m7 E调制方式:
5 Z6 [, n2 v- n# c; R
# v6 E) D+ D3 S% uLoRaTM调质解调器使用的是扩频调制技术和向前纠错技术,它的无线通信链路比传统基于 FSK 或 OOK 调制器有更远传播范围和更加健壮。$ g0 t# M% `5 Q
2 C, B- w; C2 @: Z( X! [( ]
频率跳跃扩频技术(FHSS):, T% {, p- Y/ D7 I$ p* ]; W# u
$ S+ U) |3 C; b' Y. n! R
FHSS方案的工作原理为:每个LoRaTM数据包的部分内容通过在微控制器MCU管理的频率查询表中选取的跳频信道进行发送。在预定的跳频周期结束之后,发射机和接收机切换到跳频预定义列表中的下一个信道,以便继续发送和接收数据包的下一部分内容。在任一信道内的驻留时间由FreqHoppingPeriod决定,他是符号长度的整数倍。5 X z- k: ]% I" |2 k
O5 X) z$ M9 X1 }0 n6 f3 B
SX1276/77/78/79 基本区别:一张图说明:
* P$ T* W' O7 p0 U) t. R+ W; h ?; t8 [, s4 U
/ D8 W& j8 w* |/ a3 |- O
i& n& ^, w+ e* d) V# a/ q) m3 d2 H
: x7 H' M# {: B+ d主要工作模式功耗参考表:一张表说明:
- N/ ?5 U0 v: S2 C, p. K
2 J$ V4 B# a3 s4 P6 F9 k/ @4 Z8 T9 u4 \/ s. D/ Z7 c
- c- b/ Z7 [6 ]1 H% a
( Z8 b S" ]) o0 X. b6 C1 t
LORA调制模式下的运行方式:5 n* s7 w3 Y; u' M% @( D& l
LORA 调制模式可以通过设置寄存器 RegOpMode 的 LongRangeMode位来进行选择:
! N( U, h" h6 b! \3 ^' B5 e) s; W( n
5 H4 K3 R( w( s( ? q
# o9 x0 w/ S+ t1 Q; P8 `6 |% yLORA 调制解调器发送和接收工作流程:& ^- H9 C0 ~* v: I! `* x" b7 j
, v h+ _) R* K" Y% D% j( Y
/ E1 O3 ~3 f% S数据发送流程:3 ?9 C$ F! U5 }
在发送模式下,在需要发送数据时才开启RF,PLL,和 PA 模块,这样可以减小功耗;
/ v- @ D7 }1 I+ H U$ j% f4 i. M! v* V# X1 W- y& N" ?
注意事项:
- r) F6 h: `. e9 ]3 g7 [) I5 B/ k% u! [6 c) ? U
1、 静态寄存器只有在休眠模式、待机模式和 FSTX 模式下才能被使用。
) A: r( W7 N7 X
4 x3 D- P' f1 I% H6 G+ g/ T+ a2、 LORA 调制的 FIFO 只有在待机模式下才能被写满。. z* i; i" F. \% [
2 |9 T' i7 J, J- v. {: U# o
3、 数据是在发送 TX 模式请求后才发送
& M; v2 u; o) A) e) H
7 e# o4 P f/ Y9 p/ U0 p3 I9 N4、 数据发送结束后,TxDone 中断发出,设备进入待机模式 T+ B& X+ r- `4 R6 {' b
' I$ y: I5 S* v4 a& v
5、 继之前的数据传输后,无线设备可以通过手动设置成休眠模式或是写入一些
& \$ J, p; L4 w5 k* V; f9 f数据到 FIFO 为下次发送做准备# x; j' q7 ]( ~* r5 Q4 P) i8 f; d
* p/ I, z! e# l K) B+ O
6、 LoRaTM 发送数据在 FIFO 填充# R1 G& {/ g9 Z) K% g& v0 X
$ R- x X9 E5 n' n: M数据接收流程:# k! _7 k. a7 u& h m- b; N
注意事项:: y- D# O7 k9 m0 n
# ~ ~4 p |7 {8 I8 R% c. N, B; l0 Q2 C; }" {9 e4 i* ]
1 n) [1 t, o9 C0 w+ h0 W
. F O, `3 i+ |7 M3 O
{- c7 q8 _4 R. ?0 f9 D% oLORA接收模式工作在两种不同的模式& O, O& c. U- T7 V, k* l8 t X
1. 单个接收模式
& ]- z7 [% e1 T0 J在这种模式下,调制解调器会在一个给定的时间窗口检测数据包的序文,如果在最后一个时间窗口都没有找到一个序文,那么芯片本身就会产生一个RxTimenout 中断然后回到待机模式。3 l. p" w/ m! h" B& y/ u) r+ P7 U
z/ p6 R; b, ]! D3 l. ]6 e
2.连续接收模式
- r4 k3 K3 `+ w在连续接收模式下,调制解调器会一直扫描信道而获取一个有效的序文数据包,调制解调器会一直检测和追踪信道上的序文,直到有效数据包被接收,然后继续等待下一个序文如果序文长度超过了寄存器RegPreambleMsb 和 RegPreambleLsb 中设置的预期值,那么这个序文数据包就会被抛弃,然后重新开始序文的搜索,然而,这种情况不会产生中断标志位。与单个接收模式不同,连续接收模式下,当产生超时中断时,设备不会进入待机模式。- B; C* r6 I6 \, k G
U3 }' m( Y8 v k7 n9 v u
CAD(channel activity detection):
! U7 _% n# I9 s4 V8 c$ \! h" c扩频技术的使用不能解决信道是否被其他lora 信号占用的问题,RSSI 也无法解决这个问题,为此,CAD 就是用于解决检测信道是是否有其他 LORA 信号问题工作模式。7 N2 u% p! W+ i8 \
! G# |' N- Q# n数字 IO 管脚映射:
! }, D8 [2 m( b& X( _9 M2 N在 LORA 模式下有 6 个通用 IO 管脚,下表给出了这六个 IO 管脚的详细信息(跟寄存器RegDioMapping1 和寄存器 RegDioMapping2 的配置有很大关系)) V: r v, S u' ?0 ?* W2 b+ g, @
: ^) @" M' U% ^% _
) J9 A* ]6 \/ q3 h
" h% j; X1 J, Q; d( ], y8 p/ oSTM32Cube软件配置:
/ T7 `$ I! n& I. \SPI接口配置:7 M' X0 H. A6 p1 I6 m: g
原理图中使用到的SPI接口为SPI1 J
8 _7 d! o+ w6 |5 E( x( N; K8 ^% C8 H) I; N) L
配置为全双工主模式。在参数配置中,注意一下几点:
$ W; L# l1 `# x" H. a. R. ^: a5 C8 M. b) E! j+ N/ k
数字IO管脚配置:" g# U$ T; |4 G6 q) d
输入模式
+ T, |# _0 r7 F- k u& M! U3 E- g/ D5 R1 I! g9 C+ B$ |
4 F: |: d. g9 `
; \* V$ T+ Q1 g" ~1 y; ^5 W
: T* {/ {3 j _! t8 K: i1 P6 Y8 o: W4 V生成工程代码:- D) D0 U" U5 ]8 x1 ^" @
SPI的主要接口函数为:& h6 U" c8 K) q. Z: ~9 D1 X/ P* x2 V" n% g
Q1 X* R0 s, ^1 I. |
# o$ c$ L% i' G4 b1 ~- U6 N) L4 S1 v, R/ V5 V n
1278编程:' A$ t& d7 V5 t0 x, L( G
1278复位步骤:3 K0 T, Z0 _0 t6 Y+ V
NRST = Low 低电平大于100uS, 然后NRST= High 高电平大于5mS 即可完成手动复位。2 S/ \8 }+ p9 R) o" v& F! {8 {
- b3 O, l V8 `5 ~# j5 T; g
SPI接口说明:0 J2 ]% A2 k8 _) U
SPI第一个数据字节为地址域,bit7 为读写控制位, “1” 表示写, “0” 表示读;bit(6-0)对应当前操作的寄存器地址。 在连续读写操作模式时, 寄存器会自动加“1” ,直到NSS脚被拉高;特别注意: FIFO操作时, 寄存器地址不会自动增加, 而是FIFO内的缓存地址。 寄存器的详细说明请参考芯片数据手册的“寄存器说明章节” 。8 x# k( d! t h
& n: d( J, k! }: x3 w( A( f
SPI接口C程序:
0 K# n _# U+ a( R在sx1276-Hal.c和spi.c中定义- B) v ?! c6 x d) \3 S, V
通讯接口函数使用HAL库中的:HAL_SPI_TransmitReceive()
" N6 c" \# r& t/ ]+ t2 U
. ^$ b6 }5 z' |3 i) a( G3 V- uint8_t SpiInOut( uint8_t outData )
5 h4 f y( l7 U) b9 k7 s
/ ^" s% O& T. D6 T z- {
/ v- `' j* T K2 _ - 2 ]& V f/ \( l8 O5 ]
- uint8_tretemp;
5 |6 U% ~3 i: w/ B# X$ m) @ - ! ]0 v. @& T8 G( \$ L
- + R9 `. C% c& P6 ~+ f8 y/ J9 H0 f
- # W$ P n5 t _" {3 f
- HAL_SPI_TransmitReceive(&hspi1,&outData,&retemp,1,1000);1 J, G6 i5 s) S% T1 i
- # C0 Q% A8 t& a% ?1 }( Y5 q+ C
- 2 k$ k9 E8 y9 `) _
- 6 @/ Q! j* l8 [4 V& r
- returnretemp;4 h0 W6 w) i6 t; b* j$ |
- 0 U2 D; M9 F* R/ `- T1 g
1 M2 C2 ~" r3 y @9 p0 _# ]- , c, ]# v# j, J; C9 v* ~
- }
复制代码
3 y& k. Y# z6 [& ~+ U$ o' QSPI通讯接口函数# a d1 U- g; X1 J
: i" O+ m, b% Z. O7 F+ \
1 }/ K/ {9 R$ |- void SX1276Write( uint8_t addr, uint8_tdata )
, N% s- M# |. M& x8 q2 e$ x0 v
0 X5 d% W$ V- X4 x% _& V- {
g3 A; u1 {6 \( H+ V - / J- s7 ^7 ?. P# V. F3 G
- SX1276WriteBuffer( addr, &data, 1 );
' n, z- R5 q- A7 ~- Q - {. Q3 S! _4 ?
- }' X1 ^! l* Z, @$ p- F3 u
- 1 t, p+ ~* E3 J9 H' Y
- / |- P7 x/ D4 j' e8 [6 V
8 T; f0 |/ n& d$ Q, X; J- f- void SX1276Read( uint8_t addr, uint8_t*data )8 {6 x, o, r2 g
) Y% _* q/ o" P* m; |) }- {
5 D# d7 ]8 Y! s6 n7 ]
5 {6 B2 e/ ^) ? D9 J# O- SX1276ReadBuffer( addr, data, 1 );
! y" P& X9 i! J& W) _( K
% P' G' H$ b' m6 a6 F' _3 X9 F- }) N+ _- Y5 e: r! L) F
# I' X# J" k/ E1 ]! U- 3 O& q% P7 _. b$ n# e4 M& I
?" N) j$ N& X+ h5 e( k& e( n9 ~- void SX1276WriteBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )
0 B' Q% T! ~2 F5 f
& o) B& ]" n2 h: a. |' }& M- {
# D* d' k& w. N/ {2 L8 G" I. ^
: ]" Z9 s, {9 L) P( @- uint8_t i;
! h9 J3 m; X6 t, ?9 d% W X0 W2 ]
! y; ?7 ?7 m9 M' L6 M2 Y3 f2 |- N. b
W& {9 C' T( K( ^1 J3 E
, Q$ \" F V& C& n8 T- //NSS = 0;. v" j' d- b2 T. `$ G
- . Q* A& S) V$ s1 K+ ?# Z
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );- E7 U, a5 T* V5 W: N) l
- , c# Z7 @' |3 }& D4 Y) X
- ! K4 F# M1 o. A9 S5 r% n+ K1 m: g
; P/ s$ O- S# o9 D9 B% K" }- SpiInOut( addr | 0x80 );
* w7 l5 P& F; G: L) l$ m - 8 e+ c3 }2 j1 i. L' [ w+ a9 x
0 }# k) D( B8 R+ }2 b7 [- 8 k% i; K$ {, l' j# b5 B1 a3 E
- for( i = 0; i < size; i++ )
) q& \9 Z6 Y- F: I+ e+ R
) P; c+ w. E! {. z3 ]- {
L6 ^: ]3 g1 I% }& C - 4 P% u8 b D5 o7 Z7 x4 H
- SpiInOut( buffer<i> </i>);% |& p" p* ~3 F! S2 V) Y# J: o7 w
- 4 Z% ^! C6 Z/ O3 J
- }
q' e2 V8 ?1 [9 M: B7 W" ]1 d! T3 |
( W' K5 x3 v( o0 C0 ]% L+ J- , v4 I4 Y. \0 t( r
- + S2 i' F, v" c& o% g- ], p9 W( A, x
- //NSS = 1;0 }& f$ w: ]2 H
1 a9 o: `; M8 h; L X7 p4 l- X% \1 f5 ?- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );/ M" i& a( S0 O& Z4 f: E
+ H6 c4 f' i9 o# \- }
* O5 N' ]) }* M$ q( A& H! R
) B; \- W2 q& o% Y
( t' w: \7 h/ M4 ]/ [ R5 F& [
; `) ^' M# }% a( V- void SX1276ReadBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )/ S& I; b: I( Y+ ^# H5 d0 J
- + ~' B) ^9 M/ I; k" ?7 g* [
- {9 A% w5 a, {# B& D5 Y. q' K4 w
- K4 z7 x, ^* S0 J
- uint8_t i;
& u2 A2 c' k: u8 Z4 {$ |6 O
. b, R/ z6 W$ W- 7 m% S' ^7 L! q, U0 P
" C0 }$ I J3 H& q- //NSS = 0;4 y# w9 F! h8 b3 W* \+ U& D' l
- 8 G5 j2 r" D# I- V
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );
4 p0 q" ] }# Q' q; y- S+ A
' I5 \ R @* q- e' W# o
* V, M4 c/ t8 c! A* W+ [
e1 h3 V- m! w. Z- SpiInOut( addr & 0x7F );
* |4 Q1 Q* U& i+ L; m9 p2 d - , x! [* }4 K# h7 z1 W' E, M2 p
+ x5 a% L. e% M7 ~- ( B; R9 h* @- E9 N0 _8 h
- for( i = 0; i < size; i++ )- K' y5 F A# |' Z* L5 D2 G. l+ H
. \/ W$ H6 G9 \1 m9 u- {( q8 l' ?; z, s$ N) ~0 d: R. ?
- 7 B/ n! r% M" y: x* a. O4 m
- buffer = SpiInOut( 0 );
4 z4 A' d s! N4 A
3 _6 f/ U$ `3 B9 M* ?0 V! D- }
0 \- Y1 H: W7 W( p$ {5 d - 8 n* `# _2 Q" L2 D; F9 m4 I, }
- & |1 L! S' H4 C! E3 n
- E7 E* O0 K! b/ G( X+ `3 A% Q- //NSS = 1;
; q) k! W7 }) z) n U: K0 v - 8 p* @8 ]# U) c# U( o2 e o. f
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );
0 a+ ]1 S4 B6 I: r5 o - 6 j+ v& r! d- ]8 N" j/ g
- }" x, i0 a7 ^# f3 q$ C' Z# i
3 P- V1 ]+ X! M5 |
* l2 @4 N5 L6 U' C
: g$ q6 {, I x- void SX1276WriteFifo( uint8_t *buffer,uint8_t size )/ P3 [( y* d. }9 v: o3 R* O
7 d- j8 q. `" a: K5 ]% I3 j- {$ _0 E. [. ]3 b( X, w8 o) f3 x
- ; W8 [0 E" V o
- SX1276WriteBuffer( 0, buffer, size );$ b$ A/ |+ {% h8 R# z4 j
% `: ^# y, T0 ~3 _- c4 t' r- }
W# R y' H" }+ [3 Z - : l! {( o! m" G! r
- ) I, C- P6 v3 z! C4 p; m
/ z. j2 w, ?# B) u2 S6 P! K- n- void SX1276ReadFifo( uint8_t *buffer,uint8_t size )7 L( |) H/ @4 w
- % l0 ~( J3 w& Z& ~( U7 E
- {
U) Q2 O( g, r0 Z6 n7 w) U9 a
0 K; `5 e! z( \( B3 G5 R4 T2 |6 T- SX1276ReadBuffer( 0, buffer, size );0 I6 J' \+ p4 W9 y; x
- " b. F$ Z5 L" b6 _! N/ J
- }
复制代码
% U" ]2 O7 b: ~, E' N数字I/O接口函数:
) F( ~' {, k- c
, u; }2 T9 S) }1 ?$ X! G# A中断函数
1 R& D- I: \7 H0 z$ U) D3 ?" R9 d4 K; u0 C% [' w7 ?
数字IO管脚功能配置' z4 R. x. Q& h) ^4 D2 ?& _
外部中断上升沿触发,下拉
q0 Y3 P9 I* c5 h0 n( f0 s" z, \) j% c$ q4 c% q9 V
1278扩频模块参数修改* d8 {; m) o/ ^
在文件sx1276-LoRa.c中,由该结构体初始化模块参数
: x) R5 F% j2 n0 I C4 v- typedef struct sLoRaSettings( S( T o! r. `( A$ W1 d
- 6 P. c* b/ D( O. h/ T0 c) x
- {
% |; [7 n+ }' P6 _: {3 ? - & q( {2 i- _& p% N: H( q
- uint32_t RFFrequency;3 J1 \8 E! A, A/ Q* I3 U
; W$ R7 i: u1 j6 B- int8_t Power;
, l/ l1 G$ g+ Q: U5 h; N - + n8 h B/ {. X: X2 @- m# C
- uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
3 Y. j) y7 T! p4 ~ - 7 U4 C- B$ U' Y
- // 5: 41.6 kHz, 6: 62.5 kHz, 7:125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved]
4 b, k2 v9 O& W3 E
# Z ^/ C) y0 W) O% X- uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12:4096 chips]1 f. G6 r( Z+ k
: q* m C" Y5 X- uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8], e! c2 P$ s- `+ D' K( I' S: |# m: i
& Q8 B/ n7 k* N# F/ b7 C- bool CrcOn; // [0: OFF, 1: ON]
Y6 y; R' e% w2 @. E7 K9 j - , }) O4 W+ ]* M
- bool ImplicitHeaderOn; // [0: OFF, 1: ON]
3 J+ t$ g8 O4 [+ `* l1 B W - 6 m8 M& }3 x$ I- q. @# Q$ F) S
- bool RxSingleOn; // [0: Continuous, 1 Single]
' \) ?! k6 d$ v9 }# ?. F - 0 r& j/ a$ B3 V6 M M6 z+ \
- bool FreqHopOn; // [0: OFF, 1: ON]. _& f) K' e$ f" ^+ f( ?
- 1 d/ N+ h1 ^$ u B( n* w
- uint8_t HopPeriod; // Hops every frequency hopping period symbols S9 x( V. n) g" @. O! D7 v
7 X6 t! s7 j7 c- uint32_t TxPacketTimeout;
0 {# [0 \/ P1 E. \6 y! G6 g7 {
4 r/ b0 A$ V' _' _+ t- uint32_t RxPacketTimeout;
% |+ {, r! s$ Z5 I) d* c% d- \7 X( h. C - - e6 i0 \5 ]0 S. z, x) l& ]; x
- uint8_t PayloadLength;
7 S/ t4 r+ ] i( } A - 2 D- R+ `, w5 | ~2 o* E1 T, y
- }tLoRaSettings;6 F; p7 W2 @% W5 }9 o
! P! _0 N4 N' |$ H- ' s. j0 r6 |9 m B$ F% z6 V
复制代码
6 C- F$ x" q- Y; {8 B; q例:
% M- M: \4 t) E$ ?8 X4 m: @) ?! u. o
/ `8 _$ r x2 T; d9 g- tLoRaSettings LoRaSettings =' s* [( I6 B! z6 `& r- i3 Y; Y
3 ]3 g- o' m5 a! ]1 x/ n% C2 k6 K0 _- {. Q- L |) i# u5 u* X9 c+ [
/ V: _5 b4 M; }* w( C5 V- 433000000, // RFFrequency/ L* L' V7 R) g; U# f: D4 V4 X
- 9 L$ P5 G. |$ x
- 20, // Power
; A2 @ Y! s' [. }
- u) L% k4 v" v/ v7 ]/ w- 9, // SignalBw [0: 7.8kHz, 1: 10.4kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
# ^ X+ b' r1 K9 W* X* ~ Z - 2 q' B% K3 R" B7 M2 K w( k4 G
- // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other:Reserved]
' \, S+ _" a1 |: T - + t& N: W2 N5 m `: b; _
- 7, // SpreadingFactor [6: 64, 7:128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
5 T6 V! E* F! `
" o0 H' H/ ? C$ a% k- E- 2, // ErrorCoding[1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
% S5 g; r$ D6 x( @, |3 e1 c# \, N8 O
6 c, J5 Y( u% g5 S, s# |% C- true, // CrcOn [0:OFF, 1: ON]3 `: m/ I. L+ C! T$ H* i$ _
* t. X c8 d, Z/ ~8 g/ T+ G& `3 ?- false, // ImplicitHeaderOn [0: OFF, 1: ON]% l) ?' h7 ^* S% R$ k. x
' W+ j2 t( t4 ?6 F4 T9 o! k- 1, // RxSingleOn[0: Continuous, 1 Single]
. C8 f7 W4 ]9 [2 b' o: M$ K - 9 j. ?, m# d- ]" K, [
- 0, // FreqHopOn [0:OFF, 1: ON]& K3 w* q5 E; ?0 l5 s
, a! f. a3 R" d. r- 4, // HopPeriodHops every frequency hopping period symbols, T8 @% V3 d+ D6 x2 ?9 p; t
- 2 n7 P7 D: _! }
- 300, // TxPacketTimeout
* J1 |4 m$ l+ m6 P! W0 }
, Q, F# x7 w; z, f% e( B. _- 300, //RxPacketTimeout
6 \- m4 J3 j, h4 Y$ o/ o0 A3 n' X - ) U( K" ~7 t; W, p3 R8 @
- 128, //PayloadLength (used for implicit header mode)5 N& F5 B! p/ S8 j& Z) b
# }: j9 V7 `9 g% c. P5 F- };
复制代码
, e' Z$ L H) L& T/ F% Q; z% Y5 M+ f% ~" N1 z4 U
+ @0 G" g9 j, A2 z' S8 u: n% X& I' ^
5 ~/ q' W6 u4 p7 M/ }2 ? |