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-F28377S:使用 ADCA F28377s LAUCHXL 对三相电压进行采样

Guru**** 2487425 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/646525/ccs-launchxl-f28377s-sampling-three-phase-voltage-with-adca-f28377s-lauchxl

器件型号:LAUNCHXL-F28377S

工具/软件:Code Composer Studio

你(们)好

有人能帮我解决这个问题吗

我目前正在施工电能质量监测仪。 此时、我将设置用于波形采样的 ADC、 我在下面进行了配置、但波形采样率很低。  我在其他论坛中看到、建议尝试用短接线将信号源连接到目标、将所有 GND 目标引脚连接到信号源的 GND、或者只需更改为差分和16位采样。 我尝试前两个选项、但问题没有  解决。 我能不能为我解决这个问题¡¡

void ConfigureADC (void)
{
EALLOW;

//
//写入配置
AdcaRegs.ADCINTSEL1N2.bit.INT1CONT=1;
AdcaRegs.ADCCTL2.bit.prescale = 2;//将 ADCCLK 分频器设置为/4
AdcaRegs.ADCCTL2.bit.resolution=0;//设置 ADCA 分辨率12位
AdcaRegs.ADCCTL2.bit.SGNALMODE=0;//信号模式
AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //打开 ADCA
//延迟1ms 以允许 ADC 加电时间
DELAY_US (1000); //添加延迟

EDIS;
}

//
// ConfigureEPWM -配置 ePWM SOC 和比较值
//
void ConfigureEPWM (void)
{
EALLOW;
//假设 ePWM 时钟已启用
EPwm1Regs.ETSEL.bit.SOCAEN = 1; //禁用组上的 SOC
EPwm1Regs.ETSEL.bit.SOCASEL = 4; //在向上计数时选择 SOC
EPwm1Regs.ETPS.bit.SOCAPRD = 1; //在发生第一个事件时生成脉冲
EPwm1Regs.CMPA.bit.CMPA = 0x0080;//将比较 A 值设置为2048个计数
EPwm1Regs.TBPRD = 0x0BB7;//将周期设置为4096个计数
EPwm1Regs.TBCTL.bit.CTRMODE = 0; //向上计数
EDIS;
}

//
// SetuPADCEPwm -设置 ADC ePWM 采集窗口
//
void SetuPADCEPwm (void)
{
uint16 acqps;
acqPs = adquisición;//81ns Ventana de T Ü V

EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 3;//SOC0将转换引脚 A3 FASE A
AdcaRegs.ADCSOC1CTL.bit.CHSEL = 5;//SOC3将转换引脚 A5 FASE B
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC0将转换引脚 A2 FASE C

AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期
AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期
AdcaRegs.ADCSOC2CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期

AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5;// ePWM1 SOCA/C 上的触发
AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 5;// ePWM1 SOCA/C 上的触发
AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 5;// ePWM1 SOCA/C 上的触发

AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志

EDIS;
}

中断 void adcVabc_ISR (void)
{
//va=AdcaResultRegs.ADCRESULT0;
//vb=AdcaResultRegs.ADCRESULT1;
//vc=AdcaResultRegs.ADCRESULT2;

VA= 3.3*(AdcaResultRegs.ADCRESULT0)/(float) 4095;
vb= 3.3*(AdcaResultRegs.ADCRESULT1)/(float) 4095;
VC= 3.3*(AdcaResultRegs.ADCRESULT2)/(float) 4095;
//AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 INT1标志
vp[count+]=AdcaResultRegs.ADCRESULT0;
if (results_buffer_size=count)
{
计数= 0;
}
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;


返回;
//asm (" ESTOP0");
} 

我获得了下一个分辨率。 原始信号是 一个正弦信号、具有偏移、频率60Hz 和幅值1V+-100mV。

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

    对于该器件、您是否以200MHz 的正常 SYSCLK 运行? 通过 AdcaRegs.ADCCTL2.bit.prescale 将 SYSCLK 到 ADCCLK 分频器设定为/2。 这将导致 ADC 模块的运行速度比最大额定值(50MHz)快得多。 通常、除非您有意将 SYSCLK 频率降低至100MHz 或更低、否则我希望将其设置为6 (等效于/4)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    由于您的其他问题超出了我的专业领域、我将您的问题分为以下新主题:
    e2e.ti.com/.../649773