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

基于stm32开源usb-can,canable经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-15 15:32
照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000+的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜,性能和可靠性嘛.......就不多说了,上位机软件也是烂的一塌糊涂。
. f! T" z# b9 Y. F; V' N
' \, [9 ~. ]* [9 \6 v 微信图片_20230415153406.jpg
8 l4 ]6 v6 q- [2 a! _; n" N) s, A  U5 f3 X& \/ u% o
这里推荐一个国外的炒鸡好用的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱,且支持Python。' Y/ P" \: `0 y! G

7 z! I( M2 S4 z# i0 \) o2 a; D

6 q% o5 s7 Z, V# C而且远不止于此,经过我不断探索,在gitlhub各个大神仓库各种折腾。, D7 `' n$ x5 ]2 ~/ Y, G' E
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富。/ f# M& ]/ n) _3 u& l0 K3 G

- a2 i8 e* m9 U/ s* W4 q

. q3 c) u. S3 K! W  G! j而且主芯片STM32F042/72支持USB DFU,可以通过USB直接更新固件,无缝切换多种上位机。
3 z  y5 `6 u  b/ u0 @5 N, P' H7 s6 S- b, A% K4 X# K/ Z
0 S! J- j' H) M. H
首先先看硬件项目) b5 k* `) A, I: {7 f5 a2 H
5 S" }& t4 B+ p# ?$ D/ C6 m
这个不带隔离的硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。
5 u8 Z5 O7 U4 e8 U$ A5 ~
9 C% _9 G/ l$ u# y, V8 m: H! U( \
可惜的就是这颗stm32f0芯片现在价格涨得有点离谱了,之前在JLC打样做了几块,主芯片就去到40多大洋,加上pcb和smt,打样成本差不多投到100左右吧。3 x* s4 n" o' Y, Y) `( r/ m4 X# d

$ i# P2 o. y! Y% I8 {
后来发现某宝上已经有商家把canable作出产品了,带隔离的价格也才100多,还带外壳配件,果断买了一个试试,某宝搜“开源 canable”就能找到,早知道就不用费劲自己打板了。# A: u1 ^$ b7 ~) |3 Q

7 o' Z( ?* N6 M9 o$ q
但是某宝上买的只提供了默认固件的相关资料,经过我不断探索,在gitlhub各个大神仓库各种折腾。3 T1 D1 S& {) i2 M% v- `
) q& A4 u; I( j
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富,可以说可玩性极高。我甚至怀疑很多某宝和咸鱼上的山寨PCAN就是canable换了一个壳子和固件而已!!!( @4 M" i5 }* J$ S0 [2 H
5 q& q1 ]0 Z8 r& k, n2 \' {4 }  O
微信图片_20230415153419.png 5 d: x# ^4 `4 h4 q
, \" o2 i" v4 A+ W' G& z
重点还是固件,第一个先说重磅的,PCAN固件!
: X9 G0 c6 v) Z. Q* l9 l5 S+ C$ s5 H8 F; I
我会在附件里打包我编译好的代码和二进制文件可以直接USB烧写
$ ?) v1 m% f0 v  J, `+ k8 l; {; S. f, A5 L- P) z" S
烧写PCAN固件之后,CANable摇身一变就成了PEAK CAN-USB,直接可以使用PEAK的官方驱动以及软件(pcan-view/ pcan-explorer 5),甚至基于peak开发的其他二次开发软件(比如国内的一些新能源车上位机,奇瑞,北汽这些)。7 r; U$ C& s, ^! d* d
. A& D* Z7 C1 x/ f
目前使用下来和原装PCAN的兼容性还是相当不错的,但是注意不要用于ECU/PLC程序刷新,程序下载到到中途会出错,这个问题还需要进一步优化。但是想想原装PCAN动辄2000的价格,100多块钱的canable加上这个PCAN固件是真的香啊。
" g8 P2 K  _) ~. O6 B6 X3 t9 Q
  D$ N( v$ B+ u$ [ 微信图片_20230415153422.png 1 s1 [1 D& N* g# r! S6 j& R" _
微信图片_20230415153426.png
! X) T( v. I- E- H& X+ B: e: b8 I2 C! M% D0 R) b
微信图片_20230415153430.png
6 P2 E$ L, E4 u  p, J
( H$ d) e1 F! W4 ?
这个固件功能也蛮强大,采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN。- A. [( D% U) D. Z' z0 F& d

1 ]0 z0 L  F% P5 ]) l' D支持windos和linux Stock can并且都免驱,且支持Python。
5 k) o  P- Q9 [, f0 ^6 O$ mlinux下使用和PCAN一样都是内核自带驱动,支持SocketCAN 非常适合用一些开源的can的工具和库进行二次开发。3 V( z, n- K$ y0 N

( [  K5 t# ?) a, g: U+ F  `candleLight固件的图形化上位机叫做cangaroo。. P' N6 U. Q: V" W
cangaroo是candleLight固件专用的、简单易用的can总线调试软件,麻雀虽小五脏俱全,对于一般的can调试开发完全够用,而且专门针对汽车逆向工程增加了通过can id分类接收到的can数据帧,并且当某个id的数据帧活跃时会进行高亮显示以便于观察分析。
; ]% X9 T# w5 D( n5 Q- K5 i
& t- S6 n! {! ?4 x4 D& c7 |+ X# H- \ 微信图片_20230415153433.png 4 W  h/ X" z; Z; L
3 T# }6 V9 h$ J* Z4 O

2 l# y! r1 ^) m$ U. r4 c; P1 m        支持Windos/Linux (Ubuntu发行版本)
. o' L& [: @" m        最大支持同时接入32个CANable模块
3 p. _4 f$ R; Z7 _1 K1 e2 J$ H        数据帧时间戳/ P/ I8 p- _9 s3 Y0 T# s
        支持数据日志保存/ w7 \% ?: U2 J* ~1 z& F5 I4 w6 M7 l1 ~
        支持CAN DBC 文件协议解析
' _+ A0 @! K% h        软件绿色免安装
& A$ E' R* M/ Q8 w2 l- \8 t8 r( e$ _+ M) c: l6 F' ~
candleLight固件还支持BUSMASTER(这个也就很厉害了,用过的都懂),BUSMASTER是一款功能强大的专业级CAN总线调试软件,不仅能够应对一般的CAN调试开发,还一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件。BUSMASTER已被RBEI概念化,设计与开发,同时基于CANvas软件工具。
% @8 h; h$ y! w3 ]
3 ]9 m4 I' n0 h4 Y; }, B) o& }4 g
不过candleLight固件需要下载增加BUSMASTER增加了cantact设备支持的版本。$ j: R* C2 |3 ]* L- j
$ h% D) `8 X$ n  }
微信图片_20230415153437.png
& Z6 D3 I7 a, i4 X, r% X2 ]
, d1 M+ [( L: k 微信图片_20230415153440.png 4 r) A3 Y3 n% ~
; s, u" L: a. X( |: \5 j, c# T
虚拟串口转can的Stock slcan固件! L$ [, C, B1 N! ~: b: B
对于很多不熟悉usb编程,还是需要串口协议转can的小伙伴,slcan固件就正好满足需求,CANable通过烧写slcan固件。该固件枚举为Linux、Mac和Windows上的标准串行设备。CANable可以很容易地通过重新烧写固件,在Linux中枚举为本地can设备,在Windows中枚举为通用串口设备。
/ W/ p" h) H) r6 S( s9 n9 I) }! s8 P/ q
在Linux上,CANable原生地与slc一起工作,因此您可以使用所有标准的can-utils命令行工具,甚至Wireshark来与总线交互。
& M4 M. W8 D8 N+ \
  T3 |* g& w* Q4 C% F7 }在Windows和Mac上,CANable可以和cantact-app一起工作。这是一个简单的Java应用程序,可以实时显示CAN流量,并允许您在总线上传输消息。) h+ _- X  s# K& R7 p! j; j$ J* M" a
/ X' U1 S1 b$ x. ^2 `. p- @) x

