请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28069 工具/软件:Code Composer Studio
我正在使用28069 controlSTICK 来实现一个简单示波器、该示波器具有2个 ADC 通道、均为1MHz 采样率。
ADCCLK 为45MHz
ADCINA2和 ADCINB2在连续模式下按顺序采样、由 ADCINT1触发 SOC0/1、EOC0触发 ADCINT1、EOC1触发 ADCINT2
因此、我认为以下设置应该为每个通道提供1MHz 的频率: 45MHz/(6+16)/2 = 1.022MHz
EALLOW; AdcRegs.ADCCTL2.bit.CLKDIV2EN = 1; AdcRegs.ADCCTL2.bit.CLKDIV4EN = 0; //ADCCLK=SYSCLK/2 DELAY_US (ADC_USDELAY); //转换 ADC 通道前的延迟 AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //延迟中断脉冲 AdcRegs.INTSEL1N2.bit.INT1E = 1; //启用 ADCINT1 AdcRegs.INTSEL1N2.bit.INT1CONT = 1; //启用 ADCINT1连续模式 AdcRegs.INTSEL1N2.bit.INT2E = 1; //启用 ADCINT2 AdcRegs.INTSEL1N2.bit.INT2CONT = 1; //启用 ADCINT2连续模式 AdcRegs.INTSEL1N2.bit.INT1SEL = 0; //设置 EOC0以触发 ADCINT1触发 AdcRegs.INTSEL1N2.bit.INT2SEL = 1; //设置 EOC1以触发 ADCINT2触发 AdcRegs.ADCSOC0CTL.bit.CHSEL = 2; //将 SOC0通道选择设置为 ADCINA2 AdcRegs.ADCSOC1CTL.bit.CHSEL = 10; //将 SOC1通道选择设置为 ADCINB2 AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 1; // ADCINT1将触发 SOC0 AdcRegs.ADCINTSOCSEL1.bit.SOC1 = 1; // ADCINT1将触发 SOC1 AdcRegs.ADCSOC0CTL.bit.ACQPS = 15; //将 SOC0 S/H 窗口设置为16个 ADC 时钟周期(15个 ACQPS 加1) AdcRegs.ADCSOC1CTL.bit.ACQPS = 15; //将 SOC1 S/H 窗口设置为16个 ADC 时钟周期(15个 ACQPS 加1) EDIS;
因此、如果我在测量10kHz 正弦信号时显示100个点、它应该提供一个完整的正弦波周期。 但我在这里得到5、这意味着采样率大约为200kHz。
是否有人可以指出我的代码中的任何问题或我遗漏的任何内容?