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.

[参考译文] TCAN4550EVM:如何配置控制器模式?

Guru**** 2204280 points
Other Parts Discussed in Thread: TCAN4550, MSP430FR6989, TCAN4550EVM, BOOSTXL-CANFD-LIN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/870334/tcan4550evm-how-to-configure-the-controller-mode

器件型号:TCAN4550EVM
主题中讨论的其他器件:TCAN4550MSP430FR6989BOOSTXL-CANFD-LIN

你(们)好

我想将 TCAN4550配置为控制器模式、通过 SPI 接口发送 CAN 帧、然后检查 GPO2上的输出。 您能告诉我如何配置硬件连接和软件配置来实现这一点吗?

我有一个 MSP430FR6989 Launchpad 和 TCAN4550EVM、选择 MSP430FR6989作为 MCU 板的原因是我在 TCAN4550驱动器代码中找到了该器件型号。

 

我做了一些工作:

用于硬件连接

TCAN4550EVM

  1. TCAN4550EVM 由 TCAN4550EVM 上的直流电源通过 J8 (->VSUP)供电。
  2. VIO 选择(S1)为3.3V 输出。

MSP430FR6989 LaunchPad

  1. P1.4 -> SPI CLK
  2. P1.6 -> MOSI
  3. P1.7 -> MISO
  4. P2.5 -> SPI CS

用于软件配置

  1. TCAN455x 驱动程序库演示 是来自 TCAN4550产品文件夹页面的参考代码。
  2. 我在   Init_can ()之后添加了 TCAN4x5x_Device_EnableTestMode (TCAN4x5x_DEVICE_TEST_MODE_CONTROLLER)以尝试使 TCAN4550进入控制器模式

    (笑声) (笑声) (笑声) (笑声)

    /*********
    *目前一切都适用于 TCAN4550 *
    (小部分 /
    init_cand();//运行主 MCAN 配置序列。 大部分配置都在这里!

    TCAN4x5x_Device_EnableTestMode (TCAN4x5x_device_test_mode_controller);

    /*定义我们要发送的 CAN 消息*/
    TCAN4x5x_MCAN_TX_Header 接头={0};

    (笑声) (笑声) (笑声) (笑声)

  3. 以使用以下代码检测 GPO2上的输出。

    TCAN4x5x_MCAN_TransmitBufferContents (1);//请求发送 TX 缓冲区1

    TCAN4x5x_MCAN_TransmitBufferContents (0);//现在我们可以发送我们之前排队但未发送的 TX FIFO 元素0数据。

您能告诉我我还需要做些什么来实现我的目标吗?

谢谢你。

王少文

