你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】【TSC_WL_EVK STM32WL评估板】上手体验

[复制链接]
STMCU小助手 发布时间:2022-1-4 11:00
【TSC_WL_EVK STM32WL评估板】上手体验
1 L$ b/ C) [: c) q一、前言

1 ]& Q5 K9 A+ j最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!0 Q4 h  L8 k' @1 ?/ y; ]& Y* l
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:
& X- Q, i+ N$ _& d+ d' o+ Y. _
2020090523083685.png
& @6 c; i- l7 O* A8 n( y. {

, W) E$ j. x' f( e' Z. S/ }接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md
. o9 b1 W0 O1 D& P4 n" [5 |3 d$ F% j5 f8 Y# p! D) m# |3 u$ a
二、开发环境的搭建
. [' N( i0 J# B1 I4 B首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
; }) u3 y' \+ }6 q( U& l& H
; Y/ Q& f! Y9 X+ \" A' L三、腾讯云IoT Explorer 设置

! u, {# Y) a9 x, l5 v: D7 k/ ?9 u登录腾讯物联网开发平台控制台,点击新建项目,
; k' F$ Z( {7 d9 q
0 \6 ?, y2 E; V
20200906131249408.png
/ }1 J; F% s. a( _) i

. T# }1 M5 ]* l% N& h4 J4 [- N然后输入项目名称和项目描述,点击保存+ C5 z* \' d* f' [9 G* x4 F

$ F* v3 |/ s: t  J% P
20200906131451432.png

