我正在使用恩智浦(datasheet,user manual)的LPC1768 ARM Cortex M3微控制器。我想在用户手册中“16.5.8 CAN控制器自检”一节中描述的自检模式下测试CAN总线外设,但它不起作用。
我尝试了these NXP examples,描述了on the NXP knowledgebase,并使用了恩智浦示例代码(can_self_test代码)。所有引脚配置运行正常,所有CAN总线配置和CAN总线消息帧也运行正常(逐个控制)。但是在这一步之后,在CAN1_Send函数中:
CANx->CMR = 0x41;
设置错误标志。尽管如此,CAN1_Send还是返回了成功。
实际上,这个错误状态意味着“总线关闭错误”。‘'bus error’表示存在帧错误和CAN控制器错误。我测试了数据帧和CAN控制器。它起作用了。
我使用RS-232电缆连接CAN1和CAN2。对于自检,我使用CAN1。
发布于 2012-07-20 18:15:26
我不熟悉CAN控制器,但这种行为并不让我感到惊讶。如果您正在执行独立测试,那么尽管您正确地接收到了所发送的消息,但由于总线上没有其他节点,因此该消息将不会得到确认。控制器将重试一段时间,然后进入CAN spec第6节和第7节中描述的错误状态
发布于 2014-02-13 20:39:38
我在使用LPC1788时也遇到了同样的问题,这个问题与错误的CPU时钟设置有关。我错误地将CPU设置为以96 MHz的频率运行,我(也是错误的)认为CPU是以100 MHz的频率运行的。在这种情况下,CAN波特率配置不一致,CAN模块无法传输任何消息。然后,当我修复CPU时钟配置时,问题就解决了。
https://stackoverflow.com/questions/11561543
复制相似问题