不得不说ST配套的生态还是不错的。1 r% w" y+ E9 T5 C$ Q; e" N2 L6 l# J
. ?: A/ z# H+ u/ G8 ^! w5 Z! t( _
随电机评估板一同推出的两个工具,一个是MOTOR PROFILE, 一个CONTROL WORKBENCH工具,能帮助我等菜鸟更快的入门。% l2 l* d, X0 n4 p. w6 G2 y6 a- H
6 Y4 {- P7 `( H( L* j( p
MOTOR PROFILE工具提供了快速检测电机参数的功能,可以在ST的套件中选择相应的硬件,然后检测电机的硬件参数,不过也只能从已有的型号中选择,如图是IHM002套件的硬件组合, T+ v5 l( I- E+ p+ y$ T, ]
( M2 r$ [7 ~5 t4 B# ]. M. _, ?
3 L! b. v. X- @, ~* a+ Y; Q
% ^, X8 ]0 Y6 d4 R; P只可惜我的底板换成了F303,不知道可不可以检测出来,姑且一试, 连上PC端后,先选择硬件类型,咱就选F302来试,先CONNECT,幸运的是连接上了,然后点击START PROFILE,电机也开始转了,下面是检测到的参数! @6 L' D( W/ q# i8 {
" N* i8 X, E0 e6 W
5 Y1 H( g& E" s8 X# Z- K9 H
: S1 |$ N0 Z& H( W! s6 \2 \/ u$ H+ L! r% C- |
没有问题。5 N8 I6 d3 }' |7 z+ X; ^/ j
+ _( L2 A4 Z+ }一点猜想:不管是MOTOR PROFILE也好,WORKBENCH也好,都是使用的UART与设备通信,只要设备的固件跑起来了,这些工具才不管你是303还是302,他们只负责把命令发送过去,然后啥命令就执行啥动作,下面是截取的一些通信命令控制码,如下
% q/ n( R! e) m: H
4 U* |9 z& H8 {. i7 J3 t- #define MC_PROTOCOL_CODE_SET_REVUP_DATA 0x09
& G5 A# a5 c. r0 i" e - #define MC_PROTOCOL_CODE_SET_CURRENT_REF 0x0A
, e2 m6 J" N/ V9 c3 h2 ?! x: J - #define MC_PROTOCOL_CODE_GET_MP_INFO 0x0B) g% c) A6 {, C5 Y! s
- $ P3 {3 q7 S& j
- #define MC_PROTOCOL_CMD_START_MOTOR 0x01
C6 G; u0 d; c+ j. l) j, C - #define MC_PROTOCOL_CMD_STOP_MOTOR 0x021 v- \+ z4 H9 f% G$ W! v1 @) F
- #define MC_PROTOCOL_CMD_STOP_RAMP 0x03
/ H a+ t. E. I5 o( Y6 g3 f, f0 `1 U. ^$ r - #define MC_PROTOCOL_CMD_RESET 0x04
- |& {9 v5 d! s8 O( D7 i$ I: } - #define MC_PROTOCOL_CMD_PING 0x05
: i6 E# X% d8 M' K - #define MC_PROTOCOL_CMD_START_STOP 0x06
0 R0 f4 N k& c3 G2 N - #define MC_PROTOCOL_CMD_FAULT_ACK 0x07
, f: I: u0 k' P# }( e4 Y9 |) V* B- S - #define MC_PROTOCOL_CMD_ENCODER_ALIGN 0x08
' S" \" z( f* L' z - #define MC_PROTOCOL_CMD_IQDREF_CLEAR 0x09 b+ E: N0 y3 k0 A
- #define MC_PROTOCOL_CMD_PFC_ENABLE 0x0A
) K- l: V! I# s8 m; p, r1 g4 k - #define MC_PROTOCOL_CMD_PFC_DISABLE 0x0B
* D% @' d+ q1 O! J# V - #define MC_PROTOCOL_CMD_PFC_FAULT_ACK 0x0C) X/ M1 L( {( L! ^2 J1 p
- #define MC_PROTOCOL_CMD_SC_START 0x0D
0 ~& C$ k$ R4 ^5 `0 y# T% L - #define MC_PROTOCOL_CMD_SC_STOP 0x0E! R+ w5 C, H- j1 s$ b
- - Q9 [4 T/ q" u( m. B* N
- #define GUI_ERROR_CODE 0xFFFFFFFF/ g# X$ V8 Y0 f
复制代码
* `5 \1 X4 s I3 Y7 O Q% e0 k* O4 s% H( x- ^
开发板接收到这些命令,然后就去执行,比如停止或启动电机,与MCU无关!
6 z& f' W! e! H5 N& H8 C
E6 h( I6 o& D1 b( W2 E再进一步设想,如果找到了上位机与电机套件之间通信的控制协议格式,自己也可以写一个类似的工具出来,欢迎大家一起来研究& h5 f/ M* O* g/ `
/ o- Z" k, n, H4 v. a0 a) }
4 r& [7 D2 B! l$ ?; g2 a" a/ M0 ? |