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

【经验分享】分享一个超棒的stm32的开源usb-can项目

[复制链接]
STMCU小助手 发布时间:2021-11-7 17:14
I`X(JUQ)Y_DHGG[TFL.png

# W0 j6 Y. n  F% x5 X3 U# u/ l5 E( C
6 O  S$ \4 d6 {7 j5 I0 I3 i照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000+的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜,性能和可靠性嘛.......就不多说了,上位机软件也是烂的一塌糊涂。/ k: w$ ?/ k( s; ]
4DUV123O_%TRU1NNTA][P.png
% k0 Q4 D  a2 O0 {- c7 E5 Y

4 L& T- c: q/ Q) \7 q5 s这里推荐一个国外的炒鸡好用的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱,且支持Python。/ h6 V# n2 @5 Q4 W1 \1 l7 ]
而且远不止于此,经过我不断探索,在gitlhub各个大神仓库各种折腾。1 R* @2 F- Q4 C9 {6 q* f5 j2 T
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富。

7 J. @  p/ ?# f& x) v% l4 ~而且主芯片STM32F042/72支持USB DFU,可以通过USB直接更新固件,无缝切换多种上位机。
0 k& R9 \$ M0 t" |5 |" g8 b8 b

6 Z+ n: |( M( _

首先先看硬件项目


( r9 V4 r% w. P. r4 Z这个不带隔离的硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。, e$ a* Q0 w. c+ c; t
可惜的就是这颗stm32f0芯片现在价格涨得有点离谱了,之前在JLC打样做了几块,主芯片就去到40多大洋,加上pcb和smt,打样成本差不多投到100左右吧。

6 j& x3 G. R# b% q+ L# g2 @后来发现某宝上已经有商家把canable作出产品了,带隔离的价格也才100多,还带外壳配件,果断买了一个试试,某宝搜“开源 canable”就能找到,早知道就不用费劲自己打板了
。
- w5 S: J5 x9 p9 ]但是某宝上买的只提供了默认固件的相关资料,经过我不断探索,在gitlhub各个大神仓库各种折腾。

6 J3 T8 ^9 S5 C' ]我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富,可以说可玩性极高。我甚至怀疑很多某宝和咸鱼上的山寨PCAN就是canable换了一个壳子和固件而已!!!
+ F3 s' H0 L8 F/ i
6GL)[ZUAUYM%B@[GEQ~0V5X.png

, ^- F/ k/ ?' g- n: z7 @) {8 ~- f/ K' ~0 w
重点还是固件,第一个先说重磅的,PCAN固件!
7 Y& K  p! X0 a5 x6 q, n+ u我会在附件里打包我编译好的代码和二进制文件可以直接USB烧写

6 T1 U  o. R0 Q7 C* u. u3 ~. r6 o烧写PCAN固件之后,CANable摇身一变就成了PEAK CAN-USB,直接可以使用PEAK的官方驱动以及软件(pcan-view/ pcan-explorer 5),甚至基于peak开发的其他二次开发软件(比如国内的一些新能源车上位机,奇瑞,北汽这些)。# J5 q! q! {$ Q& x9 j
目前使用下来和原装PCAN的兼容性还是相当不错的,但是注意不要用于ECU/PLC程序刷新,程序下载到到中途会出错,这个问题还需要进一步优化。但是想想原装PCAN动辄2000的价格,100多块钱的canable加上这个PCAN固件是真的香啊。

$ H: V5 O! s5 ?5 d  {- T  ^* J  I  z; i" m
0 X, j% V+ J1 @$ p0 Y9 W/ O9 ~
8 L8 b5 |( R# Q# ?# M) G8 ]$ N. Q
()~Q@[XFIFJ~0IO8ETOH5YI.png

5 U6 ^+ J& K+ z" J9 A7 d7 p- D
@1KG62[9(]CKBBQ]7VFFAAL.png
! i7 ]/ g, w1 E4 e1 b% ]

; L1 X- p% C: v7 J' ?5 U
& U$ U. _& _) P
介绍第二个固件是canable的默认固件candleLight_fw

2 X: T9 k& K( S1 [4 J6 _这个固件功能也蛮强大,采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN。0 ^/ E4 B4 R! {2 c- {3 W6 a, l$ W
支持windos和linux Stock can并且都免驱,且支持Python。/ _" W& X7 s/ h: f; k
linux下使用和PCAN一样都是内核自带驱动,支持SocketCAN 非常适合用一些开源的can的工具和库进行二次开发。
, ~+ a7 E' B( e9 Y5 o1 v) ]
candleLight固件的图形化上位机叫做cangaroo。
: {4 H5 C: t6 X# F" {6 {cangaroo是candleLight固件专用的、简单易用的can总线调试软件,麻雀虽小五脏俱全,对于一般的can调试开发完全够用,而且专门针对汽车逆向工程增加了通过can id分类接收到的can数据帧,并且当某个id的数据帧活跃时会进行高亮显示以便于观察分析。
. E" [4 Q8 }- J0 R5 N4 o
# a& R0 C& F5 W3 b5 Q' [
NRYP{]IBZU`(2QM%D)WKC87.png
# B6 D# b: n: P! @
& \9 W+ ~) k4 H4 m4 O1 H% Y; {9 _9 ~) j
        支持Windos/Linux (Ubuntu发行版本)% U4 g4 l7 z0 F
        最大支持同时接入32个CANable模块( Z4 E- q+ I+ u& z- {1 D$ D' A
        数据帧时间戳& n5 d. V( A' a1 d& \
        支持数据日志保存
8 B+ B$ O3 k$ [, C  K0 o! f8 q        支持CAN DBC 文件协议解析
2 g9 H+ ~; r. D- K. j5 R        软件绿色免安装
; i5 J7 R+ K/ n& b) k
candleLight固件还支持BUSMASTER(这个也就很厉害了,用过的都懂),BUSMASTER是一款功能强大的专业级CAN总线调试软件,不仅能够应对一般的CAN调试开发,还一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件。BUSMASTER已被RBEI概念化,设计与开发,同时基于CANvas软件工具。- }; u0 B6 g% c  _
不过candleLight固件需要下载增加BUSMASTER增加了cantact设备支持的版本。

3 C7 V. b( }- H9 b( H; W. M
: |7 R. b* V! G! I& F( U  P! R/ \- O
Q0TQ@EJK@AIILMXQJXIHBYT.png
) m3 _8 v. D3 I- ?# `1 U' V1 h  R- k% t
/ o, Q- r  |; ^) ^2 z
YSGI$AO])9G7V])8}OFAN_0.png
6 @' L( U3 E, T4 Y
7 B, x& R$ x4 t4 A$ s

