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.

[参考译文] RM57L843:MibSPI 自检错误注入

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/596365/rm57l843-mibspi-self-test-error-injection

器件型号:RM57L843
主题中讨论的其他器件:HALCOGEN

您好!

我有一个正常工作的 MibSPI 回路实现、并且我正在尝试使用 27.3.42 I/O 回路测试控制寄存器(IOLPBKTSTCR)来在测试期间注入各种错误。

我能够成功注入的唯一错误是:  

位[20] CTRL BITER 控制在 I/O 回路测试模式期间诱导 BITER。 0不干扰环回数据。 1通过在回送期间反转传入数据的值来感应位错误。

导致:

RX RAM 标志中的位[28] BITERR

我是否可以遵循有关 Mibspi 回路故障注入的任何补充文档? 是否需要以特定方式设置 SPI 才能使故障注入正常工作?

任何信息都很有用。

谢谢你

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

    我特别希望执行以下功能检查:

    27.3.42 I/O 回路测试控制寄存器(IOLPBKTSTCR)

    19 CTRL DESYNC 控制在 I/O 回路测试模式期间引入了去同步错误。

    17 CTRL 超时控制在 I/O 回送测试模式期间引发超时错误。

    16 CTRL DLENERR 控制在 I/O 回路测试模式期间引入数据长度错误。

    但如果可以获得有关以下方面的更多信息、请访问:

    18在 I/O 回路测试模式期间触发奇偶校验错误的 CTRL PARERR 控制。

    2 CTRL SCS PINERR 启用/禁用 SPISCS[3:0]引脚上的错误注入。 可以使用 ERR SCS 引脚字段选择各个 SPISCS[3:0]引脚。

    5-3 ERR SCS 引脚在芯片选择引脚编号 x 上注入错误

    也是如此。

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

    唯一可用的文档记录在 TRM 27.2.10测试特性部分和寄存器定义部分(27.3.42)中。 TRM 第27.2.9节"安全特性"中的 MibSPI/SPI 一章也提供了每个被引起的误差类型的细节。 请注意、一些错误条件只适用于主模式、或者可能具有不同的行为、具体取决于是针对主模式还是从模式进行配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Chuck、

    我在主控模式下运行、对于除 CTRL BIERR 之外的所有注入情况、根据文档、似乎故障注入未正常工作。

    如果有帮助、我可以提供代码以使用 HALCOGEN 代码复制结果、

    谢谢

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

    您可以随时发布代码、我会查看一下。 我将提前对延迟处理此问题表示歉意、因为我目前正在处理的 E2E 问题涉及多个调试活动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 Halcogen 在 RM57 HDK 上进行测试:

    bool mibspiLoopbackSelfTest (mibspiBASE-t * mibspi)


    uint32 start =(mibspi->TGCTRL[0]>> 8U)& 0xFFU;
    uint32 end =(mibspi->TGCTRL[1U]>> 8U)& 0xFFU;


    静态 uint16 TX_TEST[256U];
    静态 uint16 Rx_test[256U];

    uint32_t ret = 0;

    uint32 i = 0U;
    while (i <(结束-开始))

    TX_TEST[i]= 0x00FFU;
    i++;



    /*已启用清除回送大小写*/
    mibspi->IOLPKTSTCR = 0U;

    //启用模拟或数字模式中的回送*/
    mibspi->IOLPKTSTCR =(uint32) 0x00000A00U
    |(uint32)((uint32) 1U << 1U);/*模拟*/
    mibspi->IOLPKTSTCR = mibspi->IOLPKTSTCR &(uint32) 0xFFE0FFFFU;/*清除测试标志*/
    mibspi->IOLPKTSTCR = mibspi->IOLPKTSTCR |(uint32) 0x001F0000U;/*设置测试标志*/

    mibspiSetData (mibspi、0、TX_TEST);
    mibspiTransfer (mibspi、0);

    while (!mibspiIsTransferComplete (mibspi、0U)){}

    RET |= mibspiGetData (mibspi、0U、Rx_test);

    /*清除环回*/
    mibspi->IOLPKTSTCR = 0U;

    /*RET 不应为0,它应指示所有错误,但只有 BITERR 工作为0x10 */
    如果(RET ==0U)

    返回 false;


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

    您是否有机会尝试一下?

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

    明天我将花一些时间讨论这个问题。 很抱歉耽误你的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    结果是否相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dmitri、

    我认为问题是、您试图同时设置和使用所有测试标志。 我认为它们需要一次使用一个。 即、您很可能一次只能测试一个故障条件。 您可能看到的是、位错误条件优先于其他错误条件。 您能否尝试测试各个错误条件以查看您是否获得不同的结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的时间。 回到这个问题。

    一次设置一个位不起作用。 是否有任何可重新创建故障注入的示例代码?

    在测试过程中、如果测试有所不同、我将以环回模式运行。

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

    我以前进行过测试、但我无法获得所有测试的错误。 这是我的测试和测试结果:

    spiREG3->IOLPKTSTCR |=(1 << 17);//感应错误:CTRL_TIMEOUT -- flg=0x0201,SPIBUF=0x810E0000 (RX!=TX)--获取 CLENERR
    //spiREG3->IOLPKTSTCR |=(1 << 16);//感应错误:CTRL_DLENERR Flg=0x0201;SPIBUF=0x810E0000 (RX!= TX)--获取 DLENERR
    //spiREG3->IOLPKTSTCR |=(1 << 18);//感应错误:CTRL_PARERR FLG = 0x0304;SPIBUF = 0x040E0011 (RX=TX) --获取 PARITYERR
    //spiREG3->IOLPKTSTCR |=(1 << 19);//感应错误:CTRL_DESY FLG = 0x0300;SPIBUF = 0x000E0011 (RX=TX) --无错误
    //spiREG3->IOLPKTSTCR |=(1 << 20);//感应错误:CTRL_CTRLBITER flg=0x0310;SPIBUF=0x100E0011 (RX=TX)-- BITER
    //spiREG3->IOLPKTSTCR |=(1 << 2);//启用 CSx 错误:CTRL_SCS_PIN_ERR
    //spiREG3->IOLPKTSTCR |=(0 << 3);//感应错误:ERR_SCS_PIN; 设置标志