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

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

[复制链接]
STMCU小助手 发布时间:2022-1-4 11:00
【TSC_WL_EVK STM32WL评估板】上手体验( t% G. a/ z/ o; w$ M
一、前言

( E2 e7 _0 Q6 x1 W最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!' s" i2 }: D+ `: A! G1 a5 Y
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:' b" y: G% n1 P
2020090523083685.png
  I/ V3 U; Q# d/ c# \
6 j  V# x% P/ [& Y. \* T5 b# F& k% C$ P* E
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md8 N1 S" s/ f$ F  ]6 l* C

. I9 _% x# G3 |7 e- I1 T' W% J二、开发环境的搭建' a% H5 Y3 P2 s' l+ m  U' w% ]  X" o
首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,, f; l6 K/ ~% F0 J/ N2 S
" S: Y3 z2 U. C' G( U% i
三、腾讯云IoT Explorer 设置
7 N. C6 i( g( l1 X& l- S9 K
登录腾讯物联网开发平台控制台,点击新建项目,$ S* v' Y# n* V! K3 w- |
$ ]: d/ m) N7 ^% P! P- R: z9 {  `8 K
20200906131249408.png

; `3 S5 B/ I( K: @- n- z$ `" p* U
然后输入项目名称和项目描述,点击保存$ h$ @: I7 ?1 a: t; e$ K2 R

( D: B6 B- V( D6 m
20200906131451432.png

! T  X( d4 e8 i( _2 _% V
0 `! l; a/ Z( Y2 W* q/ A1 z项目新建成功后我们点击其进入$ A$ E3 {7 j* _* b
0 y+ m0 Y; A7 [. K3 q
20200906131638220.png
# `, s, N2 y& U+ @' P3 T
0 B+ d2 X9 f" [: n% V" C; j! B
然后点击新建产品! U- ?5 L+ T- E: s0 f  c4 g( x6 ?0 O
/ t& C) j3 P6 ?1 N  U5 _
20200906131716387.png
0 h3 a. Q( Q7 e/ {6 K
% r: c" ]6 M/ b/ E. o$ G1 [
然后填写产品基本信息如下所示,点击保存即可$ K. q0 Y$ ^8 H% }& _! q( b2 [& A

' f8 z5 @8 I/ b2 M/ k
20200906131933438.png

, M5 v9 g$ B. I1 E# N% ^/ a% H4 B/ b) D5 l$ {! d8 g
产品新建好后,点击进入产品,开始产品配置
( g. k: q2 N' N, F+ y
, c+ M! }$ Y' ]1 ]4 S* ^
20200906132115435.png

- F' ^* [3 W4 C. a, v
( K; r: ~8 [0 R在产品配置页,点击【导入JSON】
9 x" O. A# x% Y/ I) h$ ?, V' a0 Q4 u' Z3 Q
20200906132443467.png

% f) t' P, p: w) s' d
+ Q5 Q7 d: h0 u, X8 w( {# z( ?: B5 a填入的JSON代码如下,填入后点击【导入】即可,
+ k! g: R# L7 a( ?. L8 I- Z! P5 [+ Q4 ^
  1. {
    & ~8 Z8 t- g' @8 m; a" Y: i
  2.   "version": "1.0",
    5 V1 q4 z% [) O1 x  U% B
  3.   "profile": {2 _3 S2 n$ s3 |) U
  4.     "ProductId": "F2G256SY2G",
    8 I6 L7 G- v7 H+ P4 h  I. Q
  5.     "CategoryId": "1") S7 j# A" r' \# Q1 v
  6.   },
    + l' L/ M' L1 v, Z
  7.   "properties": [
    ' v6 H2 [# S. Y# I; M
  8.     {
    8 \; x2 L- V. d; U! e* i$ m( G$ t3 O- V
  9.       "id": "temperature",6 u0 Y9 Y+ J, s7 D! T) v/ c9 [, d
  10.       "name": "温度",
    5 h+ A) J/ ~2 T, O4 l
  11.       "desc": "",
    , g/ G4 T7 d: u2 A+ z
  12.       "mode": "r",
    , G# S( j4 c8 m( b! W& w1 P
  13.       "define": {4 ~/ x7 `8 T6 t) W, i
  14.         "type": "int",
    2 m/ E" a! Z& Z  j
  15.         "min": "-100",, u) c" o7 H- L1 F" _5 w
  16.         "max": "155",* Q: O, h( [8 A
  17.         "start": "0"," c, ]# J8 y+ [
  18.         "step": "1",
    / S5 _! u# g5 @; Y
  19.         "unit": "摄氏度"9 _$ V- V0 v" t# a1 @5 B+ ?, q
  20.       },
    4 r. U6 ^) D" y6 {, M2 c
  21.       "required": false2 |0 f+ W* S6 z0 }+ V+ j; c& o
  22.     },
    8 O" x) ?- z0 E% |4 S
  23.     {
    5 ]1 \3 Y6 e& Z9 m; D1 D
  24.       "id": "humidity",# ]8 q) e% |1 |9 _8 Z* s
  25.       "name": "湿度",
    ; x6 L* J+ D" q8 X3 w) `* c) m
  26.       "desc": "",
    / V- X8 S9 O4 u7 N
  27.       "mode": "rw",
    % I$ U" i; C' A) t& f) I
  28.       "define": {/ g0 p2 Z8 ?: J& V
  29.         "type": "int",5 `4 K  U0 F( q7 k( A
  30.         "min": "0",: f, W3 h6 c2 H4 S0 A2 H
  31.         "max": "100",' c) [0 i6 A4 q+ I0 [9 z
  32.         "start": "0",
    5 @6 X1 o; `8 P' n; O
  33.         "step": "1",( @9 `. C3 S$ H) }" d6 m2 Q
  34.         "unit": "%"
    $ e- D' O( \. Q" F* I5 |' w7 U
  35.       },/ B' ^4 E5 _% t4 p' O3 R/ z
  36.       "required": false
    8 n8 R' q* l) X% R# l
  37.     },- }4 a0 o  k: H6 A
  38.     {  J4 H$ O' B% x& Q6 p, s
  39.       "id": "period",
    6 U; l- F4 A8 s% L, `7 z
  40.       "name": "上报周期",
    ' _! [( k$ L8 `, Q2 e) Q! X/ m( p
  41.       "desc": "",
    1 Y. s& [7 X' Q( k. ]
  42.       "mode": "rw",
    : J  q+ ]+ Y, w: |/ G" x3 o8 w
  43.       "define": {/ J  _4 G' l# Y' E
  44.         "type": "int",
    * n# y/ K1 L4 E* A0 [
  45.         "min": "0",
    $ X1 Q8 \' f1 m+ c5 Y
  46.         "max": "3600",
    ! C- h6 W1 B+ p+ c
  47.         "start": "0",$ U% j; H3 _$ f4 f
  48.         "step": "1",9 Y7 p' O3 N* @8 h- U
  49.         "unit": "秒"2 U; p& p) a: w: e5 X0 n" R' y
  50.       },  E0 q4 V. u6 R" g. X  Y
  51.       "required": false
    + L3 N% w3 s* _+ f8 |4 V
  52.     }
    " D( C1 @$ _  t6 L* l: K& ^
  53.   ],
    " G1 ~# l. @6 Q
  54.   "events": [],
    - Q4 g+ v( ~6 k7 @2 ^5 B
  55.   "actions": []- _: `( X, E6 M6 t8 V
  56. }
复制代码
2 n9 V8 K6 r- i- I+ K
20200906132744190.png
* k+ Y. }: Y" K% L, ^" X" A! N

+ y. T7 f+ ]3 ~+ {! K/ F导入完成后,如下所示,然后就可以点击下一步了
& ^) u" ]2 _1 W/ v2 y- U1 R) n' K, O/ g5 U9 H0 E
20200906133006655.png

2 E2 Q3 [' E  H, _% {! D
9 @8 I2 t5 U7 M1 r在上行数据解析部分中,填入如下javascript 代码:
  1. function RawToProtocol(fPort, bytes) {4 v9 A, I7 N% ?2 P, Z5 F+ `1 O
  2.     var data = {7 ]+ q6 r- \0 @3 V
  3.         "method": "report",4 y$ l6 \3 y$ I% v
  4.         "clientToken" : new Date(),
    " P1 |7 g* w* y8 o' k& B4 I+ A
  5.         "params" : {}
    : ~* J, a, m) T
  6.     };
    9 z, ]' G( |: X/ j- A
  7.     data.params.temperature = bytes[0];
      N; T  D) P# Y( l2 Y
  8.     data.params.humidity = bytes[1];
    ; B) g5 x3 J7 L  _
  9.     data.params.period = bytes[2] | (bytes[3] << 8);
    ) V2 q; g1 j" Y7 I1 Y# ?, t/ v
  10.     return data;
    % }) C) G0 D% g/ {
  11. }
复制代码
) y; w* l% [9 T. h) a; {9 n& @1 O, _/ O
在下行数据解析部分中,填入如下javascript 代码:
6 `. t9 l8 [* v1 [. Y# q$ c* ~3 m4 b2 k0 N+ s
  1. function ProtocolToRaw(obj) {# D# o% z2 w$ m: h
  2.     var data = new Array();  {) x# M+ y/ m7 R* e: z
  3.     data[0] = 5;// fport=5
    # q2 x/ r4 a% `9 \0 \1 g, v
  4.     data[1] = 0;// unconfirmed mode. q+ u8 y  k1 m. I' H/ ~2 _
  5.     data[2] = obj.params.period & 0x00FF;
      \/ w! V7 h5 d
  6.     data[3] = (obj.params.period >> 8) & 0x00FF;; Q+ g& _( U+ Z/ W/ M2 d3 J
  7.     return data;2 G' J+ W; R: d, r5 T
  8. }
复制代码
4 i+ C  k3 d2 p+ f/ D; ]
填入完成如下+ W! D7 S9 k8 z5 f  g

% s$ R: y5 d- d
20200906133509244.png

: H7 Z& w4 {; u$ _' P9 ?: Q* l. v, l- y8 H( K# b8 U
然后点击提交,进行保存
5 s2 a$ ~- a5 ^* l$ J& L* Y! ?; b( S7 g5 E
20200906133901811.png

# _8 @0 S% \- V+ ]! Y5 G) F0 }1 b
+ ^0 ?' w6 ~9 v" @  T点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;
4 }; i, R4 b/ B- O" O% `; z' I, k" U8 J( y; S0 T9 Z1 w9 F# a
20200906140115117.png

3 F) o7 U) ]% h8 S: @+ U* k
4 Z6 O+ ]3 B9 G" V三、编译程序,烧录固件
1 _5 k" ?& w/ j2 c首先从TencentOS tiny官方开源仓下载源码
0 w6 D1 P' y7 u8 p0 M8 T0 P9 q
- J" o5 u% C9 Z0 s4 N- Q" s0 D拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
( S$ D* T8 N  n0 h2 {2 ?  o' @4 x, Q5 ^  a. k7 `; I9 X
20200906134551350.png " `& ^2 D8 G$ p  N( Z

' [; n; @5 T0 H接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致7 G! @+ Y5 v" J/ V4 B/ I8 O* r

/ ~: d, q; F3 w8 J) C/ U. B
20200906141127957.png
% L9 z& k: P$ T8 i9 m5 H5 s
6 r# M4 |; ?* K0 X( b6 e6 _( i, j" P
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7" f" ~8 |% ^" `
& |" x; w0 F( W0 \
20200906143538887.png
0 \: d! \. i) ]1 }

1 O2 `: F8 N2 x/ ]7 a2 b升级完成后重新插拔一次ST-Link,接下来做如下操作+ d; \4 ~2 q0 V( o5 q& T0 j

& J+ Q0 P% o# Y# C' F! a
2020090614395784.png
" g' R$ V7 k/ `5 A& |

5 q/ s4 D0 ~, M& _6 a; n) G然后再重新插拔ST-Link,编译链接下载即可成功:
8 F, j- p* W9 a7 m( A$ n2 w% r) o" T# v) i: _7 }) l/ d/ l  H
20200906144251679.png
; v+ o9 i5 _+ x5 w% j
" _% ^/ Z4 C$ ~  y

: O; u( s6 g+ F' q& p
收藏 评论0 发布时间:2022-1-4 11:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版