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.

[参考译文] Hercules _SAFETY_MCU_DEMOS:从 N2HET#39;s 数字环回测试寄存器设置和读取值之间是否需要延迟?

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/690328/hercules_safety_mcu_demos-is-delay-needed-between-setting-and-reading-values-from-the-n2het-s-digital-loopback-test-registers

器件型号:Hercules _SAFETY_MCU_DEMOS

我将在"数字"模式下使用 N2HET 的环回测试功能。  我的环回测试使用默认的 N2HET 配置。  我的测试首先初始化环回配置寄存器。  然后、它继续执行一组回送寄存器的写入和读取。  我注意到、如果在写入数据后立即读取、测试会得到不稳定的数字。  如果我在读取逻辑之前加上一个小延迟、数据将是稳定的(有效的)并且我的测试将成功通过。  让我感到困扰的部分是、我不知道我需要等待多长时间才能使数据保持稳定。  是否有一个确定性公式来确定等待的时间?  任意持续时间的等待可能会在今天起作用、但在将来的某个时候可能会失败。  最好是持续时间是确定性的。

N2HET 回路特性的描述在 TI 技术参考手册中进行了说明。  是否有单独的文档介绍环回模式的使用?

我期待您的反馈。

BR、

Peter C

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

    我只是做了一个测试、没有看到您提到的问题。 这是我的代码:

    //数字回送 NHET 0和 NHET 1;NHET 0是输出、NHET 1是输入
    hetInit();
    hetPORT1->DCLR = 0xFFFFFFFF;
    hetREG1->LBPDIR = 0x000A0001;
    hetREG1->LBPSEL = 0x00000001;
    hetPORT1->DSET |=(0x1);
    I =(hetPORT1->DIN & 0x02);

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

    您好 QJ、

    您无法重现此问题、我对此并不感到惊讶。

    我的原始代码没有延迟、它适用于我们的平台。

    当我在更快的平台上运行相同的代码时、我开始看到数据不稳定问题。   

    我的测试与您的测试稍有不同。  我将同时测试所有16个环回对。  我的伪代码与以下伪代码类似:

    LBPSEL = 0x0000FFFF;

    LBRDIR = 0x000AFFFF; //在另一个测试中、我将 tihs 值设置为0x000A0000以测试另一个方向

    循环{

      DOUT =图形

      读取 DIN

    我使用 DOUT 而不是 DSET / DCLR。  我认为这不是问题。

    在速度更快的平台上、故障是即时且一致的。  请告诉我您是否可以重现此行为。

    BR、

    Peter C

     

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

    您好、Peter、

    这不是问题。 我尝试了两种模式:0x555555到输出0x1、0xAAAAAA 到输出0

    当输出0时、DIN 应为0x00000000

    当输出1时、DIN 应为0xFFFFFFFF

    for (i=0;i<20;i++){
    数据= 0x0;
    pattern ^= 0xFFFFFFFF;
    hetPORT1->DOUT =模式;
    数据= hetPORT1->DIN;
    if ((pattern = 0x555555)&&(data!= 0xFFFFFFFF)   
     while (1);
    if ((pattern ==0xAAAAAAAA)&&(data!=0x00000000))
     while (1);

    while (1);

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

    您好 QJ、

    感谢您的测试和验证。  让我总结一下我们当前的理解:

    1.您无法在您的环境中重现上述问题。  您尝试使用 DIN 和 DOUT、就像我所做的那样、但无法重现问题。  基本上、该解决方案适合您、您不需要在写入模式和从回送硬件读取结果数据之间添加任何延迟。

    2.我使用了相同的逻辑、但发现需要插入延迟元件、然后才能从回送硬件读正确的预期数据。  相同的代码在较慢的系统中工作、但在较快的系统上工作时不工作。  (我在同一受测单元和同一调试器上使用调试器测量了执行时间。  我的软件映像越快越慢、配置就越不同、我也没有这两者之间的配置差异列表)。  经验数据告诉我、我需要在较快的系统上增加延迟、以获得有效的环回测试结果。

    我们可以尝试不同的策略吗?  是否正确地说 NHET 回送硬件实现不是瞬时转换。  也就是说、输出数据反映输入数据需要一定的时间。  您知道这段有限时间应该是多少吗?

    最棒的

    Peter C

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

    您的 DOUT 和 DIN 是什么?