一、嵌入式底层CAN库(MCU端,STM32/H7常用)
1. bxCAN(ST官方HAL库自带)
地址:ST HAL库内置
说明:STM32片上CAN外设标准驱动,bxCAN,支持CAN2.0A/B,不用额外移植,H7直接可用;缺点只支持传统CAN,不支持CAN FD。
2. CAN FD Driver for STM32
地址:https://github.com/STMicroelectronics/STM32CubeH7
说明:STM32H7自带CAN FD外设官方驱动,支持CAN FD,工程直接在CubeMX生成。
3. libcanard
地址:https://github.com/UAVCAN/libcanard
说明:UAVCAN协议栈,嵌入式轻量CAN应用层,无人机/机器人常用,C语言,资源占用小,支持CAN2.0。
4. canfestival
地址:https://github.com/CanFestival/canfestival
说明:经典CANopen协议栈,工业设备最常用,C语言,支持主站/从站,可跑在STM32、Linux,适合工业传感器。
二、Linux上位机CAN库(SocketCAN)
1. socketcan-utils
地址:https://github.com/linux-can/can-utils
说明:Linux原生SocketCAN工具集,cansend/candump/canutils,命令行调试必备。
2. libsocketcan
地址:https://github.com/linux-can/libsocketcan
说明:SocketCAN C封装库,简化Linux下CAN读写开发。
三、Qt / C++ 上位机CAN库(适合你做QT历险记)
1. QCanBus(Qt官方内置)
地址:Qt框架自带(QtSerialBus模块)
说明:Qt原生CAN组件!支持SocketCAN、PEAK、Vector等适配器,C++,Qt项目直接引入,做上位机首选。
2. CANoe-API Wrapper(第三方封装)
地址:https://github.com/ruisheng4949/CANWrapper
说明:C++封装,适配多种CAN适配器。
四、Python CAN库(快速仿真、测试脚本)
1. python-can
地址:https://github.com/hardbyte/python-can
说明:跨平台,支持SocketCAN、PEAK、PCAN,写测试脚本首选。
五、补充选型速记卡片文字(放9:16图片)
CAN开源库选型
✅ STM32底层:HAL bxCAN(CAN2.0)、ST官方H7 CANFD驱动
✅ 工业协议:CanFestival(CANopen)、libcanard(UAVCAN)
✅ Linux上位:socketcan + libsocketcan
✅ Qt上位机:QCanBus(QtSerialBus)
✅ Python测试:python-can
⚠️区分:底层驱动(收发报文) vs 应用层协议(CANopen/UAVCAN)
底层只是收发原始CAN报文;应用层定义数据解析规则。