
照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都很低,性能和可靠性嘛.......就不多说了。 这里推荐一个国外的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱哦。且支持Python。 并且与网上众多的USB CAN采用虚拟串口的方式实现免驱不同,CANable采用的winUSB的免驱方案,USB bulk双缓冲的模式,实际传输性能远超那些虚拟串口的USB-CAN,甚至比ZLG早期的产品的每秒帧数还高很多。 我实测过CANable最高接收速率每秒1.5万帧,真的超变态!!! 下面重点来了:本文将介绍如何DIY一个你自己的CANable(tb上搜索也有成品可以买到)。 CANable实际上应该是3个项目组成: 硬件candleLight主页 : http://canable.io/ 硬件设计是比较简单的,就是一块带usb和can的stm32f0 + CAN收发器TJA1051/3。 github:http://github.com/HubertD/candleLight pdf原理图:http://github.com/HubertD/candleLight/blob/master/export/v1.1/pdf/candleLight-v1.1.pdf 这个因为是开源项目,用的pcb软件是kicad,不习惯kicad可以直接去仓库下面export\v1.1目录下查看输出文件,包括gerber,bom,pdf等等,基本上可以直接拿来打样加工了。原理图本身很简单的,有兴趣的也可以自己画一版。 万能的tb上已经有人做成成品了,套了一个蓝色的外壳,看起来还不错,叫做CANable Z,在某宝上搜CANable 就能搜到,价格很便宜。 固件candleLight_fw http://github.com/candle-usb/candleLight_fw 需要注意的是这个固件工程是在linux下面开发的,编译和烧写的说明均为在linux下的操作。 在Windows上编译这个源码需要花时间重新建立工程。 总之呢,提供源码的好处就是可以自行修改固件添加自己想要的功能,或者学习USB和CAN代码。 正常开发呢,可以使用板子的SWD接口进行仿真和烧写,STM32出厂自带了一个USB BootLoader,大家也可以用下面的两种方法通过CANable自带的USB进行烧写。 web在线烧写固件如果只是想copy一个来用用,不需要去自己编译烧写,可以直接用STM32的USB DFU通过USB下载固件。 canable还提供了一个web的烧写页面 http://canable.io/updater/ 用谷歌浏览器打开这个页面,把板子的boot0接高电平,在用USB连接电脑。选择candlelight的固件,再点connect and update就可以直接通过网页进行烧写。 注:这个网页上只能烧写candlelight或者slcan的默认固件,自行编译的固件无法烧写。 USB DFU-util烧写
上位机cangaroo 初支持基本的can报文收发之外,cangaroo还支持: 1. 导出报文数据 2. loopback 自发自收模式 3. 静默模式(接收到报文不应答ACK,用于总线监听) 4. 调整通讯采样点 5. one-shot 单次发送模式(禁止自动重发) 6. 加载DBC协议文件 github:http://github.com/normaldotcom/cangaroo zip下载:http://canable.io/utilities/cangaroo-win32-0363ce7.zip |
不错,支持开源 |
好东西,谢谢楼主分享 |
谢谢分享 |
这个USB-CAN太牛了 |
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现