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速度更新做到的最快速度是多少??
开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.
在另一个帖子里提到,使用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.
如果你只用一个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.