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.

[参考译文] MSP430F67621A:电能测量设计中心(EMDC):读取高于1Hz 的更新速率?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/816887/msp430f67621a-energy-measurement-design-center-emdc-reading-update-rate-greater-than-1-hz

器件型号:MSP430F67621A

你(们)好。

我成功地使 EMDC 库(1.20版)在 MSP430F67621A (具有3×SD24和3×ADC10转换器)上工作、并且我们正在与客户一起试用我们的设计。 目前进展顺利。

据我了解、EMDC 库会更新它以1Hz 速率计算的值、即每秒提供新的电压、电流等值。 是否可以提高此更新速率? 我们的客户想知道是否能够以10Hz 的速率获得更新的读数。

谢谢、

肖恩。

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

    您好 Sean、

    [引用 USER="Sean Laniga]我成功地让 EMDC 库(1.20版)在 MSP430F67621A ( 具有3×SD24和3×ADC10转换器)上工作、我们正在与客户一起试用我们的设计。 目前情况良好。[/引述]

    这是个好消息。 感谢您的分享! 顺便说一下、还有一个新的 v1.30。

    [引用 USER="Sean Laniga]据我所知、EMDC 库会更新以1Hz 速率计算的值、即每秒提供新的电压、电流等值。 是否可以提高此更新速率? 我们的客户想知道是否能够以10Hz 的速率获得更新的读数。

    没错。 您可以通过更改'hal_dc.c'文件中每个阶段的 if ()语句来调整更新速率。 下面是 MSP430i20xx 器件的单相配置、它应该是类似的。

    if (gEmSWResult.phaseMetrologyPing [EM_PH_A_IDX]->cycleCount =gEmSWConfig.algorithmConfig->mainNomFreq)
    {
    phaseDataReady |= HAL_ADC_PHASE_A_DATA_READY;
    em_perDataChunk (&gEmSWConfig、(EM_SW_Lib_Result_Handle *)&gEmSWResult、EM_PH_A_IDX);
    }
    否则(gEmSWResult.phaseMetrologyPing[EM_PH_A_IDX]->sampleCount >(2 FREEM_SAMPLING_Q_Hz)
    
    phaseDataReady |= HAL_ADC_PHASE_A_DATA_READY;
    em_perDataChunk (&gEmSWConfig、(EM_SW_Lib_Result_Handle *)&gEmSWResult、EM_PH_A_IDX);
    } 

    在这里、将 cycleCount 与 mainNomFreq 定义(在'EM_userConfig.h'文件中定义)进行比较。 对于我的项目、它被定义为50 (Hz)。 因此、当 CycleCount 达到50时、 HAL_ADC_PHASE_A_DATA_READY 标志会设置为通过数据发送。 您可以将 if()语句中的逻辑修改为如下所示的逻辑。 50Hz 下每秒有50个周期、因此每5个周期设置此标志会导致10Hz 更新速率、而不是1Hz。

    如果电压上没有过零(例如、当您只想测量电流而不是电压时)、则其他 if()会作为超时出现。 在这里、该超时将是2秒。

    if (gEmSWResult.phaseMetrologyPing [EM_PH_A_IDX]->cycleCount = 5)
    {
    phaseDataReady |= HAL_ADC_PHASE_A_DATA_READY;
    em_perDataChunk (&gEmSWConfig、(EM_SW_Lib_Result_Handle *)&gEmSWResult、EM_PH_A_IDX);
    }
    否则(gEmSWResult.phaseMetrologyPing[EM_PH_A_IDX]->sampleCount >(2 FREEM_SAMPLING_Q_Hz)
    
    phaseDataReady |= HAL_ADC_PHASE_A_DATA_READY;
    em_perDataChunk (&gEmSWConfig、(EM_SW_Lib_Result_Handle *)&gEmSWResult、EM_PH_A_IDX);
    } 

    假设每个样本之间的通信可以完成、这应该起作用。 显然、将存在某种更新速率阈值、其中的计算和采样将克服通信问题。

    希望这对您有所帮助!

    此致、

    James

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

    很有趣,感谢您的及时答复-我将对此进行研究并尝试一下。