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.

[参考译文] TMS570LS3137:有关 FlexRay 配置的问题

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1002090/tms570ls3137-questions-about-flexray-configure

器件型号:TMS570LS3137

我们在 演示板上运行 TMS570_FlexRay_Example_node。在 FlexRay.c 中、

	// Buffer #1
	Fr_LPduPtr->fid  = 1;    // frame ID
	Fr_LPduPtr->dp   = 0x80; // Pointer to start of data in message RAM
	Fr_LPduPtr->cfg  = 1;    // TX frame
	Fr_LPduPtr->sync = 1;    // sync frame indicator
	Fr_LPduPtr->sfi  = 1;    // startup frame indicator
	Fr_LPduPtr->pl   = 9;	 // 18 byte payload
	Fr_LPduPtr->crc  = header_crc_calc(Fr_LPduPtr);

有两行代码用于配置 同步 帧 指示器和 启动 帧 指示器、但  我们在技术参考手册中没有找到要配置的寄存器。根据我们的理解、它应该在 写入头段3寄存器中配置、但位[31:11] 是保留的、那么这是如何配置的?

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

    FlexRay 通信控制器不具有计算标头 CRC 的功能。 主机 应为所有发送缓冲器提供报头 CRC。

    这两个指标用于 CRC 计算。 请参阅 Flexray 规范中定义的 FAME 格式。

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

    是否可以配置这两个指示器? 如何配置它?

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

    是的、它们在 SUCC1寄存器中配置:位8和位9

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

     FlexRay 网络上有2个节点、我们在演示板上运行示例代码、但代码在 while ((Fray_PST->SIR_UN.SIR_UL 和0x4)= 0x0)时停止;  //等待 CYC 中断标志、我们已将  TJA1080A 用作 FlexRay 收发器,、并且在  CONFIGINDIF_COLDSTART 节点中配置冷启动。

    Fr_ControllerInit(Fray_PST);
    	// Initialize Interrupts
    	Fray_PST->EIR_UN.EIR_UL       = 0xFFFFFFFF; // Clear Error Int.
    	Fray_PST->SIR_UN.SIR_UL       = 0xFFFFFFFF; // Clear Status Int.
    	Fray_PST->SILS_UN.SILS_UL     = 0x00000000; // all Status Int. to eray_int0
    	Fray_PST->SIER_UN.SIER_UL     = 0xFFFFFFFF; // Disable all Status Int.
    	Fray_PST->SIES_UN.SIES_UL     = 0x00000004; // Enable CYCSE Int.
    	Fray_PST->ILE_UN.ILE_UL       = 0x00000002; // enable eray_int1
    
    	Fr_AllowColdStart(Fray_PST);
    }

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

    您好、QJ Wang、

    我想知道演示板是否需要两个 FlexRay 收发器、因此如果我使用两 个演示板作为两个节点、我需要四个收发器。 我的理解是否正确?

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

    如果同时使用通道 A 和通道 B、则每个板上需要2个收发器。

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

    您不必为测试使用两个通道。 如果只有两个节点、则两个节点都必须配置为冷启动节点、并且两个节点都必须无故障、并且每个起始帧都必须是同步帧。

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

    因此 、我可以使用2个具有2 个收发器的演示板来运行示例代码?或者、即使我只使用一个通道进行测试、2个演示板仍然需要4个收发器?我们只有一个具有2 个收发器的子卡、两个演示板能否共享 此子卡的2个收发器?

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

    这取决于您的应用。 您可以选择单通道或双通道。 每个器件的每个通道都需要一个 PHY 收发器。  

    如果仅使用通道(例如通道 A)、则节点只需要一个收发器。 这意味着两个节点需要两个收发器:一个用于节点1通道 A、另一个用于节点2的通道 A。  

    MCU 和 PHY 收发器之间的信号布线应尽可能短。  

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

    示例 代码是使用单通道还是双通道配置的?如何修改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用两个通道:
        FR_LPdupTR->CHB  =  1;   // 通道 B
        FR_LPdutr -> CHA  =  1;   // 通道 A
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何仅使用一个通道?我设置  FR_LPdutr->CHB  = 0; FR_LPdutr->cha  = 1;但 仍在 while ((Fray_PST->SIR_UN.SIR_UL & 0x4)= 0x0)停止;  

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

    你是对的。 要仅使用通道 A,  FR_LPdutr ->CHB  = 0; FR_LPdutr -> CHA  =  1。

    我不确定是什么导致了问题。 对于两个节点群集、 两个节点都必须无故障。  

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

    除了这行代码之外、示例 代码中是否还有其他需要修改的内容?

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

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

    通道 A 是否对应于 flexray1、 通道  B 是否对应于 flexray2

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

    FlexRay 有两个通道:通道 A 和通道 B。要使用通道 A 和通道 B、需要两个收发器、一个用于通道 A、另一个用于通道 B

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

    我只使用2个节点、如何修改这些宏?

    #define 	NODE_TOTAL			25			// <=31
    #define		SYNC_NODE			2			// if change, need to change GTUC2, GTUC7 and MRC
    #define		SYNC_MESG_BASE		0x200
    #define		SYNC_MESG_LENG		0x5
    #define		DATA_MESG_BASE		0x300
    #define		DATA_MESG_LENG		0x8
    #define		DATA_BUFF_BASE		32			// SYNC new data symbol all in NDAT1
    											// DATA new data symbol all in NDAT2

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

    我认为您不需要更改代码。  

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

    那么、我 只需要更改 main.c 中的节点=1和节点=2、对吧?运行后、演示板上的 nhet1 (27)和(29)引脚指示的 LED 是否会闪烁?

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

    是的、您回答正确。

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

     参考  手册中的 RDHS1/2/3寄存器是可读和可写的、但我发现它在演示板上是只读的、这些寄存器是可写的吗?

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

    我在论坛上找到了两个有关 FTU 示例 代码的 C 文件、但我没有找到头文件、您能否提供完整的示例代码?谢谢。

    /*
     * ftu_node1.c
     *
     *  Created on: Oct 6, 2015
     *      Author: a0324020
     */
    
    
    #include "fray.h"
    #include "ftu.h"
    #include "LED_Show.h"
    #include "file_io.h"
    #include "stdio.h"
    #include "fray_node_config.h"
    #include "sys_vim.h"

    /*******************************************************************
     *
     *    DESCRIPTION: FlexRay Drivers
     *
     *******************************************************************/ 
    
    #include <fray.h>
    #include <fray_ram.h>
    #include"LED_Show.h"
    #include "sys_vim.h"

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

    我将 CCS 演示项目发布到您的新主题、并在新主题中回答了您的问题。 将关闭该线程。