LPC 1768 CAN总线关闭错误

时间:2012-07-19 13:07:26

标签: embedded arm communication microcontroller can-bus

我正在使用恩智浦的LPC1768 ARM Cortex M3微控制器(datasheetuser manual)。我想在“16.5.8 CAN控制器自检”部分的用户手册中描述的自检模式下测试CAN总线外设,但它不起作用。

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

CANx->CMR = 0x41;

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

实际上,此错误状态意味着“总线关闭错误”。 '总线关闭错误'表示存在帧错误和CAN控制器错误。我测试数据帧和CAN控制器。它有效。

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

2 个答案:

答案 0 :(得分:3)

我不熟悉那个CAN控制器,但这种行为并不让我感到惊讶。如果您正在执行独立测试,那么虽然您正确接收了您发送的消息,但由于总线上没有其他节点,因此该消息将不会被确认。在输入CAN spec

的第6节和第7节中描述的错误状态之前,控制器将重试一段时间

答案 1 :(得分:0)

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