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:关于安全功能的故障注入方法"SPI 2"

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/605153/tms570ls3137-about-failure-injection-method-of-safety-feature-spi-2

器件型号:TMS570LS3137

安全函数 ID[SPI 2]的更多信息。

关于此监控、
通过以下步骤进行故障注入、
寄存器的相应位中的"1"置位、
我认为可以实现故障检测。

但相应的位未置位。

您能否回答以下两个问题?
·我的故障插入方法和监控方法是否有问题?
·其他、请细心一些。


1、将"1"置位为 IOLPBKTSTCR 寄存器的位9和位11
(回送测试使能、数字模式)
2.将"1"置位为 IOLPBKTSTCR 寄存器的 CTRL PARERR 位
(有意生成奇偶校验错误的过程)
3.监视 SPIFLG 寄存器的"PARITYERRFLG"
⇒、但 PARITYERRFLG 根本不是。
4、将"0xFFFFFF03C"置位至 IOLPBKTSTCR 寄存器置位
(禁用环回测试)

*对于上述过程中的步骤1、我们还尝试以下2种模式。
但是、我们无法捕获错误标志设置的状态。
->将"1"设置为 IOLPBKTSTCR 寄存器的位1、9、11
(回送测试使能、模拟 Tx 模式)
->将"1"设置为 IOLPBKTSTCR 寄存器的位0、1、9、11
(回送测试使能、模拟 Rx 模式)

现在、我将在3种模式下测试故障注入。
请告诉我是否决定了该函数的正确执行模式。

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

    您好 Falcon、

    我可以使用以下设置生成奇偶校验错误:

    spiEnableLoopback (spiREG3、Analog _LBK);

    spiREG3->IOLPKTSTCR &= (0xFFFFFFFE); //通过 TX 引脚进行模拟回路。

    DisableNotification (spiREG3、0x300);

    blocksize = 16;

    I = 0;

    while (blocksize!= 0U)

    if (blocksize == 1U)

     CHIP_Select_HOLD = 0U;

    //spiREG3->IOLPKTSTCR |=(1 << 17); //感应错误: Ctrl_TIMEOUT -- flg=0x0201、SPIBUF=0x810E0000 (RX!=TX) -- DLENERR

    spiREG3->IOLPKTSTCR |=(1 << 18); //感应错误: CTRL_PARERR     FLG=0x0304; SPIBUF=0x040E0011 (RX=TX) -- PARITYERR

    // 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;     设置标志

    spiREG3->DAT1 =  ((UINT32) DataFormat << 24U)|

    ((UINT32) ChipSelect << 16U)|

    (威德莱)      |

    (CHIP_Select_HOLD)|

    (uint32) TX_Data[i];

    /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/

    while ((spiREG3->FLG & 0x00000100U)!= 0x00000100U)

    }/*等待*/

    SpiBuf = spiREG3->BUF;

        RX_Data[i]= SpiBuf;

    /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/

    i++;

    块大小----

    while (1);