This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
大家好,
我目前正在通过MCP2551收发器处理与F2.8379万D卡(一个启动板和一个控制卡)之间的CAN通信,我希望每秒发送一条消息。
我已经在同一个卡的CAN A和B之间发送/接收消息(两个都单独),所以我认为GPIO /硬件配置没有问题,但当我尝试连接两个卡时,第一个说话节点会持续产生电子邮件。 就像接收器没有ACQ。
作为参考,我的发射器的CANES REG启用了EWARN和EPASS位,LEC等于“011”。 我在TRM中看到了这个问题,但我不明白到底是什么问题。
对于我来说,这是配置/软件问题,您是否首先知道不同的外围设备/中断是否可能会导致CAN模块故障? (我正在使用ADC,PWM,计时器,从闪存运行,很快使用DMA和CLA)。
另一个提示是,帧的间隔精确到120US。
目前我只使用RX中断,您认为使用TX中断来监控总线是否至关重要? (我的未来目标还将是验证节点的存在性)。
最后,您是否有关于CAN总线监控/故障管理的代码示例/文档?
非常感谢您的帮助,祝您度过美好的一天。
此致,
热雷梅
您好,Jeremy:
根据您对错误标志状态和值的描述,这指向另一节点未接收到CAN消息。 在收到这些信息之前,这些信息将一直显示在CAN总线上。 这说明了为什么您在CAN总线上看到定期消息,因为它未被接收或确认。 您提到Cana和CANB可以使用同一张卡进行通信,但您看到您正在2张卡之间描述此问题。 您需要回答以下几个问题:
1) 您是否使用相同的物理接口(MCP2551收发器和CAN总线)在相同的卡和不同的卡上进行CAN通信?
2) 与不同的卡通信时,您是否使用相同的系统速度和波特率?
CAN SW的唯一代码示例是我们在C2000 Ware/controlSUITE中的内容。 对于总线监控,建议使用CAN接口连接到PC,因为这使您能够查看CAN总线上的活动,错误,波特率以及哪些节点处于活动状态。 例如,如果您在LabView上工作,一个很好的使用工具将是USB 8473。
此致,
约瑟夫
您好,Joseph,感谢您的回答。
事实上,我已经尝试过配置:每张卡都通过Cana和CANB对自己讲话。 此配置适用于两个卡(一个一个,我只使用两个MCP2551)。
所以我认为我们可以消除总线和硬件问题。
但现在我只使用CAN A来连接每张卡,我尝试让它们进行通信:第一张卡连续发送消息(可能是像您说的那样的ACK问题)。
我不认为这是因为巴士长度的问题(关于2 cm :))。 波特率是相同的,但我不确定外围时钟(µC核心和CAN核心),启动板上的gPIO73不能用于验证它。
此外,我正在对存储卡使用类似的代码,除了一个使用PWM/ADC和其它模块之外,您知道UARTprintf是否会对CAN通信造成故障吗?
谢谢,祝您度过美好的一天!
此致,
热雷梅
您好,Joseph:
很抱歉我的回答延迟了,我正在同时处理不同的项目...
是的,我可以在示波器上看到帧,当我启动发射器(启动板)时,我可以在短暂延迟后持续发射。
这是接收器(控制卡)的寄存器:
我的RX帧中断,测试为“CANIntStatus(Cana_base, CAN_INT_STS_CAUS)"(结果始终为3.2768万...),然后是getStatus函数“98”(您可以在我的屏幕截图中看到的值)。
在我的主循环中有两个"IF"后,一个用于我自己的应用程序(具有控制定律),另一个用于与RX标志+状态值条件的CAN通信(目前我只有一个受监控的RXmsgObject)。
我将尝试验证#ifdef或其他,以查看我的卡的“真实”时钟配置。
现在,你已经知道了一切:)
非常感谢您的帮助,祝您度过美好的一天,
此致,
热雷梅