STM32F103的CAN收发通信过程

发布者:DreamBig123最新更新时间:2024-03-22 来源: elecfans关键字:STM32F103  CAN收发  通信过程 手机看文章 扫描二维码
随时随地手机看文章

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


而且远不止于此,经过我不断探索,在gitlhub各个大神仓库各种折腾。
我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富。


而且主芯片STM32F042/72支持USB DFU,可以通过USB直接更新固件,无缝切换多种上位机。关于STM32上的CAN通信基础知识,可以参考此文:CAN总线详解。也可以参考本次10.27第3条推文,演示STM32F103的CAN收发通信过程。


先上项目首页,canbale项目官网:

首先先看硬件项目


硬件项目其实叫做candleLight,github链接:

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


可惜的就是这颗stm32f0芯片现在价格涨得有点离谱了,之前在JLC打样做了几块,主芯片就去到40多大洋,加上pcb和smt,打样成本差不多投到100左右吧。


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


但是某宝上买的只提供了默认固件的相关资料,经过我不断探索,在gitlhub各个大神仓库各种折腾。


我发现这个canable这个项目衍生出了很多开源固件,目前固件和支持的软件已经极为丰富,可以说可玩性极高。我甚至怀疑很多某宝和咸鱼上的山寨PCAN就是canable换了一个壳子和固件而已!!!

c38b9ae8-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000

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固件是真的香啊。

c3a5b306-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000
c3b0653a-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000
c3d3151c-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000

介绍第二个固件是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的数据帧活跃时会进行高亮显示以便于观察分析。

c3ed41c6-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000
 支持Windos/Linux (Ubuntu发行版本)
 最大支持同时接入32个CANable模块
 数据帧时间戳
 支持数据日志保存
 支持CAN DBC 文件协议解析
 软件绿色免安装

candleLight固件还支持BUSMASTER(这个也就很厉害了,用过的都懂),BUSMASTER是一款功能强大的专业级CAN总线调试软件,不仅能够应对一般的CAN调试开发,还一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件。BUSMASTER已被RBEI概念化,设计与开发,同时基于CANvas软件工具。


不过candleLight固件需要下载增加BUSMASTER增加了cantact设备支持的版本。

c3fc44c8-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000
c41e500e-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000

虚拟串口转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就可以直接通过网页进行烧写。

c46d1db0-ee0f-11ec-ba43-dac502259ad0.png?imageView2/2/w/1000
注:这个网页上只能烧写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.binarycmd /k

canbale的DFU拨码开关按下去,连接电脑USB线会识别成“STM32 BOOTLOADER”


如果识别失败需要下载安装驱动,


https://canable.io/utilities/ImpulseRC_Driver_Fixer.exe


识别成功后,双击运行之前创建的flash.cmd文件,会看到开始烧写的进度,如下就是烧写完成了


Download        [=========================] 100%        36108 bytesDownload done.File downloaded successfully


关键字:STM32F103  CAN收发  通信过程 引用地址:STM32F103的CAN收发通信过程

上一篇:使用PlatformIO对Arduino UNO和STM32板进行编程
下一篇:STM32常用的一些开发工具

推荐阅读最新更新时间:2026-03-23 03:34

华芯微国产汽车芯片CAN收发器系列(篇一)
一、HR1040PMC 型高速CAN 收发器 1.1产品介绍 HR1040PMC 型高速CAN 收发器为局域网络(CAN)协议控制器与物理总线之间的接口。主要用于汽车的高速应用,数据传输速率可达1MBaud。该产品为总线提供差分发送能力,为CAN 控制器提供差分接收能力。支持低电流待机模式并可通过总线远程唤醒,在未通电时与总线完全断开。该产品提供过热保护,短路保护等功能,具有出色的电磁兼容性。 1.2产品特性 • 通信速率:1MBaud • 工作电压范围:4.75V~5.25V • 电源电流范围(待机模式):5uA~15uA • 兼容3.3V 和5V 输入电平 • 低功耗待机模式 1.
[汽车电子]
华芯微国产汽车芯片<font color='red'>CAN</font><font color='red'>收发</font>器系列(篇一)
CAN隔离收发器各项参数及其应用意义
  CAN收发器是连接CAN控制系统与CAN总线网络的桥梁,当选型CAN收发器时应该注意哪些参数?本文将带大家深入的了解收发器的每项参数与其在实际应用中的意义。   1.输入特性   对于隔离CAN收发器,输入主要指连接CAN控制器一侧的输入特性,包含电源输入与信号输入。   根据控制器的CAN接口电压可选择3.3V或5V供电的CAN模块,隔离CAN模块正常输入范围为VCC±5%,主要考虑CAN总线电平能保持在典型值范围内,同时也使次级的CAN芯片工作在标称电源电压附近。   对于单独的CAN收发芯片,需要对芯片的VIO引脚接入与TXD信号电平相同的参考电压,以匹配信号电平,若没有VIO引脚,则应保持信号电平与VCC保持一致。
