如何使用 CAN-FD 在 LPC5500 上传输数据
1引言
LPC55S1x/LPC55S0拥有带有CAN-FD功能的CAN控制器。LPC5500系列的SDK软件包提供了mcan_interrupt_transfer示例,演示了如何使用SDK的CANAPI来传输CAN帧。基于此示例,本文描述了如何使用CAN-FD的比特率切换和发送延迟补偿功能。启用这两个功能可以提高吞吐量,并消除由收发器延迟引起的误码。
2CAN-FD国际标准ISO11898-1:2015中定义了CAN-FD的实现。为了快速开始使用CAN-FD,针对不熟悉CAN的用户,本节会介绍CAN-FD的一些基本概念。
2.1CAN和CAN-FD的不同
传统的CAN和CAN-FD之间主要有两个区别。首先是CAN-FD可以使用比传统CAN高得多的比特率。传统CAN的比特率限制为1Mbit/s。CAN-FD没有理论的极限值,但实际上会受到收发器的限制。第二个区别是每个CAN消息所含的数据量增加了。传统的CAN最多为8个字节,而对于CAN-FD,每条消息的最大值增加了8倍至64个字节。
随着每个CAN消息所含数据量的增加,CAN-FD每帧需要更高的比特率,以减少通信中的时间延迟并提高实时性。通过启用比特率切换功能,CAN-FD可以达到更高的比特率。
另一方面,比特率越高,比特时间越短。为了使数据域的比特时间比发送延迟更短,引入了延迟补偿。如果没有发送延迟补偿,CAN-FD数据相位中的比特率会受到发送延迟的限制。
2.2比特率切换
在CAN-FD的帧控制相位中,数据域和CRC域与每一帧的开始和结束域相比,以更高的比特率进行传输。
通过设置CCCR寄存器中的BRSE位,可以启用比特率切换功能。启用比特率切换时,我们还需要正确设置仲裁相位比特率(arbitrationphasebitrate)(启用比特率切换之前)和数据域比特率(启用比特率切换之后)。仲裁相位比特率由NBTP寄存器设置,数据相位比特率由DBTP寄存器设置。
2.3收发器延迟补偿
MCAN的协议单元已实现延迟补偿机制,以补偿收发器的延迟。通过收发器延迟补偿,可以对数据位时间短发送延迟的情况进行配置,这在新的ISO11898-1中有详细介绍。可以通过设置DBTP寄存器中的TDC位来启用该功能。TDCR寄存器中的TDCO字段用于设置收发器延迟补偿的偏移量。偏移量定义了从m_can_tx到m_can_rx的测量延迟与二级采样点之间的距离。发送延迟补偿的偏移量和二级采样点如图1所示。

本节简要介绍了如何使用CAN-FD传输数据以及启用比特率切换功能和发送延迟补偿。这些基于LPC5500系列的SDKmcan_interrupt_transfer示例。
3.1硬件环境
•板子
—2块LPCXpresso55S16板子或者2快LPCXpresso55S08板子
•其他
—2根MicroUSB线
—1根120欧姆端接的CAN线
—PC
•板子设置
以LPC55S16为例,CANshield连接到测试板。用microUSB线连接PC和测试板上的J19,用于加载和运行demo。这也用于PC上UART终端的UART通信。板子的设置和CAN连接如图2所示。

3.2软件环境
•工具链
—Keil或或更高版本•软件包
—LPC55S16SDK(2.9.0)/LPC55S08SDK(2.9.0)或更高版本
•UART终端程序
—PuTTY或类似的程序
