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 CCM的一些问题



ti工程师:

您好,最近在开发贵公司新型ARMTMS570ls3137,在调CCM时出现了一些困惑:

1、在设计中 采用Error Forcing 模式,即对CCMKEYR寄存器写9,结果没有产生ERROR低电平输出,在开启中断使能的情况下也没有产生中断(设计中使能了和初始化了ESM),请问验证Error Forcing 模式的步骤是什么?

2、当在lockstep模式下对CCMKEYR寄存器写9、F都会马上自动清掉,这是手册上明确说明的,但是如果先采用Self-Test 模式,再切换到Error Forcing 模式,CCMKEYR寄存器不会自动恢复到0,请问这是为什么?

期待您的回信

谢谢~!

  • 您好。

    TRM上ERROR KEY的定义如下图所示。

     

    1. 当写入0x0A时,ESM PIN上会出现低电平。此时,如果写入0x05,那么ESM PIN会在延时LTC后变成高电平。如果写入0x00后会回到正常模式,ESM PIN会立即变高。同时,请注意红框所示文字,如果写入其他数值,例如您所写入的0x09,那么也会回到正常模式,ESM PIN变高,但该寄存器值仍为写入值。

    2. ESM中断。ESM共有96个通道,分为3个组。只有第1组和第2组的通道可以产生中断,其中第1组的通道需要软件使能才会才产生中断,第2组不需要使能。ESM各通道分组情况,详见Datasheet的ESM部分。

  • Jay:

    您好,很高兴看到了您的回复,但是很抱歉,可能是我没有表述清楚,我想问的问题是关于CCM-R4F(CPU Compare Module for CortexTM-R4F),而不是ESM,ESM这个模块我们已经调通,但是在调试CCM-R4F时我们对其进行Error Forcing操作,即对即对CCMKEYR寄存器写9,并没有产生ERROR低电平输出,也没有产生中断,该操作产生的错误对应ESM的第2组,不需使能,您可以看一下CCM-R4F部分;

    另外我用了贵公司的开发板来进行同样的操作,仍不会产生ERROR低电平输出,希望得到您的回复

    谢谢

  • 您好。

    抱歉误解了您的问题。

    关于CCM的Error Forcing有一点需要注意,在Debug模式下,该操作是无效的。详见TRM9.3.5第371页。

    下面测试代码供参考:

    void main(void)
    {
    /* USER CODE BEGIN (3) */
     long i;
     hetREG1->DIR |= (1 << 0);
     hetREG1->DCLR = (1 << 0);
     while(1)
     {
      CCMKEYR = 0x09;
      while(esmREG->ESTATUS1[1]!=(1<<2));
      hetREG1->DSET = (1 << 0);
      for(i=0;i<10000000;i++);
      CCMKEYR = 0x0;
      esmREG->KEY = 0x5;
      hetREG1->DCLR = (1 << 0);
      for(i=0;i<10000000;i++);
     }
    /* USER CODE END */
    }

    编译并下载到开发板中,然后断开仿真器,复位后可以看到ERROR的LED(红)和HET0的LED(白)会一闪一闪亮,说明CCM的Error Forcing正常工作。

    Error Forcing产生的ESM中的错误为Group2的第2个错误。