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/LAUNCHXL-F28379D:ADC 结果返回4095 (电压高于0V)和2118 (电压高于0V)

Guru**** 2538950 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D, CONTROLSUITE, SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/755950/ccs-launchxl-f28379d-adc-result-returns-4095-by-voltages-above-0-v-and-2118-by-0-v

器件型号:LAUNCHXL-F28379D
Thread 中讨论的其他器件: controlSUITESFRA

工具/软件:Code Composer Studio

你好。

我尝试使用 LAUNCHXL-F28379D 和 BoosterPack DRB8305EVM 旋转电机。

控制算法应在由 ADC EOC 调用的 ADC ISR 中计算。 所有 ADC 的 SoC 均由 ePWM 模块启动。 我从 controlSUITE 示例中获取了用于配置 ePWM 模块和 ADC 的代码:1)\ti\controlSUITE\libs\app_libs\motor_control\libs\fcl_SFRA\v01_00_00\examples\fcl_SFRA_379DXL_kits 和2)\ti\controlSUxs\00_00_00_00_00_mcostor_mv1\TIMCUTI_00_mv1\TIMCUTIMCUST_00_00_MCUTIMCUST_00_00_MCUTIM1_MCUST_

一切都按预期工作:通过 CTR_OD_epwm4 = PRD、ADC 转换开始、然后在转换结束后调用中断。 但是、大多数通道(IA =0、IB=0、IC=0和 UDC=22)的转换结果 为4095、而对于 UA、Ub、UC 通道、信号浮动约 2000、与实际电压无关。

为了定位问题、我尝试读取电位计电压、并通过0V 以上的电压获得2118和4095。ADC 参数的更改- ADC_Clock、窗口大小、选择不同的通道/SoC/模块-不会改变实现的结果。 我不知道会出现什么问题、我真的很困在这里。  请帮帮我:)

以下是我的 ADC 代码:

//用于 ADC 配置的函数:
//写入 ADC 配置(控制寄存器1和2)并为 ADC A、ADC B 和 ADC C
void ConfigureADC (void)加电
{
EALLOW;

//写入配置
AdcRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4

AdcSetMode (ADC_ADCC、ADC_Resolution_12位、ADC_SIGNALMODE_SINGLE);

//将脉冲位置设置为延迟(在电压转换结束时而不是采集窗口结束时生成 EOC 脉冲)
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;

//为 ADCCTL1.ADCC1ms


加电时间
延迟;ADCCTL1.ADCC1000 (ADCCTL1.bit.ADCCES1.ADCC1ms)

EDIS;
}


// ADC_setup 的宏:

#define ADC_CH_ASSIGN (AdcRegs、CH_NUM、ADCSOCxCTL、CH_ACQPS、CH_ADCTRIGSEL) \
AdcRegs.ADCSOCxCTL.bit.CHSEL = CH_NUM; /* SOCx 连接到信号@ CH_NUM */\
AdcRegs.ADCSOCxCTL.bit.ACQPS = CH_ACQPS; SYSCLK 周期中的//\
AdcRegs.ADCSOCxCTL.bit.TRIGSEL = CH_ADCTRIGSEL; ePWM1 SOCA/C 上的/*触发

//主函数中的//代码:
//配置 ADC 并为其加电
ConfigureADC();
// adc_setup:
EALLOW;
adc_ch_assign (AdcRegs、3、ADCSOC12CTL、17、 ADCTRIGSEL);// poti//
ADC 中断设置(使用 ADCINT1)
AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 12;// ADC C EOC of SOC12被用来触发电机控制中断 AdccRegs.ADCINT1N2.bit.INT1CONT
= 0;// ADCnitelt1或 ADCtine.nuct1 (ADCnitr.INT1)

//确保 INT1标志被清除
EDIS; 

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

    您似乎只启动了 ADC C、而不是 A 和 B。您是否仅使用 ADC C 来测量这些信号? 如果您的信号被馈送到另一个 ADC、则需要对其进行初始化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、感谢您的回答。 这是一个用于读取电位计的代码、其中仅使用了一个 ADC。 对于 DRV 8305、我已初始化全部3个 ADC。 问题是 Launchpad 上的 JP6未连接、因此所有 ADC 都没有 U_ref
    JP6的连接解决了该问题、您可以关闭该线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒!! 单击 Resolved (已解析)以关闭线程。