. k3 i) M0 x2 w- \1 q. z$ q  m! Y* k( d2 Y4 e" Y/ {, }5 T" O5 b. Z
项目新建成功后我们点击其进入9 i3 `& E, m- u3 i  ^: q& b* q# O# v2 `
& c% v! ?, B( G! j. Z& |
20200906131638220.png

$ O9 ~  ]: i( S- G' c* I$ D. k5 v( a2 _% X. w! ^$ U4 W8 [
然后点击新建产品
# X6 a% j, m/ D8 f" R4 q- D7 ^1 w3 C, z! ^  g; N
20200906131716387.png

* A1 i' M& |2 q
! D2 e3 M% ]! n4 |# w然后填写产品基本信息如下所示,点击保存即可
1 o) v: B# r& X) E: s2 b2 i
! h( Q& f" q1 H/ c" S$ @8 Z
20200906131933438.png

. Z+ ?. R6 b( w+ v  Q; l- @/ l3 k: p6 \2 f/ b
产品新建好后,点击进入产品,开始产品配置; Y/ T, ?! z: {; ^8 o

3 x; H# @, i+ K& @% ]
20200906132115435.png

9 X+ }% r1 X6 G, f2 D0 _3 I& y& q& z/ a
在产品配置页,点击【导入JSON】
' T' C- ~* x5 P9 H2 h) K3 {* e
! v# ~* x+ N9 P6 W2 \
20200906132443467.png
+ J, H2 Y; ?% Y: i
' F) f- I  h8 x) U2 p: s
填入的JSON代码如下,填入后点击【导入】即可,- T5 Z4 i- |0 L( }; F- h: R1 w
7 }6 O! o) G% D8 W( n& ~4 S
  1. {, H0 _( I0 R& Q
  2.   "version": "1.0",# i$ W& A4 U) `5 b5 i' T, a3 h
  3.   "profile": {0 n+ q% R/ g; }, a! o9 P
  4.     "ProductId": "F2G256SY2G",  ?& l; u) K/ T5 o4 A
  5.     "CategoryId": "1"8 v7 y6 @/ m8 _( q0 ~9 \
  6.   },
    & x  |  S+ y, ]! r( C6 ~, k
  7.   "properties": [
    1 S. m1 D4 I- E( j
  8.     {
    3 i' K6 p0 \" D
  9.       "id": "temperature",) @) |7 I5 G* T
  10.       "name": "温度",
      x8 @. }0 r# w: E! W; f; g/ \* M
  11.       "desc": "",9 Y! O/ c' K/ }2 q  {
  12.       "mode": "r",
    0 l. t; k' q0 K
  13.       "define": {
    % ~* c( c" W! X8 Z: H8 M2 P; S
  14.         "type": "int",+ {7 K0 m" q7 a" d5 C4 K2 I- m
  15.         "min": "-100",
    - r0 z$ U7 l0 e8 D# ]5 h
  16.         "max": "155",
    5 ]6 G: ?2 @6 `) P1 u  n9 y
  17.         "start": "0",
    ) g9 a5 J: M4 [
  18.         "step": "1",
    5 K8 n/ J: r: @/ P3 k" o5 c
  19.         "unit": "摄氏度"
    9 J: f4 o9 b1 I! V5 g. w
  20.       },
    5 c: n" T6 j1 p7 `3 W
  21.       "required": false
    ( |: `0 J% \5 A% ]; \
  22.     },8 \% X: p' c6 i
  23.     {$ q0 B: l! _0 W4 l$ h% W
  24.       "id": "humidity",
    7 @& [) _' y$ b
  25.       "name": "湿度",) `$ F# U; `& s& c4 R) Q
  26.       "desc": "",+ O) f4 O& L. F. r$ R
  27.       "mode": "rw",
    0 Y0 N$ C" Q% e7 u/ O0 x
  28.       "define": {
    & f6 n# O; M0 z& G& U1 z
  29.         "type": "int",
    1 }; @* r) i( u- n% o1 Q9 H0 Q- z
  30.         "min": "0",4 h9 [5 G1 c* l7 \
  31.         "max": "100",
    0 @( g# J6 v* O0 F
  32.         "start": "0",2 e8 j  ~5 r: |  z* c9 x
  33.         "step": "1",
    " T4 x6 W* Z) L9 f8 k" I5 G/ d
  34.         "unit": "%"  z9 C  f0 @/ }
  35.       },# a* V" h* B. a2 Z  S
  36.       "required": false9 [, s  i. P$ j7 Q& {
  37.     },) T: e; T" r. u$ H4 Y9 I9 e
  38.     {, {) Z3 O8 ^: S/ A2 M3 o/ d3 p# g0 F: @
  39.       "id": "period",  I4 j1 y# W- S. X
  40.       "name": "上报周期",
    " o! Y6 E: E# r- c# J
  41.       "desc": "",. u: b  j: m& M( w' Z
  42.       "mode": "rw",
    6 r% ~' `3 _4 t# ?3 I0 c4 @
  43.       "define": {8 [3 f! l, Z1 ^  J3 t: F" B
  44.         "type": "int",
      O" a% d" q9 i- o3 p4 s* B) b4 ]4 i
  45.         "min": "0",) B, ^! _: x, Z3 r1 m4 v
  46.         "max": "3600",
    # y0 ]; H* l/ k. }
  47.         "start": "0",' t# ~8 Q, {+ [- L, g% B& \- q- Z
  48.         "step": "1",
    2 I. {: }& W6 K0 |+ _% C, q
  49.         "unit": "秒"
    6 o5 _6 ?- z- b3 E* E2 i  J
  50.       },8 k$ ^6 S" ?& f/ N1 h
  51.       "required": false1 V& A7 W1 r* J4 o0 k) t
  52.     }
    ! d; c, o6 F+ P$ x" _7 r
  53.   ],
    . |3 z7 G+ d' G" A' S
  54.   "events": [],8 L! U) j3 {3 E
  55.   "actions": []
    . F3 |% F. w& A1 O
  56. }
复制代码

6 A' O2 V. u! S6 h6 \# J
20200906132744190.png
% Q' r/ x; W) x4 h: I$ C8 o2 V# G

