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