当前位置:网站首页>分享一个开源的USB-CAN工具!
分享一个开源的USB-CAN工具!
2022-08-03 17:08:00 【李肖遥】
关注、星标公众号,直达精彩内容
文章出处:yefeng022
照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000+的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜,性能和可靠性嘛.......就不多说了,上位机软件也是烂的一塌糊涂。

这里推荐一个国外的炒鸡好用的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱,且支持Python。
而且远不止于此,经过我不断探索,在gitlhub各个大神仓库各种折腾。
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富。
而且主芯片STM32F042/72支持USB DFU,可以通过USB直接更新固件,无缝切换多种上位机。
先上项目首页,canbale项目官网:
https://canable.io/

首先先看硬件项目

硬件项目其实叫做candleLight,github链接:
https://github.com/HubertD/candleLight] https://github.com/HubertD/candleLight
这个不带隔离的硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。
可惜的就是这颗stm32f0芯片现在价格涨得有点离谱了,之前在JLC打样做了几块,主芯片就去到40多大洋,加上pcb和smt,打样成本差不多投到100左右吧。
后来发现某宝上已经有商家把canable作出产品了,带隔离的价格也才100多,还带外壳配件,果断买了一个试试,某宝搜“开源 canable”就能找到,早知道就不用费劲自己打板了。
但是某宝上买的只提供了默认固件的相关资料,经过我不断探索,在gitlhub各个大神仓库各种折腾。
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富,可以说可玩性极高。我甚至怀疑很多某宝和咸鱼上的山寨PCAN就是canable换了一个壳子和固件而已!!!

pdf原理图:
https://github.com/HubertD/candleLight/blob/master/export/v1.1/pdf/candleLight-v1.1.pdf
重点还是固件,第一个先说重磅的,PCAN固件!
论坛已经有人分享了,还是这个链接:
https://github.com/moonglow/pcan_cantact
我会在附件里打包我编译好的代码和二进制文件可以直接USB烧写
烧写PCAN固件之后,CANable摇身一变就成了PEAK CAN-USB,直接可以使用PEAK的官方驱动以及软件(pcan-view/ pcan-explorer 5),甚至基于peak开发的其他二次开发软件(比如国内的一些新能源车上位机,奇瑞,北汽这些)。
目前使用下来和原装PCAN的兼容性还是相当不错的,但是注意不要用于ECU/PLC程序刷新,程序下载到到中途会出错,这个问题还需要进一步优化。但是想想原装PCAN动辄2000的价格,100多块钱的canable加上这个PCAN固件是真的香啊。



介绍第二个固件是canable的默认固件candleLight_fw
https://github.com/candle-usb/candleLight_fw
这个固件功能也蛮强大,采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN。
支持windos和linux Stock can并且都免驱,且支持Python。
linux下使用和PCAN一样都是内核自带驱动,支持SocketCAN 非常适合用一些开源的can的工具和库进行二次开发。
candleLight固件的图形化上位机叫做cangaroo。
cangaroo是candleLight固件专用的、简单易用的can总线调试软件,麻雀虽小五脏俱全,对于一般的can调试开发完全够用,而且专门针对汽车逆向工程增加了通过can id分类接收到的can数据帧,并且当某个id的数据帧活跃时会进行高亮显示以便于观察分析。

支持Windos/Linux (Ubuntu发行版本)
最大支持同时接入32个CANable模块
数据帧时间戳
支持数据日志保存
支持CAN DBC 文件协议解析
软件绿色免安装
candleLight固件还支持BUSMASTER(这个也就很厉害了,用过的都懂),BUSMASTER是一款功能强大的专业级CAN总线调试软件,不仅能够应对一般的CAN调试开发,还一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件。BUSMASTER已被RBEI概念化,设计与开发,同时基于CANvas软件工具。
不过candleLight固件需要下载增加BUSMASTER增加了cantact设备支持的版本。


虚拟串口转can的Stock slcan固件
对于很多不熟悉usb编程,还是需要串口协议转can的小伙伴,slcan固件就正好满足需求,CANable通过烧写slcan固件。该固件枚举为Linux、Mac和Windows上的标准串行设备。CANable可以很容易地通过重新烧写固件,在Linux中枚举为本地can设备,在Windows中枚举为通用串口设备。
在Linux上,CANable原生地与slc一起工作,因此您可以使用所有标准的can-utils命令行工具,甚至Wireshark来与总线交互。
在Windows和Mac上,CANable可以和cantact-app一起工作。这是一个简单的Java应用程序,可以实时显示CAN流量,并允许您在总线上传输消息。

