Sx1278LORA扩频模块基本参数:3 c. n, `2 P/ n, F/ S
) ^ M! w. Q& b3 X i
" |0 W& Y( |7 l4 s工作频率 :137- 525 MHz" }( q) A3 n+ e+ f3 ]* l3 O
& T8 p) _! t2 G3 b/ k5 z
扩散因子 :6 – 12
' Y* \ V( R1 X% Q
1 |1 C3 b+ X) Y) Y* @- I$ H带宽:7.8 - 500 kHz1 ]6 r+ s& l( G! l0 Q U
& V9 p# m. d7 g2 @& R X
有效比特率:018 - 37.5 kbps
2 x; o4 |8 c' I! M4 M% b6 P- M/ ]) J+ h8 M( O( l, T9 @1 f
灵敏度:-111 到 -148 dBm5 F3 }. P2 C4 y4 Z; h# r
, L; H) z0 |2 @) b4 |工作电压:2.0-3.6V' @. E, v) k: g7 R; W/ }
: t; K3 G7 y, ^ f, g/ n' X
发射功率:+20dBm(100mW)
5 L7 }7 s8 X: I: R9 h+ [" h, U& M$ x) k2 Y8 b" y3 |: ]
通讯距离:10km-15km(500bps)(无遮挡)
6 a2 c+ _: z; @4 h+ q* o; J+ k5 V7 ~' |8 Y3 J+ D* R+ a
数据接口:SPI
9 U8 G" \* E1 @9 b/ x1 o8 a
$ P. H+ x3 W ~/ ]7 m& ]调制方式:LoRa/FSK/OOK
; H- Q4 {' D: f: N4 H. K
0 |- F4 _% `: L4 _工作温度:-20- 85°C! I1 o1 z; X* r* _
9 i L q. g% C% }5 Z# B U4 z& v以上部分技术参数名词解释:$ t: u. p1 m2 y+ x2 |
# n' m" }7 e1 V7 R3 d
扩散因子:! P6 F$ i' Z A% X4 j
; Z( M# {- g `* H1 o5 MLoRaTM 扩频调制是通过展现有效信息的每个位来进行通信的,这种扩频信息的发送速率需要参考符率,这种公称符率与芯片速率之间的比率就是扩散因子,展现了发送出去的符号总数每一位的信息& [, ~+ [, p' [2 N3 a
5 \' M% Z8 n" H- J- V信号带宽:0 `* B; W8 ?( V: G8 p5 ?, S
( Y+ }+ Y- ~! R+ R$ n& T% a- y
增大信号的带宽,可以使数据的有效率提高,即能使传输时间减少,不过会使灵敏度变小。
: w3 J2 Z. z& Z* J& j( b" d6 v9 N$ l% \, ?0 \
调制方式:
: |6 H1 J# D8 S$ B; t, J( S# r* \8 u
LoRaTM调质解调器使用的是扩频调制技术和向前纠错技术,它的无线通信链路比传统基于 FSK 或 OOK 调制器有更远传播范围和更加健壮。
' ?0 \# t: }" p9 U, k+ x* E0 j. Y6 Q" y) L# F! }: L" v, ?+ L, h* I# ^
频率跳跃扩频技术(FHSS):
+ C6 @3 @+ G$ G4 h7 _9 L( O, i9 a. Z3 Q( C1 }) d
FHSS方案的工作原理为:每个LoRaTM数据包的部分内容通过在微控制器MCU管理的频率查询表中选取的跳频信道进行发送。在预定的跳频周期结束之后,发射机和接收机切换到跳频预定义列表中的下一个信道,以便继续发送和接收数据包的下一部分内容。在任一信道内的驻留时间由FreqHoppingPeriod决定,他是符号长度的整数倍。$ `: ~7 {7 a2 e7 ]
& Q" f% C3 s& `/ E/ ]2 eSX1276/77/78/79 基本区别:一张图说明:0 N5 Y+ p Z, X' _
# ~ ?# W1 _5 b( M! W8 L6 j
! I% w6 S5 r6 J4 C! [
' w/ ~; K1 @4 |' c, S
( Y/ X) e0 Z9 k" W9 I2 u
4 K" z. O" J) x# O1 E
主要工作模式功耗参考表:一张表说明:1 H7 B' i z t' W& D0 D" Q9 Y
& e( i$ d) U! T3 `
' V! x5 G# C( Q
) e/ N' J% H; M7 q* R; O) B1 x" P6 r7 A% q3 k
LORA调制模式下的运行方式:" _9 G" e8 N8 X" p
LORA 调制模式可以通过设置寄存器 RegOpMode 的 LongRangeMode位来进行选择:
" \! U6 J' F7 D2 w' ?1 V" i" _$ {% J
5 ~$ W$ j, {( \, E$ S
* g. V9 T1 m7 h- l& jLORA 调制解调器发送和接收工作流程:& L& a' ^. J. A+ j
: W4 m8 ~. N4 j( i2 L
& f( [% Y8 I" K& B/ b8 s& S+ h, ?1 E数据发送流程:, E% E/ b6 ?3 N2 P% g# l
在发送模式下,在需要发送数据时才开启RF,PLL,和 PA 模块,这样可以减小功耗;# C- E P- O B* y& i5 G: |4 ?7 q
9 q) ]: v! b& E9 M4 W注意事项:
* V9 D: R! m5 q( B6 p% S3 ^
& X. P# q& y4 Z7 y% D/ ?; r/ e* r1、 静态寄存器只有在休眠模式、待机模式和 FSTX 模式下才能被使用。; w: p% A; Q, g$ A) {) e
, P) H$ o0 d, {: f, t7 d. o
2、 LORA 调制的 FIFO 只有在待机模式下才能被写满。
" k" j4 f% p; d6 L9 c0 J0 W- u4 Z( x
3、 数据是在发送 TX 模式请求后才发送
$ v3 B* j2 t6 Y% J+ Z
7 K0 x: B; m R4、 数据发送结束后,TxDone 中断发出,设备进入待机模式3 [ Q T" V& V* `" h( W
8 N. {3 y E5 L
5、 继之前的数据传输后,无线设备可以通过手动设置成休眠模式或是写入一些; Z u, n [' w3 C
数据到 FIFO 为下次发送做准备
8 D3 v/ P" Z$ q! O- W5 P0 a
4 X" W4 A8 u# ?9 m6 n6、 LoRaTM 发送数据在 FIFO 填充
# A% T5 X$ M8 G- w7 W; a; f
/ x+ ^- ~0 s i, E' n6 w数据接收流程:
; {! `1 p* n0 ^注意事项:0 C) R& G6 C1 G* Z# D7 {
* m) J# q" v! B1 B2 B# W' {
( b$ p' n" F3 Q! n8 Z7 O* Q& W
% W( \6 ?) e7 m; N, ?0 o
( W3 o$ i, {# v5 S9 z
$ v2 T7 G5 t) ^, [4 o5 jLORA接收模式工作在两种不同的模式8 y1 \" N. Q5 ^8 T
1. 单个接收模式
! ^6 U( m4 u1 T6 P2 _在这种模式下,调制解调器会在一个给定的时间窗口检测数据包的序文,如果在最后一个时间窗口都没有找到一个序文,那么芯片本身就会产生一个RxTimenout 中断然后回到待机模式。
9 Q0 w/ x4 c) I3 O2 i5 @
( [: X/ k$ B4 d- M9 V- \/ v3 ~9 t: z2.连续接收模式
G$ N# H8 L6 E/ u2 ]在连续接收模式下,调制解调器会一直扫描信道而获取一个有效的序文数据包,调制解调器会一直检测和追踪信道上的序文,直到有效数据包被接收,然后继续等待下一个序文如果序文长度超过了寄存器RegPreambleMsb 和 RegPreambleLsb 中设置的预期值,那么这个序文数据包就会被抛弃,然后重新开始序文的搜索,然而,这种情况不会产生中断标志位。与单个接收模式不同,连续接收模式下,当产生超时中断时,设备不会进入待机模式。, A4 e, Y4 q9 B9 O. D# X- `
) Q/ [1 {1 I. ^4 ^) f4 m
CAD(channel activity detection):
; Q3 r/ g" m9 a4 w3 J扩频技术的使用不能解决信道是否被其他lora 信号占用的问题,RSSI 也无法解决这个问题,为此,CAD 就是用于解决检测信道是是否有其他 LORA 信号问题工作模式。
C& O0 _* L) r- x$ P/ ^6 m
# l) t% u& U d, ^2 t$ k3 d数字 IO 管脚映射:1 k/ J+ C. J# V, }6 t
在 LORA 模式下有 6 个通用 IO 管脚,下表给出了这六个 IO 管脚的详细信息(跟寄存器RegDioMapping1 和寄存器 RegDioMapping2 的配置有很大关系)
0 p2 a: V: m; M2 {. v
7 X2 J* f M1 V4 G$ W7 W. X# b; f
' k1 |* |4 t, J4 w; c
c( U0 ^; N. O. u/ N+ aSTM32Cube软件配置:
% Z' n% o, y1 p1 `8 Y# ]' DSPI接口配置:' s* U, [) i- B {0 k1 A5 f
原理图中使用到的SPI接口为SPI1 J
( ]6 G4 H: G* x7 P0 H/ l; m* R
! e. A, \, U) B+ _ R8 |6 i+ S配置为全双工主模式。在参数配置中,注意一下几点:
: b2 u. h3 d! f7 s' T* c& }' e$ g9 D. w
数字IO管脚配置:
! v7 Y7 q8 \% ?, w: a. n输入模式
a" {2 V7 ]/ J6 r5 p' d5 f5 r( t% b- v5 i; g! B2 Y
% Z% {7 c3 `' ^( n
0 M0 ~' W. a3 w$ j7 t1 }( r7 H) T
. Z1 V9 |* [. m; D: e
生成工程代码:
6 y9 f2 V. Q! `) v1 W6 p0 A! y% g$ }SPI的主要接口函数为:* ^4 Z3 p( a; B4 M
: l; u; L7 a- _
/ s" _& [8 `' I% Y; l2 z
1 K" n+ d$ V# D1278编程:& a, F- u! C" H+ ]- W& z
1278复位步骤:
' _2 E( L* T) E$ W4 ^NRST = Low 低电平大于100uS, 然后NRST= High 高电平大于5mS 即可完成手动复位。
* m+ a4 a! a" z! e6 X5 ?
' |. y* m8 J; Q8 `3 OSPI接口说明:% Y1 j* b4 A& j E9 K
SPI第一个数据字节为地址域,bit7 为读写控制位, “1” 表示写, “0” 表示读;bit(6-0)对应当前操作的寄存器地址。 在连续读写操作模式时, 寄存器会自动加“1” ,直到NSS脚被拉高;特别注意: FIFO操作时, 寄存器地址不会自动增加, 而是FIFO内的缓存地址。 寄存器的详细说明请参考芯片数据手册的“寄存器说明章节” 。
' _ z! }" w8 D( B I) d( D6 V
SPI接口C程序:+ `4 v2 T: e6 E. y7 @
在sx1276-Hal.c和spi.c中定义. \7 z+ \6 Q' a/ v; t; g# s
通讯接口函数使用HAL库中的:HAL_SPI_TransmitReceive()- O4 F& [- ], p
1 h# H4 r! }) q* e3 c+ N
- uint8_t SpiInOut( uint8_t outData )
8 s) l5 ]% V9 {' K: g - 6 K+ }% I) b, B+ p- M4 Y
- {( u) T A- _; W3 P, V3 D8 x
- ) w: A/ I5 B) j$ X
- uint8_tretemp;
8 P& d7 N8 L' W - 2 @9 J1 _, R$ u0 y" X/ y3 B
- + R3 l0 [" n5 Y4 H/ w2 Z' W
2 Y" J4 w0 f- k9 v: v$ ~- f- HAL_SPI_TransmitReceive(&hspi1,&outData,&retemp,1,1000);
% n) e+ A' R0 @: e! F S - ) J1 y* e6 D4 P+ j* Q% v9 L
; ~, G7 u5 k/ o; O, w; P# i
- n9 h9 f" R( f- returnretemp;9 h9 l6 C- e3 l
: m6 {. T& S4 W6 \6 s' J- $ l. w& {6 I; O; r
" K9 P3 y6 d% g9 V2 H1 S j' ?5 B- }
复制代码 0 E: v6 V# ~# O$ x) }9 p9 i, q" a
SPI通讯接口函数$ g* x2 F9 L1 s: c3 s
( ?( c. ]0 R, B. W5 B& w
; L2 {9 I: G- v
- void SX1276Write( uint8_t addr, uint8_tdata )% S9 ?- F" A0 u6 R/ S7 Y
" x$ p( n/ h* C. t- {+ f9 E- {! x5 t' g4 e
e% i3 |% c/ V" ]: K$ ]- \6 C- SX1276WriteBuffer( addr, &data, 1 );
$ f7 q) [. Q% F! x3 X. ^* @# n - ' h& w- P: D5 I/ i
- }+ W T T4 n$ A# a1 B5 T \
- . D& t# A: r) E" q! `) \% j
- ; Y- N; B% s& \! J; l( ^- \) Y
- 7 i# F9 N6 B6 E9 E
- void SX1276Read( uint8_t addr, uint8_t*data )
+ m$ L. v- I c$ u& @1 L& Q6 l
5 ]: w% E" n# H( h- {
1 U$ p0 B, d0 l0 H
: y! f0 P C- m4 e2 H$ \- SX1276ReadBuffer( addr, data, 1 );) S& a0 R- Q* A1 j5 z) i$ r6 V
- # k! g+ t) @2 D, g" f( g- S
- }
! }+ B. z- Q. c; h$ z- G! \3 J - 0 g0 }4 P8 H+ U0 _4 E
- ! e2 Y% h' Z8 S) Z9 b/ | `- C
1 L# |; @9 w- x& Z6 n* d B- void SX1276WriteBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )6 D3 t* P0 i/ O+ ^0 X0 H/ H
/ u X. A3 r: v2 d8 [6 O9 [ q- {- J' K6 I7 e" \/ [0 g7 b- w
- 2 B9 [& y& y* x& }3 H1 w
- uint8_t i;/ j3 K" @3 N1 F" g. C
% v( T" U4 w% v) G- 3 \4 z7 Q$ C+ a4 S* e, \9 C5 ~
1 d% c$ J' K y: e3 \- //NSS = 0;
+ C. p& @ S" g! u. j! O$ B7 B
" B- S4 t4 x6 J8 p% Y+ T- _9 H- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );7 q7 Z2 g0 B. \/ k; K& z' X) {1 h2 m: r
- & O' d8 s0 _* ^5 _
- j/ i# e- g* L( ~
1 V! n' j8 g' p" V4 L& a! C9 E- SpiInOut( addr | 0x80 );
2 A t$ C" @0 @3 {3 W. D& E
) t/ k, A; Z- O8 |6 o- Z/ p2 I- / i- ^- n$ A3 v+ I1 V! n
7 Q# x2 Q b5 K1 p- for( i = 0; i < size; i++ )9 d, B, G5 u8 c `( L
- 5 \9 ^/ r2 [9 d; F9 K
- {
3 C6 q1 G9 j, A+ G( A8 J% u
- R* J2 J" l! P% ~* d8 Z- SpiInOut( buffer<i> </i>);5 R! R1 ?8 A5 Y9 w7 s
- : m9 a, Y" w6 M6 U' f
- }4 ^; z* G% \0 q( E* O4 p0 t8 n2 b
& T! a) _0 ~8 H1 w, A
+ D7 t' c$ q2 ~" U" L' r) E& n
8 H1 {! k" B0 p+ q/ X, \- //NSS = 1;$ }4 ?8 I3 z3 W* e
/ @) s8 }" f% s" W- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );
) y& M4 _. j/ D6 O - 7 m' m A# _/ R6 V$ o$ q
- }
0 n' t2 @! j& T7 F0 p( @" @+ v) b
, F. n: v. K0 ^& D/ m; c
- p) R" k- Z+ C$ s: l
- b- R+ e' y3 i! S- void SX1276ReadBuffer( uint8_t addr,uint8_t *buffer, uint8_t size )
4 O# N1 Z9 B4 I1 v9 f% G" V& p v. z ] - ! r7 F" q7 |* P
- {. E( ] M& b7 U1 g' Q- }% l# f* p
& J, I9 p( Y: P8 E- uint8_t i;
6 O, `+ y& |8 L! i
# L3 V p! {! Z$ L- ( o9 u3 ?! l' j9 t
6 G# ^+ x H+ y" x% a- //NSS = 0;
1 A9 o }* X4 m# g
# z* k9 X- D' U% q' ?9 w \4 h4 J- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_RESET );
, Z( F" z- U; u
; h7 \8 A3 N4 P7 r- + c O' n5 P+ L" W/ _: d% e1 F
- 1 L' A. {! b0 ~; g3 D1 k0 D
- SpiInOut( addr & 0x7F );
% g! H- \0 ]6 H" O+ r! h1 g3 Q
' y: E7 R, Y/ {$ |- 8 S* c) T) [. I/ }" u0 y
( W: ]( T c- _+ i5 h. `- for( i = 0; i < size; i++ )
( A$ R- K- a4 a
, U, s( B4 }/ Z9 m4 F- {
0 V$ j4 v# d2 Z3 C- X* n - , w3 N _6 [$ ~1 V* E3 w. Y
- buffer = SpiInOut( 0 );
, r0 H" X* u/ W2 }+ t7 v0 p" ^ - * a% D! ]8 Q; f C# {3 J5 O
- }
7 s- g7 [/ l8 P0 t' W) \8 v
( ^3 [+ @2 d( r6 a
2 i: e1 S( }1 l: N
* Z4 W6 K# o! c" K7 `! i- w- //NSS = 1;
) [* d& n- H9 f6 F4 e/ L* t - / |/ P+ U$ N M0 e
- HAL_GPIO_WritePin( RF_NSS_GPIO_Port, RF_NSS_Pin, GPIO_PIN_SET );; j, r# b, o# I3 W6 m$ ?
- 7 y+ }: ^" w$ X/ _
- }& j( G N# p& E& J" \- S' ~7 s5 c
+ _- F! B3 a+ `: G7 U8 \. n- 9 g+ O; D- y$ U$ H8 V/ p8 S! m
; G* X- `9 }7 j1 i1 G! V7 R o6 [8 R- void SX1276WriteFifo( uint8_t *buffer,uint8_t size )4 f2 b! k; V: j4 [
5 M% ]) k; y2 n& }1 v" ~1 N* o- {4 ?0 y& v C/ u& V
6 f6 r$ S( V6 ?5 G- b3 f! \ ~; f- SX1276WriteBuffer( 0, buffer, size );4 u& |& j* O- R
- : k" P; |6 x& l% `! n: S9 G7 K
- }
- ?, @* I3 L2 ?* z) _$ O- H! T& i - & t9 P1 N) L$ G
+ d. a: h4 d: }4 }
5 V& w" l- J, v- void SX1276ReadFifo( uint8_t *buffer,uint8_t size )
$ P; S& X% t. l+ c7 A# D7 g
% ?4 Q1 {- h" Y% ]& K- {/ ?; f; h7 r1 o, r: }# A) _
- / x) {- H, @! t$ X0 ^! B: b
- SX1276ReadBuffer( 0, buffer, size ); D9 t F a3 C
; |& `. c+ f0 W' I) W* }" R o) D* P- }
复制代码 7 `, |2 n) Z% ^. k! l( g
数字I/O接口函数:
7 K$ T. M; j+ q2 ?$ b3 B0 q. ]' f* g
中断函数
( ~) P P9 Q* R( U0 ~5 k
" ^2 Y0 i2 T3 o0 c# @( Y' Z数字IO管脚功能配置
3 ^: O6 o* \1 [( a外部中断上升沿触发,下拉
8 k* o% F/ e. {: C6 J4 _5 f; F8 U) y7 a. [
1278扩频模块参数修改
. F4 v4 i" `, v/ G# A在文件sx1276-LoRa.c中,由该结构体初始化模块参数
2 M; e6 t) _# R, K- typedef struct sLoRaSettings" c/ d0 Q4 y$ N- Y, l! p
2 r0 Z: S9 E& B- {
+ i$ V- v! z& M" J% M1 K; q - 6 a8 v3 D- I8 M9 F! r1 H
- uint32_t RFFrequency;
) C/ u* |) e6 Q' L/ N" Z8 V5 W+ `. i1 ?: Y
& `( X( B) @: W. k5 P- int8_t Power;& C: {9 J; x9 I) ?9 G
- , a( C6 M' S* K% ?. ]% M4 m; D! |
- uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz," b% c# {0 H3 Z- ^
- w6 }: J: \0 e2 V& ]7 n- // 5: 41.6 kHz, 6: 62.5 kHz, 7:125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] ' c, F2 c* H0 a# Y; P
5 x i6 v2 g, o: n3 u+ \: a- uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12:4096 chips]' _' S1 P5 U- z% B) G1 e8 [) x% _. H
- 1 u& O6 {1 e3 {8 f
- uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]' D& h9 o! @% w
7 C1 j- ]4 w. B- X' l- bool CrcOn; // [0: OFF, 1: ON]
" v1 g4 `0 o% u. w - ( K, c* k' [0 D- _) [
- bool ImplicitHeaderOn; // [0: OFF, 1: ON]
! l: S, Z: z- x1 P% X* ?7 W- m& R
% {3 F& Y; w& i$ c- bool RxSingleOn; // [0: Continuous, 1 Single]; F7 p* A* G1 K" e* x% n, L0 L
- * E4 x L5 G. O/ |+ s( e
- bool FreqHopOn; // [0: OFF, 1: ON]
* X# j& ^+ P' [ i, v9 `, y! L9 L - . ?. R( {+ a1 `( h/ w
- uint8_t HopPeriod; // Hops every frequency hopping period symbols
, Y. S& c, O1 x3 k) M/ [ - ' l$ _8 k1 O" Z7 g7 V2 O; G2 b, w$ m
- uint32_t TxPacketTimeout;+ o" H; t c2 _* Q, u3 b
( b6 U8 z7 @ r& t7 r8 a. S- uint32_t RxPacketTimeout;
7 f: `1 p( V1 p! n
( _8 t: w% T2 n4 R# X- uint8_t PayloadLength;
! J1 N6 j2 t# d8 M( U) V
U/ _, u+ _. O- }tLoRaSettings;+ t( m$ S0 ~3 r2 u& U/ C# ~3 W
+ j# h' a# v/ Y( B1 A! L# Q; v
: y1 k# m: [5 q" E1 |' m- i& F( ^% t+ E
复制代码 . G8 {; f+ o' Y8 l9 S* ~ O
例:
0 C' `0 B7 p/ J! c5 V: n) y
, ]1 O( E: q5 i; T8 C- tLoRaSettings LoRaSettings =6 i* P1 @8 J& x# {7 _3 S
- + g8 t3 b. I, [8 p r
- {
1 _( f# i J" \& w
* v% n& A0 K& b2 M3 ?- 433000000, // RFFrequency
/ B' y4 a7 U7 {- I: T - 8 v& R, T# C8 l
- 20, // Power
/ B8 R b0 x! M( w5 Z
# v0 X5 ^+ i& e/ Q5 R$ B, [1 k- 9, // SignalBw [0: 7.8kHz, 1: 10.4kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,. a* U) ]$ U, w% e5 h: v g* f
- 9 d4 R7 j) B& t9 f. U
- // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other:Reserved]
5 d( w6 `# h9 j, Y+ D v
a* k2 g% {+ n: o# A8 G- 7, // SpreadingFactor [6: 64, 7:128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]7 F% \6 \; f( I5 l4 f5 B( [
! T( ^7 A7 E% Q* k- 2, // ErrorCoding[1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
. A o5 N" X }1 y" Z! E$ Q
2 a0 C" |) w5 S& w$ c- true, // CrcOn [0:OFF, 1: ON]5 `; e7 R- x2 r1 m+ R
- % B' l5 t' V$ j: t1 h
- false, // ImplicitHeaderOn [0: OFF, 1: ON]
, H; A* t& W; V
; ]$ D) v' u- ~/ Q& m- k- 1, // RxSingleOn[0: Continuous, 1 Single]$ j, {( r0 X- S
- ( Z; K8 S: H+ o" x3 Z: v
- 0, // FreqHopOn [0:OFF, 1: ON]# R1 X; P. a( @
- / T' |1 W7 Z- e+ m$ }" O" E& y; H
- 4, // HopPeriodHops every frequency hopping period symbols
" D6 O# F; l3 y2 N' }" z- r
4 Q" |0 Z) _8 ]% R ?) V- 300, // TxPacketTimeout( J; C% V3 ~8 R* _& w+ P9 V; z: V
- & ]* @8 k( D. H& n2 y! H+ P6 \
- 300, //RxPacketTimeout
2 b* M8 o8 a4 v) S+ ]% C - , s( F2 `- z5 ]! i8 c$ \9 Z
- 128, //PayloadLength (used for implicit header mode)& ?6 {) V1 T& s0 Q4 @) D/ R3 y
- G4 k0 r8 Z3 |& Y* p
- };
复制代码 3 X0 z! q6 q8 y2 D* a
6 I, b+ t- E& G& ~6 x- z8 m2 r; K" v
/ U2 ]! i& u J- ^9 a. q0 Y1 F
|