7 |9 I8 G- K# t% H# P导入完成后,如下所示,然后就可以点击下一步了
$ X. ^* A5 y& E8 p( S! |/ c+ i2 F4 S  X) x6 u
20200906133006655.png
8 p1 L8 p. @3 k& Y3 u; b+ [
2 M& a2 v0 W, Q4 Z3 `
在上行数据解析部分中,填入如下javascript 代码:
  1. function RawToProtocol(fPort, bytes) {3 F* a& l) T  P( A# }
  2.     var data = {
    - Q% Z. u' G: g( q  c' ~
  3.         "method": "report",
    ; A+ ]5 u1 |( c% x: I5 I5 M" Z4 G
  4.         "clientToken" : new Date(),( g2 b8 u3 Y4 B, o% C
  5.         "params" : {}3 W" A- X' a3 g5 f: o5 E
  6.     };: S8 r" L# ?% N6 V6 B$ J
  7.     data.params.temperature = bytes[0];+ X" h2 R4 V9 L, V4 d$ i6 T
  8.     data.params.humidity = bytes[1];! Z' @1 I0 K# K2 F2 a; e( Q
  9.     data.params.period = bytes[2] | (bytes[3] << 8);
    " h5 H8 d' P; [
  10.     return data;+ s& m4 J7 Y( u- [+ |
  11. }
复制代码

. ]1 D  R4 `1 a- D( L在下行数据解析部分中,填入如下javascript 代码:
) V) a- h' x7 F) I: z  N9 B" M* `5 k5 K7 d  o. m
  1. function ProtocolToRaw(obj) {& y- g$ j: K; x. I
  2.     var data = new Array();
    $ ~- P! N. H/ Q; `
  3.     data[0] = 5;// fport=5
    ( D# D$ }/ d: K% x
  4.     data[1] = 0;// unconfirmed mode- q6 z; Y! I  s- t: h& a
  5.     data[2] = obj.params.period & 0x00FF;8 J( W8 n6 r: `. p. P/ }
  6.     data[3] = (obj.params.period >> 8) & 0x00FF;( g1 L' `% l: t/ I
  7.     return data;
    / a. W( `7 W, E
  8. }
复制代码

; B% _# L) n0 M/ w( R5 G4 `# a填入完成如下& ~, T, H! b$ `. L! P

" c& U. c1 [2 y7 W5 l' O" l4 P
20200906133509244.png

  n6 o5 ]3 o% V; |, O* m* k1 {( b# Z' i4 ?. s
然后点击提交,进行保存4 m1 j7 X, U. ]% j. y( F$ L

$ z- l" p3 z9 K3 J
20200906133901811.png
. ^! u* \  V3 S( A& Y. x

* D* O9 h, Y! m/ `3 m点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;0 W7 h2 K0 h4 b/ _

, B5 d. o/ F# V) F
20200906140115117.png

/ [5 A& f7 a+ r0 q' d9 B
! r1 X5 R9 G$ C- _# k& g三、编译程序,烧录固件9 n  ^) \$ s7 O' h
首先从TencentOS tiny官方开源仓下载源码! X" C8 Z4 ]! {8 L4 N
+ J6 _7 i: `( @! C/ x4 t2 W
拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:* D8 B% c, @9 S2 O) l
1 j4 X% s# g8 m( N
20200906134551350.png & j) ^9 H. y9 j6 A) s
* m% J/ K; t& E$ S
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致8 p8 n6 V7 K- P8 g
# F) Z) f6 s" f4 J
20200906141127957.png

( g& W* U* w; A% a  b2 t! ~- D# g# E  ^) ~
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7
5 p0 S* X3 T1 y6 n
9 O; d, P3 s! W* C6 E5 Y: t
20200906143538887.png

  f4 ~9 U! N* h% O8 q1 j8 ?
* l8 W, s0 o- v( ?" @! [8 Q8 E" F升级完成后重新插拔一次ST-Link,接下来做如下操作1 W8 S# E9 ~8 ?( b
" P1 A* ?+ b7 }  h9 H" O
2020090614395784.png
# e- U3 q+ }1 ~& {, w8 T. h

) t* a1 t3 K8 G! \8 Y, Q然后再重新插拔ST-Link,编译链接下载即可成功:
* l* o; \4 T0 e& t" H6 l) ?* V/ Y  ?7 h7 ~0 A" t
20200906144251679.png
! S0 t7 w+ {4 z. @1 f
7 s( t' I/ `& X7 X3 @
/ D8 H' ^% F7 f3 p$ p. S
赞 收藏 评论0 发布时间:2022-1-4 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版