固件烧写方式

web在线烧写固件
如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件,我会在附件资料提供相应的软件和文档说明,并提供编译好的几个固件。
canable还提供了一个web的烧写页面:
https://canable.io/updater/
这个真的超级方便了,意味着你不需要任何烧写器或者准备任何固件编译的环境,只要有谷歌浏览器,就能随时随地切换固件,是不是很强大!
用谷歌浏览器打开这个页面,把canbale的DFU拨码开关按下去,在用USB连接电脑。选择需要烧写的的固件类型,再点connect and update就可以直接通过网页进行烧写。


注:这个网页上只能烧写canable的官方固件,自行编译的固件无法烧写(现在该页面已经支持烧写PCAN固件了!给力)。
USB DFU-util烧写固件
下载dfu-util-0.9-win64:
https://liquidtelecom.dl.sourceforge.net/project/dfu-util/dfu-util-0.9-win64.zip
解压后,将编译好的.bin文件拷贝到解压后的目录
创建一个文本文件,拷贝以下内容进去,注意candleLight_fw.binary 为要烧写的bin文件,需要改成需要烧写的文件名。然后把这个文本文件保存为flash.cmd
dfu-util --dfuse-address -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D candleLight_fw.binary
cmd /kcanbale的DFU拨码开关按下去,连接电脑USB线会识别成“STM32 BOOTLOADER”
如果识别失败需要下载安装驱动,
https://canable.io/utilities/ImpulseRC_Driver_Fixer.exe
识别成功后,双击运行之前创建的flash.cmd文件,会看到开始烧写的进度,如下就是烧写完成了
Download [=========================] 100% 36108 bytes
Download done.
File downloaded successfully版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
关注我的微信公众号,回复“加群”按规则加入技术交流群。点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。边栏推荐
- 数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
- How to write SQL statements in DataWorks monitoring data reaches a certain value to indicate the change of
- 通用型安全监测数据管理系统
- 使用.NET简单实现一个Redis的高性能克隆版(一)
- 附录A 程序员工作面试的秘密
- Adobe是什么?
- Promise的 简单使用
- MobileVIT实战:使用MobileVIT实现图像分类
- JS中对象数组用sort按属性排序
- 如何在 DataWorks 中 写SQL语句监控数据的变化到达一定的值 进行提示
猜你喜欢

#yyds干货盘点# 面试必刷TOP101:两个链表的第一个公共结点

酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式

B站回应HR称核心用户是Loser;微博回应宕机原因;Go 1.19 正式发布|极客头条

组件通信--下拉菜单案例

【Metaverse系列一】元宇宙的奥秘

isNotBlank与isNotEmpty

工程仪器设备在线监测管理系统常见问题和注意事项

【时间的比较】

Huawei, Lenovo, BAIC, etc. were selected as the first batch of training bases for "Enterprise Digital Transformation and Security Capability Improvement" by the Ministry of Industry and Information Te

中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招
随机推荐
fastposter v2.9.0 程序员必备海报生成器
九种方法!教你如何读取resources目录下的文件路径
JS 字符串转 GBK 编码超精简实现
一个域名对应多个IP地址
Adobe是什么?
C专家编程 第1章 C:穿越时空的迷雾 1.10 “安静的改变”究竟有多少安静
How to write SQL statements in DataWorks monitoring data reaches a certain value to indicate the change of
Description of the functional scenario of "collective storage and general governance" in the data center
Which thread pool does Async use?
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
从MatePad Pro进化看鸿蒙OS的生态势能
sibling component communication context
通用型安全监测数据管理系统
401. Binary Watch
C# 获取文件名和扩展名(后缀名)
node connection mongoose database process
ArkUI如何适配横竖屏
如何在 DataWorks 中 写SQL语句监控数据的变化到达一定的值 进行提示
面试突击71:GET 和 POST 有什么区别?
JSON.stringify()的深入学习和理解
