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.

TMS320F28069的ADC+DMA模式能把ADC速度更新做到的最快速度是多少??

Other Parts Discussed in Thread: TMS320F28069

TMS320F28069的ADC+DMA模式能把ADC速度更新做到的最快速度是多少??

开ADCINA0和ADCINB0 两个通道,自动转换模式,然后通过DMA转移数据,最快的速度能到多少??能到3 .46MSPS的速率 ??? 

另外还有一个问题,这些数据在更新的时候,相互之间的时间间隔怎么控制的?? 好像做不到间隔相等(ns级别)  求解,谢谢

  • DMA只是负责数据搬运,不需要CPU的干预,所以节省CPU的带宽以做其它事情,但它并不能提高ADC的采样或转换速度。

    采样转换速度的是可设置的,采样间隔也可设置。

    请仔细查看一下ADCSOCxCTL寄存器的说明,其中TRIGSEL位决定了触发信号,采样频率可根据触发信号决定,ACQPS位决定了采样转换时间。

    以3.46MSPS为例,下面说明到底是怎样来的(参考TRM 8.1.12 ADC Timings Figure 8-33. Timing Example For Sequential Mode / Late Interrupt Pulse使用overlap模式):

    平均算下来,每个ADC采样需要最少7个ADCCLK,转换需要13个ADCCLK的前6个,所以总共是13个ADCCLK,则速度为 90/2/13 MSPS = 3.46 MSPS.

     

  • 采样和转化是按流水线操作的??  还是要串联起来决定了每一个数据的得出结果的总时间??  那我2个数据之间间隔537.5ns,只要设置AdcRegs.ADCSOC1CTL.bit.ACQPS = 21   就算控制住了??

    还有那我设置成自动转换模式,然后按上面的设置好时间间隔,再弄好DMA,最后我去拿RAM里的数据就是时间间隔537.5ns的准确数据??

  • 在另一个帖子里提到,使用EOC中断的方式,或者定时器方式(但好像定时精度到不了),进行连续工作,只有第一次使用软件触发。

    另外,在时间上,这个表给出的是单个转换的时间,如果你使用上面的连续流水线,实际时间是更少的:

    single conversion: (ACQPS + 1 + 13) *ADCCLK

    continuous conversion: (ACQPS + 1 + 6) *ADCCLK

    两个数据之间间隔为537.5ns对应的ACQPS大概为17(11h),不过根据Table 8-18. ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) Register Field Descriptions(continued)对ACQPS的说明下方提到Other invalid selections: 10h, 11h, 12h, 13h, 14h, 1Dh, 1Eh, 1Fh, 20h, 21h, 2Ah, 2Bh, 2Ch, 2Dh, 2Eh, 37h, 38h, 39h, 3Ah, 3Bh,好像这个值是不能用的。但你可以enable non-overlap模式,则对应的时间是上面的计算公式,可以取值为10.

  • 那算数据准了,我读取每个ADC值到内存里的时间怎么控制呢??我估计是控制不好的,这个时间间隔,US级别还好,ns有点难啊,还是要用DMA??

  • 如果你只用一个SOC,那就必须使用DMA了。

    但如果你只采这一个信号,你可以将所有16个SOC都采集那个信号,这样16个ADCRESULT寄存器都可以保留它的值,也就相当于有16*537.5ns=8.6us的时间,然后,你只要在某一个SOC对应的EOC产生的中断里去读取就可以了。

  • 你指的是 AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1; 这种非重叠模式???AdcRegs.ADCSOC1CTL.bit.ACQPS =10;  ???

  • 对的,非重叠只是指下一个采样与前一个转换不重叠,具体你参照一下Figure 8-33. Timing Example For Sequential Mode / Late Interrupt Pulse和Figure 8-37. Timing Example for NONOVERLAP Mode比较看看。

    但你的信号只需要进入A0通道,不需要进入其它任何ADC通道,然后用所有16个SOC的CHSEL都指向A0通道,也即设为0.

     

  • 您好:

    我正在学习28069,想请教您关于28069的AD采样程序问题。方便加我qq联系吗?谢谢!我qq是1264788170