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.

[参考译文] TMS570LS1224:环回测试- N2HET

Guru**** 2024750 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/1011653/tms570ls1224-loopback-tests---n2het

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

您好!

我正在尝试对  N2HET 执行模拟回路测试。

我要做的是:

1、在 HET[12]上生成 PWM

2.在模拟回路模式中连接了 HET[12]和 HET[13]

3.配置 CAP0以测量 HET[13]上的 PWM 信号   

4.使用函数 capGetSignal 测量 PWM 占空比和周期

但我无法获取捕获的信号 PWM 和占空比。 我有什么问题吗?

下面发布了我要尝试执行的操作的代码片段:

void test_analog_n2het()

/*配置 LBPDIR[12/13]=1、HR 结构12将输出和
*人力资源结构13将被输入*/
/*配置 LBPTSTENA[16-19]= 0xAh 以启用环回测试*/
hetREG1->LBPDIR |= 0x000A0040U;

/*配置 LBPSEL[12/13]=1、HR 结构12和13将在内部环路连接
反向模式。*/
/*配置 LBPTYPE[12/13]=1。 这将模拟配置 HR 结构12 - 13
*环回模式*/
hetREG1->LBPSEL |= 0x00400040U;

void measure_cap_signal ()

capGetSignal (hetRAM1、0U、&het_signal_capture);
printf ("捕获信号的 PWM:%f\n"、het_signal_capture.period);

我注意到在 HET[12]上生成 PWM 是可以的。  

有人能告诉我发生了什么错误吗?  

注意事项

