如何实现CAN总线适配器的设计?
CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视,它在汽车领域上的应用是最广泛的。
设计一个完整的CAN总线适配器(如USB-to-CAN、PCIe-to-CAN、以太网-to-CAN)是一个涉及硬件设计和软件/固件开发的复杂过程。以下是实现的关键步骤和要点:
一、 定义需求与规格
- 核心功能:
- 接口类型: 适配器的宿主接口是什么?(USB 2.0/3.0, PCIe, 以太网RJ45, RS232, WiFi, 蓝牙等)。
- CAN特性:
- 支持的标准:CAN 2.0A (11位ID), CAN 2.0B (29位扩展ID),是否支持FD?
- 支持的最大波特率:CAN 2.0 (通常1 Mbps), CAN FD (2 Mbps, 5 Mbps, 甚至更高)。
- 支持的帧类型:数据帧、远程帧、错误帧、过载帧。
- 终端电阻:是否需要板载120Ω终端电阻?是否可配置?
- 通道数: 单通道还是多通道?
- 性能指标:
- 最大负载下的数据传输速率/吞吐量。
- 不同波特率下的延迟要求。
- 稳定性、可靠性要求(工业级、汽车级?)。
- 环境要求:
- 工作温度范围。
- 电磁兼容性认证需求(如用于汽车电子可能需要符合ISO 7637等)。
- 安全要求: 是否需要功能安全认证(如ISO 26262 ASIL等级)?是否需要隔离设计(光耦隔离、磁耦隔离)?
- 软件支持: 目标操作系统(Windows, Linux, macOS, RTOS?),提供API或库。
- 机械结构与连接器: 外壳、连接器类型(DB9, OBD-II, M12等),安装方式。
二、 硬件设计
- 核心芯片选型:
- 方案A:主MCU + CAN控制器 + CAN收发器
- 主MCU: 处理宿主接口通信协议(如USB协议栈、TCP/IP协议栈)以及高层应用逻辑。需要足够处理能力和内存,带有所需宿主接口外设(如USB控制器、以太网MAC/PHY等)。常用: STM32F4/F7/H7系列(USB/CAN/Eth)、NXP i.MX RT系列、Microchip SAMx系列、TI Sitara AM系列。
- 独立CAN控制器: 处理CAN协议的核心:报文收发、过滤、格式转换(例如:MCU的SPI接口数据 <=> CAN控制器内部缓冲区数据)。常用: Microchip MCP2515/MCP2518FD (SPI接口), NXP SJA1000/TJA114x (并行接口)。
- CAN收发器: 将CAN控制器的数字信号(TxD/RxD)转换成物理层差分信号(CANH/CANL),反之亦然。提供总线驱动、抗干扰和故障保护。常用: NXP TJA105x/TJA1xxx系列, TI SN65HVD23x系列, Microchip ATA65xx系列, Bosch TLE925x系列。关键选择因素: 波特率、工作电压、EMC性能、故障保护功能、隔离要求。
- 方案B:集成CAN控制器的MCU + CAN收发器
- 许多现代MCU(特别是面向汽车、工业的型号)内部集成CAN/CAN FD控制器外设,不再需要独立的CAN控制器芯片。
- 优点: 降低成本、减少PCB面积、提高集成度、降低软件复杂度。
- MCU选择关键: 除了集成CAN控制器,仍需具备所需的宿主接口(USB、以太网等)。
- 典型芯片: STM32F0/F1/F2/F4/F7/H7/L4等带CAN的型号 + USB/Eth外设。
- 方案C:专用接口桥接芯片
- USB-to-CAN: Microchip MCP2210, MCP2200 (USB-UART再转CAN), FTDI FT90x系列。这些芯片内部集成了USB协议处理和CAN控制器/收发器(部分型号),简化设计但可能灵活性受限或成本较高。
- 以太网-to-CAN: Microchip LAN9252/9253 (EtherCAT从站/CAN桥), WIZnet W5500 (硬件TCP/IP堆栈) + MCU。
- 方案A:主MCU + CAN控制器 + CAN收发器
- 电路设计 (原理图与PCB):
- 电源电路: 为主MCU、CAN控制器、CAN收发器提供所需电压,考虑稳压、滤波、隔离电源。
- 宿主接口电路: USB接口(D+/D-的ESD保护、阻抗匹配)、以太网接口(PHY芯片、变压器、RJ45)、PCIe连接器线路等。
- CAN接口电路:
- 收发器连接:TxD/RxD连接MCU或CAN控制器。
- 总线连接器(如DB9/OBD-II):CANH, CANL。必须!
- 终端电阻: 如果适配器放置在物理总线末端,通常需要在CANH/CANL之间并联一个120Ω电阻。考虑可配置选项(跳线或电子开关)。
- 隔离设计(如需要): 在MCU/控制器与收发器之间添加数字隔离器(光耦如6N137,或磁耦如ADuMxxxx)以及隔离DC-DC电源。
- EMC/ESD保护: TVS二极管(如SM712系列)用于总线端和宿主接口端,共模电感,滤波电容。至关重要!
- 时钟/晶振电路: 为MCU和可能的CAN控制器/收发器提供精准时钟。
- 调试/编程接口: 如SWD/JTAG用于固件下载和调试。
- PCB布局布线:
- 高速差分信号: CAN总线(CANH/CANL)走线等长、紧耦合,避免锐角弯折,阻抗匹配(通常120Ω)。
- 电源完整性: 去耦电容靠近芯片电源引脚放置,多层板规划良好的电源/接地层。
- 隔离区域: 在光耦/磁耦的隔离沟两侧确保足够的爬电距离和电气间隙。
- 减少环路面积: 尤其对于开关电源和高速信号,以降低EMI。
- 散热考虑: 估算功耗并确保散热良好(接地铜皮过孔散热)。
三、 软件/固件开发
- MCU固件:
- 底层驱动:
- 宿主接口驱动:如USB CDC/ECM/HID类驱动,以太网MAC驱动(LWIP/uIP等)或TCP/IP协议栈(需集成或使用MCU自带)。
- CAN控制器驱动:
- 方案A:编写/移植SPI或并行接口访问独立CAN控制器的驱动(初始化、配置波特率、报文发送/接收、错误处理、中断服务)。
- 方案B:使用MCU供应商提供的CAN外设驱动库(HAL/LL库等)。
- 协议转换逻辑:
- 核心任务:在宿主接口协议数据包(如USB数据包、TCP/IP socket数据)与标准CAN帧结构之间进行双向转换。
- 实现报文队列/缓冲区管理(Rx/Tx),处理潜在的速率不匹配(CAN波特率 vs 宿主接口速率)。
- 定义内部数据结构表示CAN帧(ID, DLC, 数据字节, 帧类型标志)。
- 高级功能(可选):
- 报文过滤: 基于ID的范围/掩码过滤,降低主机负载。
- 时间戳: 为接收到的报文添加高精度时间戳(通常需要硬件定时器支持)。
- 批处理: 发送队列、接收缓冲区的批量传输以提高效率。
- 诊断与状态: 报告适配器状态、错误计数器、总线状态(Active/Sleep/Error Passive)。
- 配置接口: 通过宿主命令配置波特率、终端电阻开关、过滤器设置等。
- 底层驱动:
- 主机端软件 (PC/服务器端):
- 驱动程序(Device Driver):
- 对于USB/PCIe接口,需要开发操作系统级别的驱动(Windows WDF/WDM, Linux USB CDC/ECM/KernelCAN SocketCAN),使操作系统能识别设备并提供标准API接口(如Windows下生成串行COM口或WinUSB设备,Linux下生成 /dev/ttyACMx或CAN网络接口canX)。
- API库/中间件:
- 提供更易用的编程接口给上层应用开发者,封装底层驱动调用的复杂性。如:
.dll/.so/.dylib库,暴露如OpenDevice(),SendCANFrame(),RegisterReceiveCallback(),SetBaudrate()等函数。 - 可能实现标准工业协议(如J1939, CANopen)的封装。
- 提供更易用的编程接口给上层应用开发者,封装底层驱动调用的复杂性。如:
- 配置/监控工具:
- 开发图形化或命令行工具,方便用户配置适配器参数、监控总线流量、发送/接收诊断报文。
- 常用技术栈:C/C++, Python (pySerial, python-can, PyUSB), C#, Java等。
- 驱动程序(Device Driver):
四、 测试与验证
- 硬件测试:
- 电源、时钟、复位信号测量。
- 宿主接口电气信号测试(USB眼图、以太网PHY环回测试)。
- CAN信号完整性测试(差分信号波形、上升/下降时间、位对称性)。
- 终端电阻测量。
- 隔离性能测试(耐压)。
- EMC/ESD预兼容测试。
- 固件/驱动基本功能测试:
- 设备枚举(USB插拔识别、PCIe扫描)。
- 配置功能(波特率设置、终端开关)。
- 单帧收发测试(回环测试)。
- 大数据量压力测试(长时间连续收发)。
- 错误注入与恢复测试。
- 性能测试:
- 不同波特率下的数据传输速率与延迟。
- CPU负载与内存占用。
- 不同帧ID数量下的过滤性能。
- 协议一致性与互操作性测试:
- 与标准CAN总线分析仪互操作(收发报文一致性)。
- 在不同的CAN网络上测试稳定性(如连接真实车辆或工业设备)。
- 环境与可靠性测试:
- 高低温循环测试。
- 振动测试。
- 长时间老化测试(Burn-in)。
五、 文档与生产
- 设计文档: 硬件原理图、PCB图、BOM表、固件设计文档、软件API手册。
- 用户手册: 安装指南、配置说明、使用示例、常见问题解答。
- 生产准备: 设计可制造性审查、测试夹具(Test Fixture)开发(用于FCT、ICT)、烧录器(Programmer)支持。
- 认证: 获取必要的产品认证(CE, FCC, RoHS等,可能还需要汽车电子如AEC-Q100认证)。
总结思路与常见方案组合
- 简单低成本 USB-to-CAN:
- STM32F042/F072/F103 (带USB/CAN) + TJA1051/TJA1042 + DB9 + 120Ω跳线。
- 高性能 USB-to-CAN FD:
- STM32F4/F7/H7 (带USB/CAN FD) + TJA1463/TLE925x + DB9/OBD-II + 隔离设计。
- 以太网-to-CAN(TCP/IP):
- STM32H7 (带ETH MAC) + LAN8742A (PHY) + CAN FD外设 (如集成或MCP2518FD) + TJA1463 + RJ45 + 隔离。
- RK3568/RK3588 (高性能CPU) + PCIe CAN卡扩展。
- 工业通讯网关:
- NXP i.MX6UL/7ULP/RT1170 + 多通道CAN FD (独立控制器或集成) + 对应收发器 + 以太网 + RS485 + 隔离电源与信号。
设计CAN总线适配器是一个系统工程,需要平衡性能、成本、开发周期、可靠性、兼容性等多方面因素。明确需求、选择正确的硬件方案、进行严谨的软硬件设计、充分的测试验证是关键成功要素。可以利用成熟的开发板和参考设计作为起点加速开发过程。对于非核心需求,购买成熟的商业适配器通常是性价比更高的选择。
常见芯片组合示例:
- 最常用经典组合: MCU (STM32Fxx) + 独立CAN控制器 (MCP2515) + CAN收发器 (MCP2551/TJA1050)
- 现代整合方案: MCU (STM32F4带CAN/USB) + CAN收发器 (TJA1051)
- 高端CAN FD: MCU (STM32H7带CAN FD/USB) + CAN FD收发器 (TJA1463)
如何储存和运输电源适配器?如何选择具有节能功能的电源适配器?
如何储存和运输电源适配器?如何选择具有节能功能的电源适配器? 标题:电源适配器的储存与运输及选择节能功能的方法 引言: 电源
2023-11-24 14:08:46
基于LPC2292的CAN总线USB接口适配器的设计
电子发烧友网站提供《基于LPC2292的CAN总线USB接口适配器的设计.pdf》资料免费下载
资料下载
84784
2023-10-09 16:53:19
如何提高电源适配器的效率因数?
如何提高电源适配器的效率因数? 提高电源适配器的效率因数是提高能源利用效率的一种重要措施。通过提高效率因数,可以减少能源浪费,实现节能减排的目标
2023-11-23 14:51:25
调试USB-CAN的适配器
在调试USB-CAN的适配器的过程中,采用库函数开发,在调试串口的过程中串口数据始终乱码。思考一番,发现由于外部晶振的原因,在 Keil 中Ctrl + Shift + F 查找 HSE_VALUE
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 传感器常见类型有哪些?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机