目录

CAN-BUS-USB-CAN-adpter-USB转CAN-开源项目推荐CANable-candlelight-cangaroo

[CAN BUS] USB-CAN adpter / USB转CAN 开源项目推荐(CANable candlelight cangaroo)

目录


照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案….价格都很低,性能和可靠性嘛…….就不多说了。

这里推荐一个国外的开源工具CANable,ta有 完全开源 的软硬件及上位机支持, 支持windos和linux Stock can并且都 免驱 哦。且支持 Python。

并且与网上众多的USB CAN采用虚拟串口的方式实现免驱不同,CANable采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN,甚至比ZLG早期的产品的每秒帧数还高很多。

下面重点来了:本文将介绍如何DIY一个你自己的CANable(后文介绍有成品可以在tb上买到)。

CANable实际上应该是3个项目组成:

硬件

主页 :

https://i-blog.csdnimg.cn/blog_migrate/e46961e6a5d24056f3534ab526ae9e18.png

硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。

https://i-blog.csdnimg.cn/blog_migrate/849072a144d0d7a619e0dc1401ea2134.png

github:

pdf原理图:

这个因为是开源项目,用的pcb软件是kicad,不习惯kicad可以直接去仓库下面export\v1.1目录下查看输出文件,包括gerber,bom,pdf等等,基本上可以直接拿来打样加工了。原理图本身很简单的,有兴趣的也可以自己画一版。

万能的tb上已经有人做成成品了,套了一个蓝色的外壳,看起来还不错,叫做CANable Z,在某宝上搜CANable 就能搜到,价格很便宜。 https://i-blog.csdnimg.cn/blog_migrate/4d8b2f2e0cdc3a9f042a2a4f3554c0c3.png

固件

需要注意的是这个固件工程是在linux下面开发的,编译和烧写的说明均为在linux下的操作。

在Windows上编译这个源码需要花时间重新建立工程。

总之呢,提供源码的好处就是可以自行修改固件添加自己想要的功能,或者学习USB和CAN代码。

正常开发呢,可以使用板子的SWD接口进行仿真和烧写,STM32出厂自带了一个USB BootLoader,大家也可以用下面的两种方法通过CANable自带的USB进行烧写。

web在线烧写固件

如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件。

canable还提供了一个web的烧写页面

用谷歌浏览器打开这个页面,把板子的boot0接高电平,在用USB连接电脑。选择candlelight的固件,再点connect and update就可以直接通过网页进行烧写。

https://i-blog.csdnimg.cn/blog_migrate/391701652b7e92eac1e38c4e3c2634f1.png

注:这个网页上只能烧写candlelight或者slcan的默认固件,自行编译的固件无法烧写。

USB DFU-util烧写

  • 下载dfu-util-0.9-win64:
  • 解压后,将编译好的.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 /k
  • 整个目录就像下面这样子
  • https://i-blog.csdnimg.cn/blog_migrate/1bbadf6a07393634a0d102def053b190.png
  • 短接CANable Z的BOOT0跳线(DFU跳线),连接电脑USB线会识别成下面这样
  • https://i-blog.csdnimg.cn/blog_migrate/aa83aa94159cad5c988ee07ff3941add.png
  • 如果识别失败需要下载安装驱动,
  • 识别成功后,双击运行之前创建的flash.cmd文件,会看到开始烧写的进度,如下就是烧写完成了
D:\workspase\USB-CAN-adapter\CANtact\dfu-util-0.9-win64>dfu-util --dfuse-address -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D candleLight_fw.binary
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x08000000, size = 36108
Download        [=========================] 100%        36108 bytes
Download done.
File downloaded successfully

上位机

初支持基本的can报文收发之外, 还支持:

1. 导出报文数据

2. loopback 自发自收模式

3. 静默模式(接收到报文不应答ACK,用于总线监听)

4. 调整通讯采样点

5. one-shot 单次发送模式(禁止自动重发)

6. 加载DBC协议文件

https://i-blog.csdnimg.cn/blog_migrate/f73f04e04f5e4b7a0c68e2e9d6f50007.png

https://i-blog.csdnimg.cn/blog_migrate/fa04e6fde5227ada4bf29e9f1102597d.png

https://i-blog.csdnimg.cn/blog_migrate/7f9d7f85e83a1488dceca1ca6d0ce559.png

github:

zip下载: