0
收藏
微博
微信
复制链接

常见的CAN总线协议面试题

2026-05-20 15:51
12


2、为什么CAN总线两端需要120欧姆电阻?


CAN总线两端各安装一个120欧姆终止电阻,用于匹配总线的特性阻抗,防止信号反射。


高速通信中,信号到达总线末端时,若无终止电阻,会因阻抗不匹配产生反射,干扰通信。


120欧姆电阻吸收这些反射,确保信号完整性,减少通信错误。


a4d04ef182e619a84d382d044089c9.jpg



3、为什么CAN是消息导向协议?


CAN是消息导向协议,意味着通信基于消息内容而非节点地址。每条消息携带一个唯一标识符(ID),表示消息类型和优先级。


所有节点接收消息后,根据ID决定是否处理。这种机制与基于地址的协议(如I2C)不同,具有以下优势:

  • 灵活性:无需预定义发送者和接收者,易于扩展。

  • 高效性:广播机制减少通信开销。


举个例子,在汽车中,气囊传感器通过CAN总线发送高优先级消息(低ID值),所有相关ECU(如安全系统)可接收并处理。


4、CAN总线的仲裁机制是什么?

CAN总线采用非破坏性位仲裁机制,通过CSMA/CD AMP(载波监听多路访问/冲突检测与消息优先级仲裁)解决多节点同时发送时的冲突。


仲裁基于消息ID,ID值越低,优先级越高。


仲裁过程:

  • 各节点在发送消息时,逐位比较ID。

  • 若节点发送隐性位(1)但检测到显性位(0),则停止发送,进入监听模式。

  • ID最低(显性位最多)的消息赢得仲裁,继续传输。


e83c4a69af34dd1bdf9cd7d8bcf6d6.jpg


06fc334b1f29f1f63ca4295fa26c8d.jpg


51cd51c8b42ebe30af9772cb5573bf.jpg



5、什么是位填充?其作用是什么?

位填充是CAN总线用于同步的机制。在CAN协议中,采用NRZ-5(非归零5位)编码,若连续发送5个相同位(全0或全1),发送端自动插入一个相反位(称为填充位)。接收端识别并移除填充位。


作用:

  • 同步:确保接收端时钟与发送端同步,防止长序列相同位导致的时钟漂移。

  • 错误检测:若接收到6个连续相同位,表明违反位填充规则,触发错误帧。


例如,发送数据“00000”后,插入一个“1”,变为“000001”。接收端移除填充位,恢复原始数据。


6、标准CAN与扩展CAN的区别是什么?

标准CAN(CAN 2.0A)和扩展CAN(CAN 2.0B)的主要区别在于标识符长度:

  • 标准CAN:11位标识符,支持2^11(2048)个消息ID,IDE位为0。

  • 扩展CAN:29位标识符(11位基本ID 18位扩展ID),支持2^29(约5.37亿)个消息ID,IDE位为1。


d45f100e1c6fa45e8b034490bbc432.jpg


7、CAN总线的错误处理机制如何运作?

CAN控制器维护两个错误计数器:

  • 发送错误计数器(TEC):记录发送错误次数

  • 接收错误计数器(REC):记录接收错误次数


节点状态转换规则:

  • 错误主动状态:TEC < 128 且 REC < 128,正常参与通信

  • 错误被动状态:TEC ≥ 128 或 REC ≥ 128,限制发送错误帧

  • 总线关闭状态:TEC ≥ 256,完全脱离总线通信


358b73e83dda9b29c59dd6048e98c1.jpg


8、CAN FD相比传统CAN有哪些改进?

CAN FD 是CAN协议的升级版本,主要区别如下:


a3664e7ab7fe35ea20f7fbc5e5a4e7.jpg


9、CAN FD的FDF、BRS、ESI位分别有什么作用?

CAN FD新增的控制位功能:

  • FDF位:区分CAN报文和CAN FD报文

  • BRS位:位速率转换开关,控制数据段是否使用高速传输

  • ESI位:错误状态指示,表明发送节点的错误状态


99d8e74463d7a4abcf82e95d06c3a5.jpg



10、如何计算CAN总线的波特率?

CAN波特率计算公式:



波特率 = CAN时钟频率 / (预分频器 × (BS1   BS2   1))

实际计算示例:

  • CAN时钟:36MHz(STM32 APB1)

  • 预分频器:6

  • BS1:8TQ

  • BS2:3TQ

  • 波特率 = 36,000,000 / (6 × (8   3   1)) = 500,000 bps = 500Kbps


11、CAN总线通信异常时如何排查?

典型故障现象及解决方案:


2821010cde608b4f9222b45cb2d57e.jpg


CAN总线作为嵌入式系统的核心通信协议,其理论深度和实践广度都值得我们深入掌握。


通过系统学习CAN协议原理、编程实现和应用案例,不仅能在面试中表现出色,更能在实际项目中游刃有余。


登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

云脑智库

专注于相控阵雷达知识与相关资讯分享,参与翻译书籍《共形阵列天线理论与应用。》

开班信息