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.

[参考译文] TMS570LS1227:FlexRay 网络

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611723/tms570ls1227-flexray-network

器件型号:TMS570LS1227
主题中讨论的其他部件:TMS570LS3137HALCOGEN

TMS570LS3137 Flexray 示例在 TMS570LS1227芯片中使用。 可以运行吗?

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

    否、您需要对器件配置进行一些更改:引脚多路复用、PLL、器件初始化等
    1.使用 HALCoGen 生成 CCS 工程
    2.将 FlexRay 相关文件复制到新项目中
    3.在 CCS 中编译,如果有任何错误,请告诉我
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Wang,
    我跟着这一步,但很胆小。
    CHK NDAT 显示0、示波器显示空帧。
    MBSC 内十进制缓冲器。 张.

    以下是 sprt718.pdf P37 affter config 消息、写入 WRHS1、2、3

    但输出 NULL 帧。
    此致、谢谢
    Agassiz
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    张您好、

    您能否向我展示电路板上 FlexRay 的电路? 您的 FlexRay 网络中有多少个节点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    The2e.ti.com/.../7633.flexray.pdf

    这是一家很有艺术感的酒店

    在 设计的应用网络中,共6个节点、3个 clodstart 节点,或其它节点为同步节点。

    现在、我们尝试连接2个冷启动和1个同步节点、

    gPayloadLengthStatic

    MHDC.SFDL[6:0]

    3c

    gColdStartAttempts

    SUCC1.CSSA[4:0]

    31.

    gListenNoise

    SUCC2.LTN[3:0]

    15.

    gMacroPerCycle

    GTUC2.MPC[13:0]

    4.

    gMaxWithoutClockCorrectionFatal

    SUCC3.WCF[3:0]

    15.

    gMaxWithoutClockCorrectionPassive

    SUCC3.WCP[3:0]

    15.

    gNetworkManagementVectorLength

    NEMC.NML[3:0]

    0

    gNumberOfMinislots

    GTUC8.NMS[12:0]

    0

    gNumberOfStaticSlots

    GTUC7.NSS[9:0]

    15.

    OCS

    GTUC4.OCS 13.0]

    2250

    GTUC7.SSL[9:0]

    150

    gSyncNodeMax

    GTUC2.SNM[3:0]

    15.

    gdActionPointOffset

    GTUC9.APO[5:0]

    2.

    GdCASRxLowMax

    PRTC1.CASM[6:0]

    71.

    gdDynamicSlotIdlePhase

    GTUC9.DSI[1:0]

    1

    GdMinislot

    GTUC8.MSL[5:0]

    4.

    gdMinislotActionPoint

    GTUC9.Mapo[4:0]

    2.

    尼特

    GTUC4.nIT[13:0]

    250

    gdSampleClockPeriod

    PRTC1.BRP[1:0

    0

    GdStaticSlot

    GTUC7.SSL[9:0]

    15.

    GdTSSTransmitter

     PRTC1.TSST[3:0]

    4.

    gdWakeupSymbolRxIdle

    PRTC2.RXI[5:0]

    59.

    gdWakeupSymbolRxLow

    PRTC2.RXL[5:0]

    57.

    gdWakeupSymbolRxWindow

    PRTC1.RXW[8:0]

    301.

    gdWakeupSymbolTxIdle

    PRTC2.TXI[7:0]

    180

    gdWakeupSymbolTxLow

    PRTC2.TXL[5:0

    60

    pAllowHaltDueToClock

    SUCC1.HCSE

    1

    pAllowPassiveToActive

    SUCC1.PTA[4:0]

    15.

    PChannels

    SUCC1.CCHA

    SUCC1.CCHB

    1

    1

    pExternOffsetCorrection (外部偏移校正)

    GTUC11.EOC [2:0]

    0

    pExternRateCorrection

    GTUC11.ERC[2:0]

    0

    pKeySlotUsedForSync

    SUCC1.TXSY

     1

    pKeySlotusedForStartup

    SUCC1.TXST

    A=B=1、C=0

    pMacroInitialOffset[A]

    GTUC3.MIOA[6:0]

    5.

    pMacroInitialOffset[B]

    GTUC3.MIOB[6:0]

    5.

    pMicroInitialOffset[A]

    GTUC3.UIOA[7:0]

    12.

    pMicroInitialOffset[B]

    GTUC3.UIOB[7:0]

    12.

    pMicroPerCycle

    GTUC1.UT[19:0]

    40000

    电路  

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

    您好、Change、

    您的原理图看起来不错。 配置不正确:

    gMacroPerCycle

    GTUC2.MPC[13:0]

    4.

    根据 FlexRay 规范、每个周期的最小宏为10。 静态段有15个节点和15个插槽、但整个通信周期只有4个宏、如何将宏分配给插槽?

    您的通信周期具有40000个微周期(1ms)、这意味着您的宏周期长为250us。 Flexray 指出最小宏周期为1us、最大宏周期为6us。

    微周期为25ns (0.025us)。 通常我将宏周期配置为1us (40*微周期)。 请更正您的设置并重试。 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    抱歉、参数错误。
    下面的配置代码。
    void configure_initialize_node_a (fray_ST *框架_pst)

    wrhs *FR_LPduptr=&FR_LPdu;
    CFG *FR_ConfigPtr =&FR_Config;
    BC *FR_LSduptr=&FR_LSdu1;

    fray_pst->SUCC1_UN.SUCC1_UL = 0x0F1FFB00 | CMD_CONFIG;
    FR_ConfigPtR->gtu1 = 0x000186A0;
    FR_ConfigPtR->gtu2 = 0x000F09C4;
    FR_ConfigPtR->gtu3 = 0x04041515;
    FR_ConfigPtR->gtu4 = 0x094708C9;
    FR_ConfigPtr ->gtu5 = 0x38010303;
    FR_ConfigPtr ->gtu6 = 0x012D00Cd;
    /*静态段*/
    FR_ConfigPTR->gtu7 = 0x000F0096;// NSS[25:16]、gNumberOfStaticSlots = 0Fh;这些位配置一个周期中的静态插槽数
    // SSL[9:0]、gdStaticSlot = 150D = 96h (以宏周期为单位);这些位配置静态时隙的持续时间。
    //静态段长度= 11550* 15 = 2250个宏周期
    /*动态段*/
    FR_ConfigPtr ->gtu8 = 0x00000004;
    /*静态、动态和符号窗口的操作提示*/
    FR_ConfigPtr ->gtu9 = 0x00010202;
    /*时钟同步*/
    FR_ConfigPtr ->gtu10 = 0x015100CD;
    FR_ConfigPTR->gtu11 = 0x00000000;// pExternRateCorrection = 0,pExternOffsetCorrection = 0,无外部时钟。 校正

    FR_ConfigPtr ->Success2 = 0x00030F9A;// gListenNoise = FH、pdListenTimeout = 224674d = 36DA2h

    FR_ConfigPtr ->Success3 = 0x000000FF;// gMaxWithoutClockCorrectionFatal = FH,被动= FH

    FR_ConfigPtr->prtc1 = 0x000005F8;// pWakeupPattern = 2h、gdWakeupSymbolRxWindow = 76D、
    // BRP[15:14]、波特率预分频器。 BRP = 0:10MbIT/s (嚙踝 嚙踝 时钟周期= 12.5ns;1 μ s = 25ns;每 μ s 样本数= 2)
    // TSST (3-0)、gdTSSTransmitter = Ah;这些位根据位时间配置传输启动序列(TSS)的持续时间
    //(1位时间= 4uT = 100ns @ 10Mbps)。

    FR_ConfigPtr->prtc2 = 0x00000000;// gdWakeupSymbolTxLow = 60d、gdWakeupSymbolTxIdle = 180d、gdWakeupSymbolRxLow = 18d、gdWakeupSymbolRxIdle = 18d

    FR_ConfigPtr ->mhdc = 0x0000003C;
    FR_ConfigPtr ->MRC = 0x00088080;

    //输出缓冲器配置初始化
    //写入标头段寄存器1 (WRHS1)
    FR_LPdupTR->MBI = 1;//消息缓冲器中断
    FR_LPdupTR->TXM = 0;//传输模式-连续模式
    FR_LPdupTR->ppit = 0;//启用网络管理
    FR_LPdupTR->cfg = 0;//消息缓冲器配置位(0=RX、1=TX)
    FR_LPdupTR->CHB = 1;//通道 B
    FR_LPdutr -> CHA = 1;//通道 A
    FR_LPdupTR->CYC = 0;//周期过滤代码(无周期过滤)
    FR_LPdutr ->fid = 0;//帧 ID

    //写入标头段2 (WRHS2)
    FR_LPduptr ->pl = 0;//有效载荷长度

    //写入标头段3 (WRHS3)
    FR_LPdutr->DP = 0;//指向消息 RAM 中数据开始的指针

    FR_LPdupTR->SFI = 0;//启动帧指示符
    FR_LPdutr ->SYNC = 0;//同步帧指示器

    //输入缓冲器配置
    FR_LSdupTR->ibrh = 0;//输入缓冲区编号
    FR_LSdupTR->ibsyh = 1;//检查输入缓冲区忙主机
    FR_LSdupTR->ibsys = 1;//检查输入缓冲区占线影子
    FR_LSdupTR->ldsh = 0;//加载数据段
    FR_LSdupTR->lhsh = 0;//加载标头段
    FR_LSduptr -> obrs = 0;//输出缓冲区编号
    FR_LSdupTR->rdss = 0;//读取数据段
    FR_LSdupTR->RHss = 0;//读取标头段


    //消息缓冲器
    FR_LSdupTR->lhsh = 1;//加载标头段

    //缓冲密钥插槽
    FR_LSdupTR->stxrh= 1;//设置传输请求
    FR_LPdutr ->fid = 1;//帧 ID
    FR_LPdutr->DP = 0x80;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 1;// TX 帧
    FR_LPdutr ->SYNC = 1;//同步帧指示器
    FR_LPdupTR->SFI = 1;//启动帧指示符
    FR_LPdutr->pl = 0x3C;
    FR_LPduptr -> CRC = header_CRC_calc (FR_LPduptr);

    FR_LSdupTR->ibrh = 0;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#1
    FR_LSdupTR->stxrh= 0;//设置传输请求
    FR_LPdutr ->fid = 2;//帧 ID
    FR_LPdutr->DP = 0x9E;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->SYNC = 0;//同步帧指示器
    FR_LPdupTR->SFI = 0;//启动帧指示符
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 1;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#2
    FR_LPdutr ->fid = 3;//帧 ID
    FR_LPdutr->DP = 0xBC;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->SYNC = 0;//同步帧指示器
    FR_LPdupTR->SFI = 0;//启动帧指示符
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 2;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#3
    FR_LSdupTR->stxrh= 1;//设置传输请求
    FR_LPdutr ->fid = 4;//帧 ID
    FR_LPdutr->DP = 0xDA;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 1;// TX 帧
    FR_LPdutr ->SYNC = 1;//同步帧指示器
    FR_LPdupTR->SFI = 0;//启动帧指示符
    // FR_LPdupTR->CHB = 0;//通道 B 上无传输
    FR_LPduptr ->pl = 25;
    FR_LPduptr -> CRC = header_CRC_calc (FR_LPduptr);

    FR_LSdupTR->ibrh = 3;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);


    //缓冲区#4
    FR_LSdupTR->stxrh= 0;//设置传输请求
    FR_LPdutr ->fid = 5;//帧 ID
    FR_LPdutr->DP = 0xf8;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->SYNC = 0;//同步帧指示器
    FR_LPdupTR->SFI = 0;//启动帧指示符
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 4;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#5
    FR_LPdutr ->fid = 6; //帧 ID
    FR_LPdutr->DP = 0x116;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 5;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#6
    FR_LPdutr ->fid = 7; //帧 ID
    FR_LPdutr->DP = 0x134;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 6;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#7
    FR_LPdutr ->fid = 8; //帧 ID
    FR_LPdutr->DP = 0x152;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 7;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);

    //缓冲区#8
    FR_LPdutr ->fid = 9; //帧 ID
    FR_LPdutr->DP = 0x170;//指向消息 RAM 中数据开始的指针
    FR_LPdupTR->cfg = 0;// RX 帧
    FR_LPdutr ->CRC = 0;

    FR_LSdupTR->ibrh = 8;//输入缓冲区编号
    FR_PrepareLPdu (Fray_PST、FR_LPdutr);
    FR_TransmitTxLPdu (Fray_PST、FR_LSduptr);
    FR_ConfigPTR->MRC = 0x00208080;// LCB=0x17=23d:Last config buffer、# of msg buffer=0x17+1=24。 >=80h、未配置报文缓冲器;报文缓冲器的最大数量为128
    //等待 PBSY 位清零- POC 不忙。
    // 1:表示 POC 正忙,无法接受主机发出的命令。 CMD (3-0)被锁定、不能进行写访问。
    while ((((Fray_PST->SUCC1_UN.SUCC1_UL)& 0x00000080)!= 0);

    //初始化
    FR_Init (Fray_PST、FR_ConfigPtr);


    FR_ControllerInit (Fray_PST);
    //初始化中断
    fray_pst->EIR_UN.EIR_UL = 0xFFFFFFFF;//清除错误内部
    fray_pst->SIR_UN.SIR_UL = 0xFFFFFFFF;//清除状态内部
    fray_pst->SILS_UN.SILS_UL = 0x00000000;//所有状态内部 设置为 eray_int0
    fray_pst->SIER_UN.SIER_UL = 0xFFFFFFFF;//禁用所有状态内部
    FRAY_PST->SIES_UN.SIES_UL = 0x00000004;//启用 CYCSE 内部
    fray_pst->Ile_un.Ile_UL = 0x00000002;//启用 eray_INT1

    FR_AllowColdStart (Fray_PST);

    节点 B 具有相同的周期灯丝。 但有差异。 钥匙槽 fid = 2;

    请帮帮我!

    为什么 Flexray Chennel 协议控制器将空帧与总线连接?(Tms570LS1227)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    宏/周期2500