1

我正在使用 NXP 的LPC1768 ARM Cortex M3 微控制器(数据表用户手册)。我想在用户手册“16.5.8 CAN 控制器自测”部分中描述的自测模式下测试 CAN 总线外围设备,但它不起作用。

我尝试了 NXP 知识库中描述的这些 NXP 示例,并使用了 NXP 示例代码(can_self_test 代码)。所有引脚配置运行正常,所有 CAN 总线配置和 CAN 总线消息帧也运行正常(一一控制)。但是在这一步之后的 CAN1_Send 函数内部:

CANx->CMR = 0x41;

错误标志被设置。尽管如此,CAN1_Send 返回 SUCCESS。

事实上,这个错误状态意味着“总线关闭错误”。“总线关闭错误”表示存在帧错误和 CAN 控制器错误。我测试数据帧和 CAN 控制器。有用。

我使用 RS-232 电缆连接 CAN1 和 CAN2。对于自测,我使用 CAN1。

4

2 回答 2

3

我不熟悉那个 CAN 控制器,但这种行为并不让我感到惊讶。如果您正在执行独立测试,那么尽管您正确接收到您发送的消息,但由于总线上没有其他节点,消息将不会被确认。在进入CAN 规范第 6 节和第 7 节中描述的错误状态之前,控制器将重试一段时间

于 2012-07-20T10:15:25.880 回答
0

我在这里使用 LPC1788 遇到了同样的问题,问题与错误的 CPU 时钟设置有关。我错误地将 CPU 设置为以 96 MHz 运行,并且我(也错误)认为 CPU 以 100 MHz 运行。在这种情况下,CAN 波特率配置不一致,CAN 模块无法传输任何消息。然后,当我修复 CPU 时钟配置时,问题就解决了。

于 2014-02-13T12:39:38.200 回答