shawn-wang@ti.com

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

    您好、Shawn、

    从您的描述中、您似乎在获得此设置的正确路径上。

    从 J8 VSUP 引脚为 TCAN4550 EVM 供电是正确的。  您将为 VSUP 使用什么电压?

    从您提供的电路板设置照片中、我注意到除了您将尝试监控 TXD 数据的接头引脚外、GPO2 LED 还连接到 GPO2。  应取消选择 S4上的 GPO2 LED DIP 开关(切换至电路板的外沿)、以提高 GPO2数据(TXD_INT_CAN)上的信号完整性。 当 GPO2用作引脚状态视觉指示的中断时、LED 很有用、但当引脚在测试模式下用作数据引脚时、LED 不会被使用。 这是 DIP 开关的用途、它允许 LED 轻松断开与网络的连接。

    使用 TCAN4x5x_Device_EnableTestMode (TCAN4x5x_DEVICE_TEST_MODE_CONTROLLER);将 TCAN4550置于测试模式的函数看起来是正确的。  然而、控制器测试模式将从系统中移除集成 CAN 收发器、但是控制器仍将期待正常的 CAN 行为、例如 TXD 环回到 CAN 收发器内部出现的 RXD 引脚。  如果您没有将外部收发器连接到在控制器模式下运行的 TCAN4550、请将 TXD 数据回路到 RXD 引脚上、和/或进行任何其他配置更改、我认为 TCAN4550会将此视为错误条件、并可能会禁用自身或阻止您观察数据。

    此外、如果没有额外的 CAN 节点(收发器和控制器)、例如第二个 TCAN4550 EVM 或 CAN 分析仪测试设备、可以"确认"您尝试发送的 CAN 数据包、 然后、TCAN4550控制器还会将此视为错误和传输失败、这可能会导致"总线断开"状态、并阻止您在 GPO2引脚上监控 CAN 数据包。

    我没有尝试像您尝试的那样设置测试配置、我需要花一点时间来完成更详细的配置、以便为您提供需要设置哪些额外寄存器位的相关信息、 以及是否需要进行任何其他硬件连接。  我将处理此问题、并在明天或在我为您提供完整解决方案后再次发布。

    此致、

    Jonathan

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

    你好、 Jonathan

    感谢您的快速回复!

    1、VSUP 为9V、这对于 TCAN4550EVM 电源而言应该是可以的。

    外部 CAN 收发器

    我在 TCAN4550EVM 上找不到连接到 GPIO1的接头、通过 GPO2和 GPIO1连接外部 CAN 收发器与 TCAN4550EVM 可能不方便。 如何使用 MSP430FR6989Launch Board + BOOSTXL-CANFD-LIN (配置为控制器模式)+ TCAN1042EVM 设置 CAN 节点?

    3、用于附加 CAN 节点

    如前所述、TCAN4550EVM 是一个不错的选择。 我是否需要将 MCU 板连接到 TCAN4550EVM 以实现额外的 CAN 节点?

    我想提前准备一些硬件、并期待您的意见和完整的解决方案。

    谢谢!

    --------------------------------------------------

    此外、在正常模式下、我进行了检测 TCAN4550EVM 的 CANH 或 CANL 的测试、硬件连接与上一篇文章中的图片相同。 代码如下所示。

    /*********
    *目前一切都适用于 TCAN4550 *
    (小部分 /
    init_cand();//运行主 MCAN 配置序列。 大部分配置都在这里!

    /*定义我们要发送的 CAN 消息*/
    TCAN4x5x_MCAN_TX_Header 接头={0};  
    uint8_t DATA[4]={0x55、0x66、0x77、0x88};  
    header.DLC = MCAN_DLC_4B;  


    header.ID = 0x144;//设置 ID
    header.FDF = 1;// CAN FD 帧被启用
    header.BRS = 1;//位速率开关被启用
    header.EFC = 0;
    插头.mm = 0;
    header.RTR = 0;
    header.XTD = 0;//本示例中未使用扩展 ID
    header.ESI = 0;//错误状态指示器


    TCAN4x5x_MCAN_WriteTXBuffer (0、标头、数据);  

    /*让我们生成不同的 CAN 消息*/
    数据[0]= 0x11;
    数据[1]= 0x11;
    DATA[2]= 0x11;
    DATA[3]= 0x11;//定义数据有效载荷

    header.DLC = MCAN_DLC_4B;  
    header.ID = 0x123;//设置 ID
    header.FDF = 1;// CAN FD 帧被启用
    header.BRS = 0;//位速率开关被启用
    header.EFC = 0;
    插头.mm = 0;
    header.RTR = 0;
    header.XTD = 0;//本示例中未使用扩展 ID
    header.ESI = 0;//错误状态指示器

    TCAN4x5x_MCAN_WriteTXBuffer (1、标头、数据);//此行会将数据和标头写入 TX FIFO 1
    TCAN4x5x_MCAN_TransmitBufferContents (1);//请求发送 TX 缓冲区1

    TCAN4x5x_MCAN_TransmitBufferContents (0);//现在我们可以发送我们之前排队但未发送的 TX FIFO 元素0数据。

    我有2个问题:

    1) 1)执行此语句后、TCAN4x5x_MCAN_TransmitBufferContents (1);//请求发送 TX 缓冲区1、 可以在特定的时间间隔内在 CANH 和 CANL 上连续检测 CAN 帧。 下一条语句  TCAN4x5x_MCAN_TransmitBufferContents (0)的执行  将对输出没有影响。

    在没有额外 CAN 节点的情况下、这是预期的行为吗?

    2) 2)检测到的 CAN 帧应为 TX 缓冲器1的输出、详细位如下所示:

    a:代码将 ESI 设置为0、但检测值为1。  这是否意味着检测到错误?

    b.水平线的"0011"是什么意思?

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

    您好、Shawn、

    您通常会看到设置正常。  您将需要一个连接到 GPIO1和 GPO2引脚的收发器(例如 TCAN1042 EVM)或将 GPIO1和 GPO2引脚相互环回、以防止控制器在控制器测试模式下看到错误。  由于 CAN 仲裁的工作方式、当它尝试发送数据包时、它会监控 RXD 引脚以确保其与 TXD 引脚上的值相匹配。  如果这些不匹配、则控制器将停止传输、认为它丢失了仲裁。  实际上、当您尝试使用控制器测试模式时、我认为这是您的主要问题。  当您切换至正常模式时、内部收发器将 TXD 信号循环回 RXD 信号、以便您在 CANH 和 CANL 引脚上查看波形。  但是、您没有第二个节点来确认邮件、因此它会不断尝试重新发送相同的邮件、因为它在发送时未成功。

    感谢您提供有关 VSUP 轨的信息。  使用9V 的 VSUP 是很好的。  有一个极性保护二极管会使引脚上的电压下降一个二极管压降、但您有足够的裕量来保持 TCAN4550引脚上的电压大于6V、因此这里没有问题。  我主要想确保您的设置中不会出现任何形式的电压问题。

    您可以为此应用使用 TCAN4550 EVM 或 BOOSTXL-CANFD-LIN 板。  我将该 EVM 设计为通用板、可通过跳线与任何 MCU 板配合使用。  然后、我设计了 BoosterPack、以便更轻松地将 TCAN4550与 TI MCU LaunchPad 配合使用并进行评估。  BoosterPack 等电路板之间存在一些微小的差异、例如具有额外的 LIN 收发器、但从 TCAN4550的角度来看、它们是等效的。

    GPIO1和 GPO2引脚都连接到 EVM 的底部数字 IO 接头。  我在下图中突出显示了它们。  该 EVM 旨在支持 TCAN4x5x 系列的未来器件、这些器件可支持更宽的 VIO 范围(2.5V 和1.8V)、以及可根据用于 TCAN4550的晶体提供给 MCU 的电势输出时钟。  该时钟输出功能尚不可用、但这正是在接头引脚上添加额外 SMA 和丝印标签的原因。  如果造成混乱,我表示歉意。

    我建议您将第二个 TCAN4550和 MCU 组合连接到您的当前设置、以便拥有一条完整且功能齐全的 CAN FD 总线、该总线可以确认消息并相互发送和接收数据包。  这将有助于全面评估您的设置、与尝试将单个板与外部收发器配合使用相比、这将是一个更好的解决方案、因为您将收到确认错误。  一般来说、CAN 总线需要2个完整的节点才能正常工作。

    关于 ESI 位、这很可能是由于缺少确认节点导致消息传输失败而产生的错误。  添加第二个节点应清除此问题。

    关于4个 DLC 位之后的位、我认为您错过了额外的"0"、"1"位之间实际上应该有5个"0"位。  第一个"1"位是一个"填充位"、当它检测到5个或更多相同值的连续位时、由控制器自动插入。  当它检测到这种情况时、它将在接收节点将自动丢弃的字段中插入一个相反的值。  由于 DLC 字段为"0100"、后跟第一个"0001"数据字段、因此有一个包含5个连续"0"位的字符串、导致填充位插入到原始数据字节的"1"位之前。  我还认为、数据字节之后的 CRC 位碰巧作为另一个"0001"数据字节出现、从而产生数据"0011"神秘字节的错觉。

    此致、

    Jonathan

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

    你好、 Jonathan

    感谢您的快速回复。 你的回答回答回答了我所有的疑问,谢谢!

    因此、我的理解是、完整的评估系统可以指如下所示的组合。 (我不连接所有导线、只是一个原理图。)

    我是否可以通过2 条 Dupont 线连接这两个 CAN 节点?  连接在 TCAN1042EVM 和 TCAN4550EVM 之间的黄色导线和蓝色导线。

    稍后、根据客户的反馈、我将考虑是否使用上面显示的组合进行完整评估、

    感谢您的支持。

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

    您好、Shawn、

    我很高兴能够为您提供帮助!

    是的、您在图片中显示的内容应该可以正常工作。  如图所示、您只需要提供 CANH 和 CANL 连接、然后在 TCAN4550 EVM 和 MCU LaunchPad 之间建立所有其他连接、正如我们已经讨论过的那样。  除了使用 TCAN1042配置 MCU 以实现控制器模式、两个节点之间的位时序和其他设置可以相同。

    此致、

    Jonathan

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

    Jonathan

    感谢你的帮助。

    '除了使用 TCAN1042配置 MCU 以实现控制器模式之外、两个节点之间的位时序和其他设置可以相同。'

    您的意思是"在将 MCU 配置为  TCAN4550用于控制器模式之外、..."

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

    您好、Shawn、

    我很抱歉造成任何混淆。  我将尝试澄清。

    在您的设置中、您有两个"节点"、其中每个节点包含一个 MCU 和 TCAN4550。  其中一个节点使用 BoosterPack、其中一个节点使用 TCAN4550的通用 EVM。  如果您使用了 TCAN4550的集成 CAN FD 收发器、则可以使用相同的设置、甚至是完全相同的固件来配置这两个节点、尽管在不同类型的电路板上实现了这些节点、但它们仍能够相互通信。  我的要点是 TCAN4550位时序和其他配置设置是相同的。

    但是、您正在尝试在其中一个节点上绕过 TCAN4550的内部收发器、方法是在控制器模式下使用该收发器并添加一个 TCAN1042收发器。  在此节点中、不能使用与使用内部收发器的节点完全相同的 TCAN4550寄存器配置。  您必须修改代码和寄存器设置以将其置于控制器模式。  不过、我的观点是、除了进行这种简单的控制器模式修改之外、TCAN4550的所有其他位时序、时钟和其他寄存器设置都可以与您在使用 TCAN4550内部收发器的节点中使用的设置相同。

    更重要的是、为了使用外部收发器、如 TCAN1042、使用绕过 TCAN4550收发器应该是内部收发器在正常模式下使用 TCAN4550的应用程序的一个非常简单的代码修改。  这是一条简单的注释、您无需担心需要进行主要代码修改才能在控制器模式下使用 TCAN4550。

    我希望这清除了我之前的帖子、但我相信您已经完全正确地了解了如何配置系统。

    此致、

    Jonathan

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

    Jonathan

    非常感谢!

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

    你好、Jonathan

    我仍然对 CAN FD 的速度有疑问。

    我知道、将 BRS 位设置为隐性位(1)意味着数据帧的其余部分以更高的位速率(高达5Mbit/s)发送。  

    因此、我的问题是、使用 CAN FD 控制器时、我是否可以使用命令将 CAN FD 速度设置为特定值、或者速度仅受其他因素(例如工作温度和线长)控制、不能进行人工设置?  谢谢!

    新年快乐!  

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

    您好、Shawn、

    祝您新年快乐!  很抱歉、我的回复很晚、因为我对这篇帖子失去了跟踪、刚刚看到了您的最后一篇帖子。

    我想你的问题答案是不、没有设置速度的"命令"、也没有、其他因素、例如温度和导线长度不会导致速度变化。  配置位时序参数(如 DTSEG1、DTSEG2、DBRP、DSJW 等)后、速度被置位(寄存器0x100C)。

    当您使用标称和数据位时序配置 TCAN4550时、控制器将对所有消息使用这些设置。  总线上的所有器件应配置为具有相同时序参数的相同速度、以确保正确通信并防止节点发出错误。  控制器只为位时间的每一部分分配指定的时间量。  在这种情况下、您必须事先根据输入时钟频率(通常为20Mhz 或40MHz)确定每个位所需的时间量。  控制器没有基于预先确定的设置确定特定比特率的方法、例如500kbps、2Mbps 或5Mbps。  如果您要更改速度、只需更改各种设置的分配、这些设置将导致更快或更短的位。

    但从这个意义上讲、MCU 可以通过让 MCU 写入这些寄存器来随时更改数据速率、这实际上可以被视为"命令"。  BU 没有一组简单的命令或具有预定设置的寄存器。

    我希望这能回答你的问题,我再次对我的答复拖延表示歉意。

    此致、

    Jonathan