[嵌入式]
<font color='red'>CAN</font>隔离<font color='red'>收发</font>器各项参数及其应用意义
​南芯科技推出车规级高速CAN/CAN FD协议收发
(2025年4月27日,上海)今日, 南芯科技宣布推出车规级高速 CAN/CAN FD 收发器 SC25042Q,适用于12V 和 24V 汽车系统,可直接连接 3V-5V 的微控制器,支持高达 5Mbit/s 的数据传输速率。 SC25042Q 集成了振铃抑制功能,抗电磁干扰能力强,可实现无损时间传输,保证信号的高效可靠。该产品通过 AEC-Q100 认证,符合 ISO 11898-2:2016、SAE J2284-1 至 SAE J2284-5 标准,为车规级接口提供了高性能、高性价比的国产化选择。 全国产化产品,重塑车载CAN总线 随着智能汽车传感器和执行模块数量的增加,数据传输需求呈指数级增长,对车载网络的稳定
[汽车电子]
​南芯科技推出车规级高速<font color='red'>CAN</font>/<font color='red'>CAN</font> FD协议<font color='red'>收发</font>器
汽车级CAN FD收发器芯片SIT1044QT/3可pin to pin替代TJA1044T/3
国际知名品牌NXP推出的TJA1042Q、TJA1043Q、TJA1044Q、TJA1051Q等CAN FD收发器芯片,相信很多电子工程师并不陌生。这类芯片应用中,非常成熟稳定,深受汽车电子工程师的认可、支持和青睐。然而,在实际应用中,很多客户由于交期、价格、成本预算、账期、供应商等多方面因素的影响,需要寻找替代,甚至要求国产替代。近日,很多客户前来东沃电子咨询:“TJA1044是否有国产替代芯片?对应的什么型号?” 答案是:有,TJA1044国产替代对应的型号是SIT1044Q。仔细对比TJA1044和SIT1044Q产品数据手册参数会发现,东沃电子代理的SIT1044Q能够完美兼容TJA1044,具体替代详情信息如下:
[嵌入式]
汽车级<font color='red'>CAN</font> FD<font color='red'>收发</font>器芯片SIT1044QT/3可pin to pin替代TJA1044T/3
了解CAN收发器及如何验证多节点CAN系统的性能
摘要 本文介绍了评估“控制器局域网”(CAN)收发器的正确系统级测试方法。通过展示在多CAN节点系统中执行不同CAN节点之间的数据传输时如何避免实际数据传输问题,解释了此种测试方法的优越之处。阅读本文后,读者将对CAN系统有更好的了解,并能够为特定的多节点CAN系统选择合适的CAN收发器。 引言 CAN是一种稳健的通信标准,用于支持不同的传感器、机器或控制器进行相互通信。相比于一般接口,CAN接口更稳定可靠,能够有效处理总线争用,因此被广泛应用于工业自动化、家庭自动化和汽车应用中。 旧版CAN2.0提供8字节有效载荷,最多支持2 Mbps的数据速率。有些情况下,2 Mbps的数据速率不足以应对危急通信事件,因此C
[模拟电子]
了解<font color='red'>CAN</font><font color='red'>收发</font>器及如何验证多节点<font color='red'>CAN</font>系统的性能
STM32学习笔记—CAN总线收发数据常见问题分析
CAN,Controller Area Network(控制器局域网络),在汽车电子、工业控制领域的应用比较多,通常用于局域组网。 这是第9篇学习分享文章,《STM32学习笔记》之CAN总线收发数据常见问题分析。 CAN总线和UART、I2C、SPI总线最大的区别主要在于取消了传统的地址编码方式,理论上讲总线上的互联节点数不受限制,拥有强大的握手与出错管理及重发机制,具有很强的抗干扰能力。 STM32 CAN 基础内容 CAN网络中主要由CAN控制器和CAN收发器组成,大部分STM32内部都集成了CAN控制器,如果需要使用CAN功能,还需要在外部连接一个CAN收发器才能使用。 ▲ CAN 网络拓扑结构图 STM32内部
[单片机]
带休眠国产CAN收发器SIT1043Q网络故障诊断原理及应用
CAN 总线学名控制器局域网,本身就是为了控制汽车而开发的。因为其数据传输速度快抗干扰能力强,目前已经成为了最为主流的汽车总线。对于汽车来说, CAN 总线就是它的神经系统。这个系统一般由很多ECU节点组成的控制单元,每个ECU节点都有自己的故障检测功能,基本上每个ECU都有一块EEPROM,用来存储自身故障信息,然后还会上传到网关的EEPROM,并以诊断故障码(Diagnose trouble code)的形式存储。车载 CAN 网络诊断系统框图如图1所示,为保障车辆行车安全,ECU应当能够进行故障自检,DTC(Diagnostic Trouble Code 诊断故障代码)为不同故障所对应的“数字码”,当汽车神经系统产生故障后,
[汽车电子]
带休眠国产<font color='red'>CAN</font><font color='red'>收发</font>器SIT1043Q网络故障诊断原理及应用
采用MCU、CAN控制器和收发器实现燃料电池汽车空调智能节点的设计
在能源日趋紧张、空气污染日益严重的今天,开发具有自主知识产权的新型燃料电池汽车是我国汽车产业的一个重要飞跃和里程碑,也是国家重点扶持的主要领域之一。燃料电池汽车与传统燃油汽车相比具有环保、节能(氢气为燃料)、运行平稳无噪声等特点。燃料电池汽车系统的核心是它的动力系统,即燃料电池发动机,同时配备高功率锂离子电池,能够回收下坡和制动能量。整个汽车系统由若干控制单元组成,各单元通过汽车总线彼此相连,其中空调控制系统是这种新型能源汽车的一个辅助控制单元,但它也是汽车系统的一个重要组成部分。本文将给出一种采用通用微控制器(MCU)和独立CAN控制器和收发器为核心的智能节点,完成与汽车系统之间的通信和控制由数字信号处理器DSP2407为控制芯
[嵌入式]
采用MCU、<font color='red'>CAN</font>控制器和<font color='red'>收发</font>器实现燃料电池汽车空调智能节点的设计
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved