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.

[参考译文] MSP430FR5989:错误生成 FlowESI 代码。

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1033353/msp430fr5989-flowesi-code-generated-incorrectly

器件型号:MSP430FR5989

大家好、

我正在从事 ESI 项目、我们使用 FlowESI GUI 版本1_01_00_04生成了设计框架和文件。
我们发现了一些可能的错误、希望与您分享。 我们需要知道它们是否是错误 、以及如何修复它们:
1º μ A。 根据 此文件./ESIConfig/esiCalibration.c
(笑声)
sensorState = ESI_getLatchedComparatorOutput (channel_0_PPU_select | channel_1_PPU_select);
开关(sensorState)

  情况0x00:
    afe2MaxDACCH0  += ESI_getAFE2DACValue (channel_0_DAC2_UPPER 寄存器);
     中断;
  情况0x01:
     afe2MinDACCH1 += ESI_getAFE2DACValue (channel_1_DAC2_lower 寄存器);
     中断;
  情况0x02:
    afe2MaxDACCH1 += ESI_getAFE2DACValue (channel_1_DAC2_UPPER 寄存器);
    中断;
  情况0x03:
    afe2MaxDACCH0  += ESI_getAFE2DACValue (channel_0_DAC2_UPPER 寄存器);
    中断;默认:  中断;

(笑声)
 
这两个案例是相同的、因此我们怀疑它们是错误的、但我们不知道它们必须改变。
我想了解 为什么将 afe2MaxDACCH1 放置在  case 0x02之后。 我需要了解这一点、以便检查它是否是正确的位置。 我不知道是否必须更改它。 基本上、我们需要了解 sensorState 的含义。
(笑声)
情况0x00:
  afe2MaxDACCH0 += ESI_getAFE2DACValue (channel_0_DAC2_UPPER 寄存器);
  中断;
(笑声)
为此:
(笑声)
情况0x00:
  afe2MinDACCH0 += ESI_getAFE2DACValue (channel_0_DAC2_lower 寄存器);
  中断;
(笑声)
2º μ A。 根据 同一文件./ESIConfig/esiCalibration.c
(笑声)
//对于循环、这是为了找到 ch0和 ch1的初始 DAC 值
对于(I = 0;I 范围;i++)//测试"rangeNum"乘以12位 DAC


   _bis_SR_register (LPM3_bits+GIE); //等待 ESISTOP 标志


   if (fsParam->channel0Enabled=true){
     if (!(ESI_getLatchedComparatorOutput (ESI_AFE2_Channel1_select))){
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_0_DAC2_UPPER)+ dACBit、channel_0_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_0_DAC2_lower)+ dACBit、channel_0_DAC2_lower 寄存器);
      }否则{
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_0_DAC2_UPPER)- dACBit、channel_0_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_0_DAC2_lower)- dACBit、channel_0_DAC2_lower 寄存器);
      
   

   if (fsParam->channel1Enabled=true){
      if (!(ESI_getLatchedComparatorOutput (ESI_AFE2_CHANNEL2_SELECT))){
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_1_DAC2_UPPER)+ dACBit、channel_1_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_1_DAC2_lower)+ dACBit、channel_1_DAC2_lower 寄存器);
      }否则{
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_1_DAC2_UPPER)- dACBit、channel_1_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_1_DAC2_lower)- dACBit、channel_1_DAC2_lower 寄存器);
      
   

   if (fsParam->channel2Enabled=true){
     if (!(ESI_getLatchedComparatorOutput (ESI_AFE2_CHANNEL3_select)))){
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_2_DAC2_UPPER)+ dACBit、channel_2_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_2_DAC2_lower 寄存器)+ dACBit、channel_2_DAC2_lower 寄存器);
      }否则{
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_2_DAC2_UPPER)- dACBit、channel_2_DAC2_UPPER 寄存器);
         ESI_setAFE2DACValue (ESI_getAFE2DACValue (channel_2_DAC2_LOW_register)- dACBit、channel_2_DAC2_LOW_register);
      
   


   dACBit >=1;


(笑声)
我们认为它们必须为: ESI_AFE2_CHANNEL0_SELECT、而不是  ESI_AFE2_Channel1_select 等。 您是否想检查该代码并告诉我们正确的代码是什么?
非常感谢你的帮助。
此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 userid="71831" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1033353/msp430fr5989-flowesi-code-generated-incorrectly "]
    这两个案例是相同的、因此我们怀疑它们是错误的、但我们不知道它们必须改变。
    我想了解 为什么将 afe2MaxDACCH1 放置在  case 0x02之后。 我需要了解这一点、以便检查它是否是正确的位置。 我不知道是否必须更改它。 基本上、我们需要了解 sensorState 的含义。
    [/报价]

    状态顺序似乎与 《使用 MSP430扩展扫描接口(ESI)进行 LC 传感器旋转检测》中定义的状态相匹配。 图14中的状态机图可能会有所帮助。

    [引用 userid="71831" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1033353/msp430fr5989-flowesi-code-generated-incorrectly "]
    (笑声)
    情况0x00:
      afe2MaxDACCH0 += ESI_getAFE2DACValue (channel_0_DAC2_UPPER 寄存器);
      中断;
    (笑声)
    为此:
    (笑声)
    情况0x00:
      afe2MinDACCH0 += ESI_getAFE2DACValue (channel_0_DAC2_lower 寄存器);
      中断;
    [/报价]

    没错。 以下主题中对此进行了讨论。

    FLOWESI-GUI:MSP430FR6989 -生成的代码似乎错误

    [引用 userid="71831" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1033353/msp430fr5989-flowesi-code-generated-incorrectly ]我们认为它们必须是: ESI_AFE2_CHANNEL0_SELECT、而不是  ESI_AFE2_Channel1_select 等。 您是否会介意检查该代码并告诉我们正确的代码是什么?

    选择的标签似乎被 N+1所移位。 我曾看到、有时要使它更直观-例如1、2、3与0、1、2。 如果代码之间的这种情况一致、则可以。 在配置 DAC 之前、if()语句检查比较器是否处于非活动状态。

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

    尊敬的 James:

    非常感谢您的帮助。

    根据 ESI_AFE2_Channel1_SELECT、它似乎是一个错误: