4. CAN控制器与收发器:典型芯片介绍与功能划分
做CAN通信,离不开两个核心器件:控制器和收发器。
很多人刚开始接触时,容易把这两者搞混。我当年第一次画CAN电路,就以为买一个芯片就能搞定。结果呢?通信死活不通。后来才明白,控制器负责“脑子”,收发器负责“嘴巴”。
今天咱们就把这两类芯片掰开揉碎,讲清楚。
4.1 功能划分:控制器 vs 收发器
先看一张图,你就明白了:
说白了,控制器负责把你要发的数据,按照CAN协议打包成帧,也负责解析收到的帧。它处理的是数字逻辑。收发器呢?它把控制器输出的数字信号,转换成CAN总线上的差分信号(CAN_H和CAN_L)。反过来也一样。
我习惯这么记:控制器管“协议”,收发器管“物理”。
4.2 典型CAN控制器芯片
4.2.1 SJA1000 — 独立CAN控制器的老大哥
SJA1000是NXP(原Philips)的产品。这芯片在工业界用了二十多年,非常成熟。
核心特点:
- 支持CAN 2.0A(标准帧)和CAN 2.0B(扩展帧)
- 两种工作模式:BasicCAN(11位标识符)和PeliCAN(29位标识符)
- 64字节的接收FIFO
- 与微控制器通过并行接口连接(地址/数据总线)
避坑指南: 我曾经在一个项目中,把SJA1000的时钟频率配错了。结果总线速率怎么算都不对。后来查手册才发现,SJA1000对时钟精度要求比较高,晶振偏差超过1%就可能丢帧。嗯,从那以后我选晶振都挑±50ppm以内的。
典型应用场景: 工业控制、汽车诊断、老旧设备升级。
4.2.2 MCP2515 — SPI接口的独立CAN控制器
MCP2515是Microchip的产品。它最大的优点是:通过SPI接口与MCU通信。
这意味着什么?你随便找个带SPI的单片机,比如STM32、Arduino,甚至51单片机,都能接MCP2515。不需要专门的并行总线。
核心特点:
- 支持CAN 2.0A和CAN 2.0B
- 两个接收缓冲区,每个可存储完整报文
- 三个发送缓冲区(优先级可配置)
- 6个验收滤波器(可灵活配置)
- SPI时钟最高10MHz
个人经验: 我习惯用MCP2515做CAN转USB的工具。搭配一个便宜的STM32,写个简单的SPI驱动,就能在电脑上用PCAN-View类似的软件调试CAN总线。成本不到50块钱,比买成品工具划算多了。
典型应用场景: 嵌入式原型开发、学生实验、低成本CAN节点。
4.3 典型CAN收发器芯片
4.3.1 TJA1050 — 高速CAN收发器的标杆
TJA1050也是NXP的产品。它几乎是CAN收发器领域的“标准答案”。
核心特点:
- 支持高速CAN,速率最高1Mbps
- 电磁辐射(EME)极低
- 电磁抗干扰(EMI)能力强
- 总线引脚可耐受±8kV静电(HBM)
- 支持待机模式,功耗低
| 参数 | TJA1050 | 备注 |
|---|---|---|
| 工作电压 | 4.75V ~ 5.25V | 标准5V供电 |
| 最大速率 | 1 Mbps | 高速CAN |
| 待机电流 | 典型值 5 μA | 省电模式 |
| 工作温度 | -40°C ~ +125°C | 车规级 |
| 封装 | SO-8 | 小巧易焊接 |
注意: TJA1050的引脚5(STB)是待机控制脚。如果悬空,芯片会进入待机模式,总线无法通信。我见过好几个新手犯这个错——把STB脚空着,然后问为什么发不出数据。正确的做法是:正常工作时,把STB拉低(接地)。
4.4 如何选型?我的建议
选型其实不难,记住三条:
- 看MCU接口:如果MCU有CAN控制器(比如STM32的bxCAN),直接外挂一个TJA1050收发器就行。如果MCU没有CAN外设,就选MCP2515这种SPI接口的独立控制器。
- 看速率要求:普通应用125kbps~500kbps足够。高速应用(比如汽车动力系统)需要1Mbps,TJA1050完全胜任。
- 看环境:工业现场干扰大,选抗干扰强的收发器。车规级应用,必须选-40°C~+125°C的型号。
一句话总结: 控制器选MCP2515(SPI接口,灵活),收发器选TJA1050(稳定可靠,性价比高)。这个组合我用了不下十个项目,从来没出过问题。
4.5 硬件连接速览
最后给个典型连接图,方便你参考:
MCU (SPI) → MCP2515 (控制器) → TJA1050 (收发器) → CAN总线
SCK → SCK TXD → TXD CAN_H
MOSI → SI RXD → RXD CAN_L
MISO → SO (GND共地)
CS → CS
INT → INT
嗯,就这么简单。下一节咱们会讲怎么配置这些芯片的寄存器,让它们真正跑起来。
公众号:蓝海资料掘金营,微信deep3321