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.

[参考译文] CCS/TMS570LC4357:使用 NHET 进行频率测量

Guru**** 1995175 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/621812/ccs-tms570lc4357-frequency-measurements-using-nhet

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

工具/软件:Code Composer Studio

我有3次温度测量、以作为系统的频率输入。 @ 25°C 的标称频率为28kHz、增益为-0.8Hz/°C。

我希望能够测量-30°C 至+70°C 的温度,从而获得28、044Hz 至27、964Hz 的预期频率范围。

在开发过程中,我将函数发生器的外部28kHz 信号注入 HET1[4]引脚,并使用 HalCoGen 将该引脚设置为所有 CAPn 寄存器以进行测试。

从一个代码示例开始、我发现这个代码示例的标题是:1512.NHET PWM 生成和使用 HALCoGen 的捕捉;我修改了这个示例以与一个更新版本的 HalCoGen 和 CCS 兼容。 (我使用的是 CCS Ver 7.2.0.00013和 HalCoGen Ver 4.07.00)我希望通过使用函数 capGetSignal(),我可以很容易地获得信号的周期值。 到目前为止、我无法读取任何内容、因为该函数仅返回0值。   缺少内容。

几个问题:

我出了什么问题?

NHET 是此测量的理想选择、还是 ECAP 之类的器件更合适?

有没有人有一个工作代码示例、可以从外部信号进行频率测量? 似乎有很多示例可以说明如何使用 HET 生成 PWM 信号。

随附的是供审阅的项目文件。

我们非常感谢您的任何帮助。

谢谢、

Steve

e2e.ti.com/.../2021.HETtest1.zip

/**@文件 hL_sys_main.c
*  @简要应用程序主文件
*  @日期:2017年7月7日
*  @版本04.07.00
*
*  此文件包含一个空的主函数、
*  可用于应用程序。
*

/*
*版权所有(C) 2009-2016德州仪器(TI)公司- www.ti.com  
*
*
* 以源代码和二进制形式重新分发和使用、有无
* 如果满足以下条件、则允许进行修改
符合*:  
*
*   源代码的重新分发必须保留上述版权
*   注意、此条件列表和以下免责声明。
*
*   二进制形式的再发行必须复制上述版权
*   请注意、中的此条件列表和以下免责声明
*   随提供的文档和/或其他材料   
   *分发。
*
*   德州仪器公司的名称和名称均不相同
*   其贡献者可用于认可或推广衍生产品
*   未经特定的事先书面许可。
*
* 本软件由版权所有者和贡献者提供
* "按原样"以及任何明示或暗示的保证、包括但不包括
* 仅限于对适销性和适用性的暗示保证
* 一项特定目的不予承认。 在任何情况下、版权均不得
* 所有者或贡献者应对任何直接、间接、偶然或
* 特殊、惩戒性或后果性损害(包括但不包括)
* 仅限于采购替代货物或服务;丧失使用、
* 数据或利润;或业务中断)
* 责任理论、无论是合同责任、严格责任还是侵权行为
* (包括疏忽或其他)因使用而以任何方式产生
* 、即使被告知可能会发生此类损坏。
*
*


/*用户代码开始(0)*/
/*用户代码结束*/

/*包含文件*/

#include "hL_sys_common.h"

/*用户代码开始(1)*/
#include "hL_het.h"
/*用户代码结束*/

/**@fn void main (void)
*  @应用程序主函数简介
*  @请注意、默认情况下、此函数为空。
*
*  此函数在启动后调用。
*  用户可以使用此函数来实现应用程序。
*

/*用户代码开始(2)*/
hetSIGNAL_t Duty_PERIOD1、Duty_Period2、Duty_Period3、Duty_period4;
het_config_reg_t het_config;
/*用户代码结束*/

int main (空)

/*用户代码开始(3)*/
   int i;

   for (i=0;i<0x10000;i++);//简单延迟
   capGetSignal (hetRAM1、cap1、Duty_PERIOD1);

   /*初始化 HET 驱动程序*/
   hetInit();
   het1GetConfigValue (&het_config、CurrentValue);

   for (i=0;i<0x20000;i++);//简单延迟
   capGetSignal (hetRAM1、cap1、Duty_Period2);

   for (i=0;i<0x30000;i++);//简单延迟
   capGetSignal (hetRAM1、cap1、Duty_Period3);

   for (i=0;i<0x40000;i++);//简单延迟
   capGetSignal (hetRAM1、cap1、Duty_period4);

   /*永久运行*/
       while (1);
/*用户代码结束*/

   返回0;



/*用户代码开始(4)*/
/*用户代码结束*/

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

    电容是测量信号周期和占空比的好方法。 应该在 hetInit()之后调用 capGetSignal()。

    您说您的输入信号连接到定义为 CAP2的 NHET pin4,但您在 capGetSignal()调用中读取了 cap1值。