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

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

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

! L) ~1 s6 I+ v- u/ L7 J" c% O2 H/ A4 p
照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000+的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜,性能和可靠性嘛.......就不多说了,上位机软件也是烂的一塌糊涂。) d+ C3 y# N3 z4 a+ D6 Q0 d# @
4DUV123O_%TRU1NNTA][P.png
% v% N& }1 N6 d# t

0 n9 j9 f' r6 W& C这里推荐一个国外的炒鸡好用的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱,且支持Python。
! X) v9 r% _% s, T而且远不止于此,经过我不断探索,在gitlhub各个大神仓库各种折腾。
- ^/ Y+ d2 h+ G) M我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富。

- u1 [. y& Z8 `而且主芯片STM32F042/72支持USB DFU,可以通过USB直接更新固件,无缝切换多种上位机。
1 f! H9 l/ ~/ l2 R8 P  t/ |

. D9 |) T( b8 R1 Q& u' X% b

首先先看硬件项目


% h# |! J, \5 k6 j1 W) z3 [. B这个不带隔离的硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。
9 P% y8 j. A4 n9 Y  N% _8 s: R可惜的就是这颗stm32f0芯片现在价格涨得有点离谱了,之前在JLC打样做了几块,主芯片就去到40多大洋,加上pcb和smt,打样成本差不多投到100左右吧。

( O0 m1 H: y0 i3 i后来发现某宝上已经有商家把canable作出产品了,带隔离的价格也才100多,还带外壳配件,果断买了一个试试,某宝搜“开源 canable”就能找到,早知道就不用费劲自己打板了

1 {; }* S1 z) m6 p' X但是某宝上买的只提供了默认固件的相关资料,经过我不断探索,在gitlhub各个大神仓库各种折腾。
; z6 X6 D, k5 z  t% q; Z  ?6 R0 L
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富,可以说可玩性极高。我甚至怀疑很多某宝和咸鱼上的山寨PCAN就是canable换了一个壳子和固件而已!!!
0 A& K# d+ T. X/ O1 |8 t/ s
6GL)[ZUAUYM%B@[GEQ~0V5X.png
, p5 ?, G2 O3 @- E/ g: J7 ~5 e
9 u& f7 C# I" |1 ~
重点还是固件,第一个先说重磅的,PCAN固件: J9 i6 t" a3 S' j7 [% V
我会在附件里打包我编译好的代码和二进制文件可以直接USB烧写

9 l8 _( j+ `& W5 h9 f" f7 R/ z; x烧写PCAN固件之后,CANable摇身一变就成了PEAK CAN-USB,直接可以使用PEAK的官方驱动以及软件(pcan-view/ pcan-explorer 5),甚至基于peak开发的其他二次开发软件(比如国内的一些新能源车上位机,奇瑞,北汽这些)。
) ~9 a$ M5 A/ o$ V5 b5 l8 S目前使用下来和原装PCAN的兼容性还是相当不错的,但是注意不要用于ECU/PLC程序刷新,程序下载到到中途会出错,这个问题还需要进一步优化。但是想想原装PCAN动辄2000的价格,100多块钱的canable加上这个PCAN固件是真的香啊。
; R# m7 K) e* X3 B( q

- c+ g: u  j' i" @  a