% \3 h% f9 _4 N4 F/ }2 w" ]固件烧写方式# A' c% E* `- ]: G

0 d" q: i2 |2 L0 Z* ?4 Gweb在线烧写固件
8 {: x- J; y5 P% y# j) r+ h  k如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件,我会在附件资料提供相应的软件和文档说明,并提供编译好的几个固件。6 D5 \2 W0 X( W" a, ?
, H# R# U* B' ?% d8 O
这个真的超级方便了,意味着你不需要任何烧写器或者准备任何固件编译的环境,只要有谷歌浏览器,就能随时随地切换固件,是不是很强大!
8 g; h/ M: ]0 J, p& Q* i; B( A- `5 \, O
用谷歌浏览器打开这个页面,把canbale的DFU拨码开关按下去,在用USB连接电脑。选择需要烧写的的固件类型,再点connect and update就可以直接通过网页进行烧写。. B/ s5 f; a& u* a3 i
. {& f( y% c5 r
微信图片_20230415153453.jpg
6 L( c/ z4 A. E5 \& m; C  T4 j
6 M" n: v( [6 U1 B* {6 @/ |( K 微信图片_20230415153457.png
: N" `( O2 K  ~! M! D
' k; }( \& v3 n% ^" X' `, _注:这个网页上只能烧写canable的官方固件,自行编译的固件无法烧写(现在该页面已经支持烧写PCAN固件了!给力)。  ~3 ]: ?( `. G
6 _( F+ F# b  E* f1 u2 ?) m
转载自:李肖遥
  W& g/ Z5 P. C' u如有侵权请联系删除
2 f0 c9 F) N! l) S8 `, w
- q8 c0 T# a/ d1 r/ e( k! t
! K2 [9 V- C0 x, e0 u+ y
收藏 评论0 发布时间:2023-4-15 15:32

举报

0个回答

所属标签

相似技术帖

官网相关资源

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