引言
控制器局域网(CAN)标准不断发展,正用于车载和工业网络之外的许多新应用。支持它的微处理器变得普遍且价格低廉,并且开源协议栈让其非常容易访问,同时也容易添加至新系统。有许多CAN板可用于BeagleBone (Capes)、Stellaris (BoosterPacks)、Arduino (Shields)和其他微处理器开发平台。当设计人员的系统上电却不能工作时,应该怎么办呢?本文为您介绍一种对CAN物理层进行调试的较好工程方法。我们将介绍基础调试步骤,并说明一个CAN物理层应有的性能,以及找出问题的一些小技巧。
调试基础知识
ISO11898-2和ISO11898-5规范详细说明了高速CAN物理层即收发器。掌握CAN物理层的基础知识以后,利用简单的调试工具便可迅速地找出常见问题。所需的基本实验室工具为示波镜、数字万用表(DMM)和一个电源。如果想要深入了解问题,则需要更高精度和更复杂的工具。这种问题已非本文讨论的范畴,但是这里介绍的基础知识可帮助确定问题所属类别,以及进一步调试所需的其他工具。一个由 TI 组装的CAN演示系统以及TI的SN65NVD255D评估模块(EVM)1,用于演示硬件。另外,我们还使用了其他一些东西,例如:CAN连接器外接头电缆和芯片钩(抓住收发器引脚,让其连接至电缆,以更加容易地连接示波器指针,如图1所示)。
图1:CAN物理层调试基本工具
CAN调试例子
图10显示了一个CAN演示系统,在PCB右边,连接至菊形链输出的CANH线路被损坏。出现这种情况的原因是,系统后面的一个固定螺栓摩擦PCB,而在几年的时间里该系统被运输至世界各地。当系统通过菊形链总线接口连接至其他CAN节点时,便故障无法工作。
图10:带有损坏CANH线路的CAN演示系统
图11所示CANH信号表明了该损坏PCB线路的效果。另外,DMM连续性检查也可证实该开路。
图11:PCB上CANH线路遭损坏的TI CAN信号
图11还突出详细显示了CAN帧的另一个重要部分,即ACK位。示波器使用单一模式,在某个单比特发现触发器时,其在右手节点的TXD引脚上被触发。该单比特为这一节点产生的ACK位,目的是确认接收到一个有效的CAN帧。所有接收节点确认收到发送节点的CAN帧。相比在TXD上看到的发送ACK位,总线上所看到的ACK位的位时间稍长。这是同时发送ACK位的多个节点的假象。影响这种长位时间的一些因素包括:通过线缆的5ns/m延迟、三个CAN节点之间的时钟计时漂移以及同时发送一个ACK位的两个节点所产生的高差分电压。如果这些因素使ACK位(空档)变得更长,并在ACK分隔符内保持显性,则其可能引起CAN误差帧。
CAN总线调试的另一个例子是,在某个系统中,只有非常慢的CAN数据速率(比特计时)才会起作用。把一个示波器连接至TXD引脚,在TXD输入端显示出非常慢的上升时间,如图12所示。1Mbps的CAN数据速率下,9.6μs计时延迟相当于10比特。它的根本原因是:我们正使用一个具有开路漏极的微处理器来驱动收发器的TXD引脚。在这种情况下,没有真正的逻辑高电平驱动。仅有CAN收发器的弱内部上拉正驱动TXD引脚高,因此它的RC时间常量非常长。通过在TXD引脚上添加一个上拉电阻器,便可轻松解决这个问题。
图12:TXD引脚上慢上升时间例子
结论
本文介绍的CAN物理层基础和调试举例,应该让您不那么惧怕进入CAN世界了吧。利用本文提供的其他一些参考资料以及相应的数据表,设计人员应该可以马上让其CAN系统正常运行了。
参考文献
1、TI SN65HVD255D评估模块,网址:www.ti.com/sn65hvd255devm-aaj
2、“控制器局域网(CAN)介绍”,作者: Steve Corrigan,见于《应用报告》5.1.13小节,网址:www.ti.com/sloa101-aaj
3、《控制器局域网物理层要求》,作者: Steve Corrigan,刊发于《应用报告》,网址:www.ti.com/slla270-aaj
4、《3.3V CAN(控制器局域网)收发器概述》,作者: Jason Blackman和Scott Monroe,刊发于《应用报告》,网址:www.ti.com/slla337-aaj
5、《CAN总线连接的关键间隔》,作者: Steve Corrigan,刊发于《应用报告》,网址:www.ti.com/ slla279-aaj
6、《CAN收发器的系统评估》,作者: Sam Broyles,刊发于《应用报告》,网址:www.ti.com/slla109-aaj