' g- v$ m7 L6 ^8 p/ k0 ^! ?( _2 N$ p/ I" W% s5 i
()~Q@[XFIFJ~0IO8ETOH5YI.png
3 A9 b" P% d$ t
@1KG62[9(]CKBBQ]7VFFAAL.png
/ i1 `8 c9 k6 z$ c* y/ \
; P% [8 k" f/ G: r
$ u  b/ j* ?! U( P
介绍第二个固件是canable的默认固件candleLight_fw

* p4 G) E1 X* Q) Y这个固件功能也蛮强大,采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN。- `& e% x9 C! o7 S
支持windos和linux Stock can并且都免驱,且支持Python。
5 u: X, x" i2 p! xlinux下使用和PCAN一样都是内核自带驱动,支持SocketCAN 非常适合用一些开源的can的工具和库进行二次开发。

# i0 }( [3 q2 g7 ]" ^2 R2 McandleLight固件的图形化上位机叫做cangaroo。
' j/ Y/ ]. l) |" u% [4 Lcangaroo是candleLight固件专用的、简单易用的can总线调试软件,麻雀虽小五脏俱全,对于一般的can调试开发完全够用,而且专门针对汽车逆向工程增加了通过can id分类接收到的can数据帧,并且当某个id的数据帧活跃时会进行高亮显示以便于观察分析。

( \8 c( \) c8 |9 R* n( U* \0 n3 I
NRYP{]IBZU`(2QM%D)WKC87.png
' }7 c) w2 D3 u" a* d+ f1 S
4 L( o& I3 W2 ]9 L+ c# J# K# @
        支持Windos/Linux (Ubuntu发行版本)$ }& ~1 y' g+ j# z5 \* u2 `
        最大支持同时接入32个CANable模块
4 D! V# _7 F/ ]$ z# e        数据帧时间戳6 Z5 J, o( q# D4 }$ E2 H
        支持数据日志保存
0 G' A, c, |* J$ V+ @8 t1 u8 e        支持CAN DBC 文件协议解析3 e6 e0 S9 ~; @2 }3 Q1 A
        软件绿色免安装
  E$ o* y, W( L5 N# ~* W2 ?
candleLight固件还支持BUSMASTER(这个也就很厉害了,用过的都懂),BUSMASTER是一款功能强大的专业级CAN总线调试软件,不仅能够应对一般的CAN调试开发,还一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件。BUSMASTER已被RBEI概念化,设计与开发,同时基于CANvas软件工具。
3 z5 \( y$ _$ s* E1 f: l2 s不过candleLight固件需要下载增加BUSMASTER增加了cantact设备支持的版本。

' }8 O9 X5 R0 J2 p. m& y, S; Q6 S8 [
Q0TQ@EJK@AIILMXQJXIHBYT.png
! B8 Q) B, R( `- k$ O. a( h9 q. o
4 V9 j8 N" m+ A- r
YSGI$AO])9G7V])8}OFAN_0.png
) o7 O+ [4 |! G. s2 |; j; F
6 x. _3 Y9 X; M1 e. J

; O& K% ^) w5 H6 ]虚拟串口转can的Stock slcan固件
, Q7 g" G6 l3 ]  z, j$ ~- x对于很多不熟悉usb编程,还是需要串口协议转can的小伙伴,slcan固件就正好满足需求,CANable通过烧写slcan固件。该固件枚举为Linux、Mac和Windows上的标准串行设备。CANable可以很容易地通过重新烧写固件,在Linux中枚举为本地can设备,在Windows中枚举为通用串口设备。

& x% f  P- K4 \: c在Linux上,CANable原生地与slc一起工作,因此您可以使用所有标准的can-utils命令行工具,甚至Wireshark来与总线交互。

" c" a. _! h5 Z) Y在Windows和Mac上,CANable可以和cantact-app一起工作。这是一个简单的Java应用程序,可以实时显示CAN流量,并允许您在总线上传输消息。
9 H$ l2 F; ]1 u9 C
8 ~, @. I% K# n5 H6 T" ]

) I- M' }, K, _4 m3 \; r

固件烧写方式


; o$ V0 q; k9 s9 C5 i: t$ ?; aweb在线烧写固件
- i+ ^8 x- Y" H3 Y如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件,我会在附件资料提供相应的软件和文档说明,并提供编译好的几个固件。
5 G1 Q+ Z- m0 Y2 L2 ]
这个真的超级方便了,意味着你不需要任何烧写器或者准备任何固件编译的环境,只要有谷歌浏览器,就能随时随地切换固件,是不是很强大!
2 b! [' `  c/ F3 [6 j5 y3 S; V. o
用谷歌浏览器打开这个页面,把canbale的DFU拨码开关按下去,在用USB连接电脑。选择需要烧写的的固件类型,再点connect and update就可以直接通过网页进行烧写。

8 @6 ^. j6 [, r  I4 U( c, i1 o* R# E0 t; h$ Q" t4 D" v5 ~
)6JVSJ8NT64Z}DUBVI$`7RO.png

) ?3 L2 d2 N1 |. p+ V: Q
) ?; j1 B6 s4 n+ o& F6 c4 s  P
Z1H%{FH07NSA8TFWQST8G@U.png

* h2 ?" G0 [( W- Y) K1 {- |' H
; Y& n: u, X9 o9 k. h4 A; e3 R/ }! f8 J5 ^4 B
注:这个网页上只能烧写canable的官方固件,自行编译的固件无法烧写(现在该页面已经支持烧写PCAN固件了!给力)。3 |( A, E) `, J9 Y
USB DFU-util烧写固件( s3 A, x' y, Z4 Z3 w6 d
解压后,将编译好的.bin文件拷贝到解压后的目录
2 d. F( U* d6 I: q6 u$ h% M2 ~创建一个文本文件,拷贝以下内容进去,注意candleLight_fw.binary 为要烧写的bin文件,需要改成需要烧写的文件名。然后把这个文本文件保存为flash.cmd

+ _" p8 R0 f" W6 \/ V; Y
  1. dfu-util --dfuse-address -d 0483:df11 -c 1 -i 0 -a 0 -s
复制代码

5 }7 |' {9 H4 q/ lcanbale的DFU拨码开关按下去,连接电脑USB线会识别成“STM32 BOOTLOADER”
& e" }, I( q: D' O识别成功后,双击运行之前创建的flash.cmd文件,会看到开始烧写的进度,如下就是烧写完成了( B' A* y7 S7 u% U) W. K

  1.   C' J9 o# f" V
  2. Download        [=========================] 100%        36108 bytes
    % P7 t2 }$ J. V0 r& _0 Q8 p
  3. Download done.
    7 t" o  Z  O/ S
  4. File downloaded successfully
复制代码
  Y4 d$ o! t; Y! O. i8 A
相关固件和文档已经上传到公众号后台,感兴趣的童鞋可以回复关键词:UC,即可获取下载链接。+ R  v; e! d* B6 N. O
! j* I1 O, H  G4 k

~END~

& S5 Z; b6 A1 t/ Z7 Q4 R

4 K* c' i# D/ v8 `
I`X($0JUQ)Y$91_DHGG[TFL.png
收藏 评论0 发布时间:2021-11-7 17:14

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版