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.

[参考译文] TMS320F280025:将项目从80引脚更改为48引脚、并将 LAUNCHXL-F280025C 板更改为我自己的48引脚 F280025板后、ADC 转换异常

Guru**** 2586645 points
Other Parts Discussed in Thread: TMS320F280025, LAUNCHXL-F280025C, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1025510/tms320f280025-after-change-project-from-80pin-to-48pin-and-from-launchxl-f280025c-board-to-my-own-48pin-f280025-board-adc-converts-abnormally

器件型号:TMS320F280025
主题中讨论的其他器件: LAUNCHXL-F280025CSysConfig

尊敬的专家:

    我正在使用 TMS320F280025、我在 LAUNCHXL-F280025C 板上设置项目、ADC 模块已正常转换。目前、硬件工程师已设计出我们自己 的板、采用 48引脚封装的 F280025。我将项目设置从三个位置更改:

构建\SysConfig 中的其他项:

SysConfig 中的器件:

  

SysConfig 中的相对端口设置、但是我在 SysConfig 脚本中看不到 ADC 配置、因此我不 更改 ADC 配置代码、如下所示:

void initadc (void)


ADC_setVREF (ADCA_BASE、ADC_reference_internal、ADC_reference_3_3V);
ADC_setVREF (ADCC_BASE、ADC_reference_internal、ADC_reference_3_3V);

ADC_setPrescaler (ADCA_BASE、ADC_CLK_DIV_2_0);
ADC_setPrescaler (ADCC_BASE、ADC_CLK_DIV_2_0);

ADC_setInterruptPulseMode (ADCA_BASE、ADC_PULSE_END_of _CONV);


ADC_enableConverter (ADCA_BASE);
DEVICE_DELAY_US (1000);
ADC_enableConverter (ADCC_BASE);
DEVICE_DELAY_US (1000);


空 initADCSOC (空)


ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA、ADC_CH_ADCIN9、8);
ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCB、ADC_CH_ADCIN1、8);
ADC_setupSOC (ADCC_BASE、ADC_SOC_numer1、ADC_TRIGGER_EPWM1_SOCB、ADC_CH_ADCIN3、8);
ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER2、ADC_TRIGGER_EPWM1_SOCB、ADC_CH_ADCIN10、8);
ADC_setupSOC (ADCC_BASE、ADC_SOC_Number3、ADC_TRIGGER_EPWM1_SOCB、ADC_CH_ADCIN11、8);
ADC_setupSOC (ADCC_BASE、ADC_SOC_Number4、ADC_TRIGGER_EPWM1_SOCB、ADC_CH_ADCIN15、8);

ADC_setInterruptSource (ADCA_BASE、ADC_INT_NUMBER1、ADC_SOC_NUMBER0);
ADC_enableInterrupt (ADCA_BASE、ADC_INT_NUMBER1);
ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_NUMBER1);

ePWM_setADCTriggerSource (UPHASE_base、ePWM_SOC_B、ePWM_SOC_TBCTR_ZERO);
ePWM_setADCTriggerEventPrescale (UPHASE_base、ePWM_SOC_B、1);
ePWM_enableADCtrigger (UPHASE_base、ePWM_SOC_B);

ePWM_setADCTriggerSource (UPHASE_base、ePWM_SOC_A、ePWM_SOC_TBCTR_PERIOD);
ePWM_setADCTriggerEventPrescale (UPHASE_base、ePWM_SOC_A、1);
ePWM_enableADCtrigger (UPHASE_base、ePWM_SOC_A);


我自己电路板的 MCU 部分如下所示:

我已经测试了 VDD (1.2V)、VDDIO (3.3V)、VDDA (3.3V)、VSS (GND、0V)和 VSSA (0V)、VREFHI (1.3-1.4V 至 GND)和 VREFLO (1.3-1.4V 至 GND)、 VREFHI 和 VREFLO 之间的电压看起来 是0V。所以硬件端口上的电压通常也是0V。

然而、在我调试程序后、其中一个 ADC 转换稳定为0、其他转换主要 为4095、有时为0。

因此、我怀疑这主要是因为我不更改 ADC 配置代码、例如通道的 ADC 地址或其他代码。Becauese 我的项目是根据80引脚项目进行调制的。更改的三个位置如上所述。

您能给我一些建议还是想象一下?我很感激您能为我提供帮助。

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

    您好、Lu、

    让我们首先看一下 ADCSOC 分配。 在函数 initADCSOC()中,使用 ADC_setupSOC 的通道设置有6个分配。  如果我看一下上一个原理图中的 ADC 输入电路、我会看到5个电路是分压器/RC 或纯 RC、其中3个电路用于磁传感器、总共8个。  ADC SOC 设置只有6个、似乎不匹配 SOC 中的设置。  例如:原理图中的 HALL_U 显示它连接到 A6/C6。  我在您的 ADC_setupSOC 中未看到 ADC_CH_ADCIN6正在设置。

    我认为您首先需要修复通道分配并尝试一些转换。  除非在语句"ADC_enableConverter (ADCC_BASE);"之后停止程序(输入断点)、否则不会测量 VREFHI 和 VREFLO 之间的任何值。  首先尝试这两件事、让我知道您找到的内容。

    此致、

    Joseph

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

    您好 Joseph 

       非常感谢您的指导。我发现了我所犯的错误、我也解决了这个问题。

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

    您好、Lu、

    很高兴知道您发现了问题。  我现在关闭这个帖子。

    此致、

    Joseph