* g# Y, a% ?- V/ {( l虚拟串口转can的Stock slcan固件% @; P- E- z) X0 ]* j5 p
对于很多不熟悉usb编程,还是需要串口协议转can的小伙伴,slcan固件就正好满足需求,CANable通过烧写slcan固件。该固件枚举为Linux、Mac和Windows上的标准串行设备。CANable可以很容易地通过重新烧写固件,在Linux中枚举为本地can设备,在Windows中枚举为通用串口设备。

& ?# C/ S9 V: H0 I" t+ S& @在Linux上,CANable原生地与slc一起工作,因此您可以使用所有标准的can-utils命令行工具,甚至Wireshark来与总线交互。

% M3 I( S, O2 [- y* ~5 }在Windows和Mac上,CANable可以和cantact-app一起工作。这是一个简单的Java应用程序,可以实时显示CAN流量,并允许您在总线上传输消息。

. U. j! y! m3 j) e
; r: m% j4 ?2 s. S; @9 `6 r+ R. R9 _! s, P2 A4 ^, j0 P9 N

固件烧写方式


" P+ c) d$ P+ Q4 x* o1 |web在线烧写固件
9 [9 }6 A8 R$ G7 i4 v/ f5 t如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件,我会在附件资料提供相应的软件和文档说明,并提供编译好的几个固件。

7 E3 }( ?5 w0 p8 v9 O: p这个真的超级方便了,意味着你不需要任何烧写器或者准备任何固件编译的环境,只要有谷歌浏览器,就能随时随地切换固件,是不是很强大!
/ q0 f. x, \3 K6 d
用谷歌浏览器打开这个页面,把canbale的DFU拨码开关按下去,在用USB连接电脑。选择需要烧写的的固件类型,再点connect and update就可以直接通过网页进行烧写。

/ @# W0 ?: S  ^2 v, s, @% g. i) U
# ^8 j$ z( O5 x5 V
)6JVSJ8NT64Z}DUBVI$`7RO.png
) Z0 i9 s! x! y& y2 H6 |

" P5 E6 f- j) ~4 x/ f# G
Z1H%{FH07NSA8TFWQST8G@U.png

* J( d9 o* R. r/ N
0 s$ Y& A2 ~( d  G7 h5 x# A; ~: q  u7 ^  G; U
注:这个网页上只能烧写canable的官方固件,自行编译的固件无法烧写(现在该页面已经支持烧写PCAN固件了!给力)。( |+ u, N0 b+ O# Y6 v" [8 O
USB DFU-util烧写固件
! P0 ?$ j* B1 _. I" ~( a& o" E解压后,将编译好的.bin文件拷贝到解压后的目录
$ N. Z( p/ L% w创建一个文本文件,拷贝以下内容进去,注意candleLight_fw.binary 为要烧写的bin文件,需要改成需要烧写的文件名。然后把这个文本文件保存为flash.cmd
2 x% Z( g9 I6 H# x0 I
  1. dfu-util --dfuse-address -d 0483:df11 -c 1 -i 0 -a 0 -s
复制代码

2 S7 `* [4 |) U' m. t5 ccanbale的DFU拨码开关按下去,连接电脑USB线会识别成“STM32 BOOTLOADER”
! I7 H$ I. k0 ^1 M* J9 v识别成功后,双击运行之前创建的flash.cmd文件,会看到开始烧写的进度,如下就是烧写完成了
( Q* f9 M8 l1 T8 c6 b0 x

  1. " A) m0 j: B# I  O$ Z7 ^
  2. Download        [=========================] 100%        36108 bytes& A/ r: l& C3 ]; U' }
  3. Download done.
    9 W/ I( |& m* O$ W% S) |0 d  K3 |! a
  4. File downloaded successfully
复制代码

9 h; G9 P, F$ c4 \3 l相关固件和文档已经上传到公众号后台,感兴趣的童鞋可以回复关键词:UC,即可获取下载链接。
& b3 V1 P* C( @: B" U$ l
  s* X8 S9 {2 h

~END~


% s+ `4 Z) x, H* ~2 }
- U! ^# j; }2 J7 ^2 n
I`X($0JUQ)Y$91_DHGG[TFL.png
赞 收藏 评论0 发布时间:2021-11-7 17:14

举报

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