S

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

    尊敬的 Sams:

    请仔细检查 LBPDIR 和 LBPSEL 是否正确编程。  

    LBPDIR[19:16]的默认值为0x5、代码设置位17和位19 (|0xA)、因此 LBPDIR[19:16]变为0xF、这意味着回送被禁用。

    最好使用以下指令进行环回测试:

    hetREG1->LBPDIR = 0x000A0040U;

    hetREG1->LBPSEL = 0x00400040U;

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

    你(们)好

    我刚才在调试寄存器内容时就意识到了这一点。 我使用以下代码进行测试。 它具有与您刚才建议的寄存器相同的设置。  

    void test_n2het_configure_loopback (void)

    /*配置 LBPDIR[12/13]=1、HR 结构12将输出和
    *人力资源结构13将被输入*/


    /*配置 LBPTSTENA[16-19]= 0xAh 以启用环回测试*/


    hetREG1->LBPDIR = 0x000A0040U;

    /*配置 LBPSEL[12/13]=1、HR 结构12和13将在内部环路连接
    反向模式。*/


    /*配置 LBPTYPE[12/13]=1。 这将模拟配置 HR 结构12 - 13
    *环回模式*/


    hetREG1->LBPSEL = 0x00400040U;

    void test_n2het_get_captured_signal (void)

    capGetSignal (hetRAM1、0U、&het_signal_capture);
    printf ("捕获信号的周期:%lf\n"、het_signal_capture.period);
    printf ("捕获信号的占空比:%ld n "、het_signal_capture.Duty);

    控制台上的输出为(配置为通过配置环回形式 HET[12]捕获 HET[13]上的 PWM):

    捕获信号的占空比:133.
    捕获信号的周期:375.200000

    这不是预期的值、因为我在 HET[12]上生成的 PWM 的周期为1000、占空比为500 (50%)

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

    哪个 ECAP 通道分配给 NHET1[13]?  

    capGetSignal (hetRAM1、0U、&het_signal_capture);-->您使用 ECAP 通道0来读取周期和占空比。

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

    是的,我已按如下所示分配了 CAP0信号:   

    1.不确定是否应该使用中断函数调用 capGetSignal (hetRAM1、0U、&het_signal_capture)

    我当前在  1ms 调度程序循环中运行它  

    2.我已将 HET[13]配置为 HRshare 中的输入端口,如下所示:  

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

    您好!

    通过设置  LBPDIR 寄存 器来选择回路方向、该寄存器与 HETDIR 寄存器设置无关。  

    如果输入 PWM 是连续信号、则不必使用中断服务例程来读取输入 PWM 信号的周期和占空比。  

    我当前在  1ms 调度程序循环中运行它  

    是否在1ms 后在 HET1[12]上禁用 PWM? 您说过 PWM 周期为1000us (1ms)、因此 NHET1[12]仅生成1个 PWM 脉冲。  

    BTW、您是否使用 HALCoGen 生成的代码而不进行任何更改?

    原始 ECAP 采集代码使用 HR 共享功能。  

    请按  如下方式修改 het.c 中"static const hetINSTRUCTion_t het1PROGRAM[58U]"的指令26的代码、然后重试:

    /* PCNT:捕获周期0
    *-指令= 26
    *-下一条指令= 27
    *-条件下一条指令= na.
    *-中断=不适用
    *-引脚= 13 + 1 ->更改为13
    *

    /*计划*/
    0x00036EA0U |(UINT32)((UINT32) 0U << 6U)|(UINT32)((0U)+  13U)、
    /*控件*/
    0x000000000000、
    /*数据*/
    0x000000000000、
    /*保留*/
    0x000000000000
    }、

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

    您好!

    非常感谢您的支持。 现在它可以工作:

    这是日志。  

    捕获信号的周期:1000.000000
    捕获信号的占空比:49.

    我想知道问题是什么。 为什么我们需要更正 het.c 文件。 我的方面有什么问题吗?

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

    尊敬的 Sams:

    N2HET 支持高分辨率和标准分辨率。 用于 ECAP 的 N2HET 指令、例如 PCNT、具有7位 HR 数据字段。 对于标准分辨率、忽略7位 HR 数据。 对于高分辨率、7位 HR 数据可以测量高分辨率延迟(HR 延迟)。 但 限制条件是只有一条指令可以在高分辨率模式下(用于1个 N2HET 引脚)运行。 PCNT 可用于测量 PWM 周期或脉冲持续时间(占空比)。  

    如果 PWM 被馈送到 N2HET1[13]引脚、一个 PCNT 被用来测量周期、另一个 PCNT 被用来测量占空比。 如果未启用 HR 共享、则只有一个 PCNT 可以在高分辨率模式下运行。 HALCoGen 生成的示例代码使能 HR 共享、周期和占空比的 PCNT 指令都在高分辨率模式下运行。

    关于人力资源共享结构、请参阅 TRM 中的21.2.5.5。

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

    您好,

    感谢你的答复。  

    很抱歉、我只能对它有所了解。

    因此、由于在 Halcogen 中启用了 HR 共享、因此它共享同一个引脚。 因此、在 生成的代码中、我们需要两条 PCNT 指令来测量来自同一引脚的周期和占空比、这里是引脚13。 因此、我们按照上面的建议再配置一条 PCNT 指令、以计算同一引脚的占空比。 早期、当它不起作用时、只有一条 PCNT 指令计算周期。  

     这种理解是否正确?

    2.还  需要修改0x00036EA0U。 它没有做这项修改。  0x00036EA0U 的意义是什么

    此致

    Sam

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

    Sam、您好!

    1.在 HALCoGen 生成的示例代码中启用 HR 共享、用于占空比的 PCNT 指令使用引脚12的 HR 结构(偶数)、而用于周期的 PCNT 指令使用引脚13的 HR 结构(奇数引脚)。 用于干扰 HR 结构的 PWM 信号来自引脚12 (偶数引脚)。  

    在模拟环回配置中、禁用 HR 共享。 占空比和周期仅使用一个 HR 结构(设置中的引脚13)。 这就是为什么我将第2条 PCNT 指令中的引脚编号更改为13的原因。

    2.这是为了禁用第2条 PCNT 指令中的 HR。 不需要进行此更改、因为 高分辨率引脚结构仅响应 与其引脚编号匹配并使用 hr_lr=high 的第一条指令。  随后的指令被高分辨率引脚忽略
    环路分辨率周期的剩余部分的时长结构。

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

    感谢您的大力支持和澄清! 所以在正常情况下、如果没有回路、引脚13和引脚13+1本来会被用于占空比和周期测量、因为根据我的设置(在我的情况下、我已经将 PIN13分配给 CAP0) 、不是吗?

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

    N2HET HR 结构对:N2HET[n]和 N2HET[n+1]、其中 n 是一个偶数。 当 N2HET[n]和 N2HET[n+1]的 HR 输入被共用时、测量引脚为 N2HET[n]。

    在您的示例中、N2HET1[12]和 N2HET1[13]是一对、输入信号应连接到 N2HET1[12]。 如果为 N2HET1[12]/N2HET1[13]启用了 HR 共享、 则 N2HET1[12] HR 结构和 N2HET1[13] HR 结构共用同一个引脚 N2HET1[12]而不是 N2HET1[13]。

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

    感谢您的澄清和支持。