不得不说ST配套的生态还是不错的。
1 h; g) }9 U' X' }# |+ c$ B: Q/ p7 h, O9 o u/ h& }4 z* c3 c6 F$ v
随电机评估板一同推出的两个工具,一个是MOTOR PROFILE, 一个CONTROL WORKBENCH工具,能帮助我等菜鸟更快的入门。
8 }3 F/ E) f* a: Z
+ c+ N2 P5 d5 |, d) VMOTOR PROFILE工具提供了快速检测电机参数的功能,可以在ST的套件中选择相应的硬件,然后检测电机的硬件参数,不过也只能从已有的型号中选择,如图是IHM002套件的硬件组合$ K, y1 s- l- x8 i( n$ d9 G
0 o7 l) n& o9 v$ z. j) \# D8 C! e
6 @: U" ^9 x0 z; O; D1 c+ K
' |8 X8 o: J% e8 @, b ]" ?只可惜我的底板换成了F303,不知道可不可以检测出来,姑且一试, 连上PC端后,先选择硬件类型,咱就选F302来试,先CONNECT,幸运的是连接上了,然后点击START PROFILE,电机也开始转了,下面是检测到的参数
3 D# d8 w* [6 C# Q7 ~
) l& L" t/ s: H
) p% O1 L( U# a9 y! n1 F- n
3 A/ x4 b4 @# L ?( {- t1 _# x$ P7 t5 E0 X( T" |% O) H6 Q( E
没有问题。
' a9 V; j* Q6 d$ W; G
/ E t" `1 _8 N3 b9 T一点猜想:不管是MOTOR PROFILE也好,WORKBENCH也好,都是使用的UART与设备通信,只要设备的固件跑起来了,这些工具才不管你是303还是302,他们只负责把命令发送过去,然后啥命令就执行啥动作,下面是截取的一些通信命令控制码,如下3 t& d& `8 k8 Q8 q' ^% @/ Z
% C3 z7 o# o, ?/ ~. N
- #define MC_PROTOCOL_CODE_SET_REVUP_DATA 0x090 q; h. P% F Z/ u
- #define MC_PROTOCOL_CODE_SET_CURRENT_REF 0x0A
+ W6 n" Z: w7 b7 r; x1 ?6 C: G6 c - #define MC_PROTOCOL_CODE_GET_MP_INFO 0x0B
! u6 l6 t u4 l; F- o$ S% r) d2 d - 0 C% ~( m: D Y4 j- l) n- A6 z' I
- #define MC_PROTOCOL_CMD_START_MOTOR 0x01
D$ s( N7 |* X - #define MC_PROTOCOL_CMD_STOP_MOTOR 0x02 L0 L J L; T6 O4 y% z
- #define MC_PROTOCOL_CMD_STOP_RAMP 0x038 b' l# }( N7 R" P. `9 m
- #define MC_PROTOCOL_CMD_RESET 0x04
8 V9 C; s' u* ^8 t: [* X( W# a. z - #define MC_PROTOCOL_CMD_PING 0x05
$ K% S D1 N& D, k5 c' c" N - #define MC_PROTOCOL_CMD_START_STOP 0x066 ~" ~) Y+ f K; U: |( M
- #define MC_PROTOCOL_CMD_FAULT_ACK 0x07
5 M/ ^( }, f2 G7 t6 ^2 B: I - #define MC_PROTOCOL_CMD_ENCODER_ALIGN 0x08- G) t9 {" U g! U9 S. G
- #define MC_PROTOCOL_CMD_IQDREF_CLEAR 0x09
9 V: _, d9 x+ `9 `; K - #define MC_PROTOCOL_CMD_PFC_ENABLE 0x0A
3 h: I" z# |8 E( d$ V4 | - #define MC_PROTOCOL_CMD_PFC_DISABLE 0x0B: M7 p* ~$ s9 y2 }8 L
- #define MC_PROTOCOL_CMD_PFC_FAULT_ACK 0x0C
! f; S. w5 r1 ^ Y) | - #define MC_PROTOCOL_CMD_SC_START 0x0D. N, i7 E( n6 x3 O0 v0 `3 n. @
- #define MC_PROTOCOL_CMD_SC_STOP 0x0E
5 a9 }4 H5 y! o: N* ^/ {5 y& z - - A" p! c" a; c2 N( ^
- #define GUI_ERROR_CODE 0xFFFFFFFF- h2 G, T3 ]& d; W
复制代码
8 e3 ^. ~3 I+ k& c K$ U# g, ?# S
2 T& @9 o+ C- C2 a3 x0 h" |3 h! l开发板接收到这些命令,然后就去执行,比如停止或启动电机,与MCU无关!
$ |- x/ e. `" Q. [; z0 z+ w5 n: _" V; f5 A1 X! r% X( e
再进一步设想,如果找到了上位机与电机套件之间通信的控制协议格式,自己也可以写一个类似的工具出来,欢迎大家一起来研究
. d$ Y! N1 z. m. x- c3 d3 j2 A' V4 E* o
3 k. t- _9 p& m4 I |