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.

[参考译文] TMS320F280025C:TMS320f280025 - ADC 读取问题

Guru**** 2454880 points
Other Parts Discussed in Thread: TMS320F280025C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1207635/tms320f280025c-tms320f280025---adc-reading-issue

器件型号:TMS320F280025C

尊敬的团队成员

        我们使用了 TMS320F280025C - 48引脚 IC

将 JTAG 连接到 PCB 后、便可以成功下载代码。  

在调试代码时、ADC 值无法正确处理。  

我们在 ADC 中使用了以下设置

      1.内部基准电压3.3V

      2. ADC 时钟50MHz

我们使用了电机控制 SDK 项目。 我们将驱动器 IC 用作 DRV8343。

ADC 的电流和电压值输入不正确。 但相同代码在 Launchpad 280025C 中可正常工作。

谢谢你

Punitha . b.

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

    请查看 通用工程和实验用户指南: https://www.ti.com/lit/spruj26。 按照5.1章的说明更改 hal.c 和 hal.h 文件中的器件配置代码。

    如果您没有机会查看技术讲座材料、我认为这样可以帮助您揭开一些术语和架构的神秘面纱、并了解 C2000 MCU 以着手开发。

     

    C2000五分钟概述

    C2000 Academy

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

    以上问题得到解决。 错过了 VrefLO 引脚的接地连接。 现在、在中断例程中正确读取了 ADC 值。   

    在通用电机控制项目的电压和电流偏移校准计算函数中、

    for (offsetCnt = 0;offsetCnt < 32000;offsetCnt++)

          //清除 ADC 中断标志
           ADC_clearInterruptStatus (MTR1_ADC_INT_base、MTR1_ADC_INT_NUM);

          while (ADC_getInterruptStatus (MTR1_ADC_INT_base、MTR1_ADC_INT_NUM)= false);

         HAL_readMtr1ADCData (&obj->adcData);

          if (offsetCnt >= 2000)//忽略前2000次
         {
               //相电流检测偏移
               obj->adcData.offset_I_AD.value[0]=
                                           offsetk1 * obj->adcData.offset_I_ad.value[0]+
                                           obj->adcData.I_A.值[0]* offsetK2;

              obj->adcData.offset_I_AD.value[1]=
                                          offsetk1 * obj->adcData.offset_I_ad.value[1]+
                                         obj->adcData.I_A.value[1]* offsetk2;

             obj->adcData.offset_I_AD.value[2]=
                                          offsetk1 * obj->adcData.offset_I_ad.value[2]+
                                         obj->adcData.I_A.value[2]* offsetk2;


               #if defined (motor1_fast)|| defined (motor1_ISBLDC)
                        invVdcbus = 1.0f / obj->adcData.VdcBus_V;

                       //相位电压感应偏移
                      obj->adcData.offset_V_sf.value[0]=
                                           offsetk1 * obj->adcData.offset_V_sf.value[0]+
                                           (invVdcbus * obj->adcData.V_V.value[0])* offsetK2;

                     obj->adcData.offset_V_sf.value[1]=
                                           offsetk1 * obj->adcData.offset_V_sf.value[1]+
                                           (invVdcbus * obj->adcData.V_V.value[1])* offsetK2;


                     obj->adcData.offset_V_sf.value[2]=
                                           offsetk1 * obj->adcData.offset_V_sf.value[2]+
                                           (invVdcbus * obj->adcData.V_V.value[2])* offsetK2;
              #endif // motor1_fast || motor1_ISBLDC

          }
          方案
          {
                //启用 PWM
                HAL_enablePWM (obj->halMtrHandle);                    
           }
    }// for ()

    在该函数之后、当前偏移值为2035、2045、2009

    但 Voltage Offset 值为 1.033、1.026、1.036,  而不是0.5006,0.5002,0.498。

    相应的 ADC 引脚电压保持相同0.5V。

    将发生电压偏移误差。

    不知道如何继续

    请帮助解决此问题。

    谢谢  

    Punitha.B.

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

    哪种构建级别? 请检查直流母线电压的感测值是否正确、以及偏移校准期间直流母线电压和相电压的 ADC 结果值。

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

    膨胀级别: DMC 级别2

    可以。 直流母线电压的检测值正确。 在偏移校准期间、直流母线电压和相电压的 ADC 结果值相同至0.5V

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

    DMC 3级也出现了同样的问题。 但在偏移校准期间、ADC 的直流母线电压和相电压值为0.5V。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="531454" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1207635/tms320f280025c-tms320f280025---adc-reading-issue/4558757 #4558757"]、但在偏移校准期间、直流母线电压和相电压的 ADC 值为0.5V。

    请检查是否为直流母线和 DRV 器件添加了正确的电源、并正确配置了 ADC 以进行电压感应。

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

    但在 EVM 板中、上述代码已正确执行。 电机也能正常运行。

    我认为电源方面也没有问题。 在我们开发的 PCB 中、直流母线引脚和 ADC 引脚中的电压始终为0.5V。  

    但代码不起作用。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为电源也没有问题。 在我们开发的 PCB 中、直流母线引脚和 ADC 引脚中的电压始终为0.5V。  [/报价]

    这话什么意思? 如果您调节直流母线电压、该值是否发生了变化?  motorVars_M1.adcData.VdcBus_V 的值是否接近直流母线电压?

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

    可以。 当我更改为直流电压时、相应的 motorVars_M1.adcData.VdcBus_V 值也发生了变化。 我们使用以下 ADC 通道来测量电压和电流。

    我们使用了 Tms320F280025C 48引脚 IC

    1.直流电压 =  A6/C6  引脚编号为 4      通道 C6   

    2. VSEN A   = A0/C15     引脚编号 11      通道 A0   

    3. VSEN B  = A3/C5      引脚编号 5       通道 A3   

    4. Vsen C=A2/C9         引脚编号6    通道  C9

    5. ISEN A  = A15/C7     引脚编号7   通道  A15

    6. Isen B = A11/C0       引脚编号8  通道  C0

    7. Isen C = A5/C2         通道  C2的引脚

    我们也更改了相应的 CMPSS 配置。

    在 runoffset1校准函数之后、只会发生错误。

    当我在 ADC 读取函数中设置为断点时、结果寄存器中的值根据相应引脚的输入电压而来。

    如果我将 for 环路计数值从32000减少到2050、则不会发生电压失调误差。  

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

    这与设置计数值无关。您可以按如下所示更改代码、并运行构建级别1中的实验以检查是否有任何问题。

    if (offsetCnt >= 2000)//忽略前2000次

    offsetCnt = 2000;

    粗糙化的直流母线电压或相位电压可能不正确、因为 PWM 或 ADC 此时在您的项目中不起作用。