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.

[参考译文] MSPM0G3507:CAN 中断错误

Guru**** 2579715 points
Other Parts Discussed in Thread: MSPM0G3507, TCAN1042DEVM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1345166/mspm0g3507-can-interrupt-error

器件型号:MSPM0G3507
主题中讨论的其他器件: TCAN1042DEVM

尊敬的 TI:

我 正在调试以下示例代码"mcan_message_rx_lp_MSPM0G3507_nortos_ticlang"、以接收来自我的 python 脚本的数据。

(PYTHON 脚本用于连接 ST MCU 并连接 TJA1050收发器、以将数据包发送到其他 与 MSPM0连接的 TJA1050收发器)

正如、  我使用的不是 TCAN1042DEVM、而是 TJA1050收发器、但我无法在 MSPM0端接收原始数据、我能够在获得 CAN 中断时进行即时调试  

上面的值是中断时得到的值、然后我去看看 CAN 的寄存器数据表  

 有关更多详细信息、请检查 MCAN_IR (偏移量= 7050h)[复位= 80000000h]、发现这些位即使在中断 函数调用后未清除、也会变为高电平。

由于这个原因,我无法进入吹气状态。

我附上了自己的 Python 代码供参考、请让我知道背后的问题、

import can
import time
import can.interfaces.serial


COMM_PORT_NAME = 'COM20'
data=[23, 25, 0, 1, 3, 1, 4, 1]
ID_FROM_PYTHON = 0x1
#ID_FROM_MCU = 0x36

def send_one():
    """Sends a single message."""
    bus = can.interface.Bus(interface='serial', channel= COMM_PORT_NAME, bitrate=200000)
    try:
        while True:
            msg_from_mcu = can.Message(
                arbitration_id=ID_FROM_PYTHON, data=data, is_extended_id=True)

            # Send the message to the MCU
            bus.send(msg_from_mcu)
            print(f"Message sent on {bus.channel_info}, Data: {data}, CAN ID: {ID_FROM_PYTHON}")
            time.sleep(0.4) 

    except can.CanError: 
        print("Message NOT sent")

    bus.shutdown()

    


if __name__ == "__main__":
    send_one()

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否 首先尝试过 SDK 中的 mcan_multi_message_rx 演示代码? 如果是、请您更改代码中的任何配置。  

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,我浏览了演示-->out_of_box 但没有在下面找到 CAN 演示,你能 分享同样的路径吗?

    而在上面, 由于我无法接收到新的消息,所以每次或者现在都有 pea 位变为高电平(gInterruptLine1Status = 0x08000000),

    如果您有 STM32到 MSPM0 CAN 接口的示例代码,您能与我分享吗,因为我的用例与它相同。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    找到的驱动程序的链接。  C:\ti\mspm0_sdk_1_30_00_03\examples\nortos\lp_MSPM0G3507\driverlib\mcan_message_rx

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,我使用的示例代码与上面提到的相同,

    如果您有、?、您能否共享 ST 和 MSPM0 CAN 接口的示例代码??

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们没有 ST MCU 的示例代码。  

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、如果我通过 CAN 协议 与  TJA1050 收发器连接两个 MSPM0G3507、那么 Dose 它可以使用它或者让 TI 使用它吗?

    我们需要支持为什么它不起作用;

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果 我通过 CAN 协议 与  TJA1050 收发器连接两个 MSPM0G3507、则该方法应该起作用。  

    此致

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的 MSPM0到 MSPM0可以正常工作,但由于我有其他 MCU( PIC,ST ),我没有与相同的通信,

    您能说明可能的原因吗? 由于我尝试了其他 MCU ,如 ST 到 PIC CAN 通信,它们工作正常,但当我尝试做同样的事情时,我得到了车库的价值  gInterruptLine1Status 变量,你能请我简要介绍一下这个问题吗?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉回复延迟。 因为在这里的假期,刚刚回到办公室。  

     你得到了什么垃圾价值  gInterruptLine1Status  变量? 您的测试设置是通过 CAN 接口从 MSPM0到 ST MCU、对吗?

    此致、

    现金豪