请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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。