主题中讨论的其他器件: C2000WARE
大家好!
我必须 在 CAN 收发器提供的定制电路板中测试 TMS320F28386D 中的 CAN_A 和 CAN_B、执行该测试的合适 TI 示例是什么?
其理念是使用 CAN_A 进行传输、并在 CAN_B 或在同一个板中接受。
谢谢你。
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.
大家好!
我必须 在 CAN 收发器提供的定制电路板中测试 TMS320F28386D 中的 CAN_A 和 CAN_B、执行该测试的合适 TI 示例是什么?
其理念是使用 CAN_A 进行传输、并在 CAN_B 或在同一个板中接受。
谢谢你。
好的、您希望使用同一器件进行发送和接收、即使用 CAN-A 进行发送、使用 CAN-B 进行接收。 我们没有这样的示例、但您可以轻松地修改此示例。 您可以这样做:
复制此示例并将所有 CANA 实例替换为 CANB (请注意、此示例当前仅针对 CANA 写入、对于发送和接收配置均是如此)。 为 CANB 正确配置 GPIO 引脚极为重要。 更多信息、请参阅 www.ti.com/lit/SPRACE5。
我必须同时为 can_B 启用第二个中断?
CANA 和 CANB 都是完全独立的模块、具有自己的中断线。 每个模块有2个中断。 使用轮询还是中断完全取决于您、
您好!
很抱歉耽误你的时间。
我已经阅读了文档(SPRACE5)、我认为所有要点都受到了尊重(我正在使用带有正确 GPIO 的示例代码、并添加了从 canaISR 汲取灵感的 canbISR 器件)。 对于硬件、我在连接两端添加了120欧姆电阻器。
这是 CANL 和 CANH 的范围:

在此范围内、 我不 明白消息是否正确( ID 似乎不正确)。
正如我所说、从调试来看、 rxMsgData 值始终为0、并且 rxMsgCount 不会递减、因此有些东西不起作用。
模块 A 和 B 的设置如下:
// CAN Module: A
// Message Object ID Number: 1
// Message Identifier: 0x15555555
// Message Frame: Extended
// Message Type: Transmit
// Message ID Mask: 0x0
// Message Object Flags: None
// Message Data Length: 4 Bytes
// CAN Module: B
// Message Object ID Number: 1
// Message Identifier: 0x15555555
// Message Frame: Extended
// Message Type: Receive
// Message ID Mask: 0x0
// Message Object Flags: Receive Interrupt
// Message Data Length: 4 Bytes (Note that DLC field is a "don't care"
// for a Receive mailbox
//
txMsgData[0] = 0x12;
txMsgData[1] = 0x34;
txMsgData[2] = 0x56;
txMsgData[3] = 0x78;那么您的波形看起来确实是一个有效的 CAN 帧。 如果示波器能够在 CAN 帧上触发、那么事情就会变得很容易、因为您可以在示波器屏幕本身上看到对数据进行了解码。 正如 SPRACE5中建议的那样、我建议最初不要使用中断。 只需发送单个帧并探测接收模块的 CANRX 引脚。 确保数据到达 CANRX 引脚后、即可使用 IFx 寄存器读取数据。 如果您仔细评估每个提示并确保其合规性、SPRACE5中的调试提示会有所帮助。