Other Parts Discussed in Thread: TMS320F28335
问题1.
如上图所示,例程中DMA通道2的源地址为ADCBRESULT_BASE,这个应该不对,因为使用的是ADCD这个ADC模块,请TI工程师确认一下
问题2.
如上图所示,ADCA和ADCD是同步采样的,所以ADCA2(ADCA单元中断2)和ADCD2(ADCD单元中断2)是同时发生的,但是从原理上讲,用DMA_TRIGGER_ADCD2作为DMA通道2的触发信号是不是更合理
问题3.
工程默认的采样窗口是75nS,我不清楚例程为什么要把采样窗口设置成这样,但是对于TMS320F28379D的LaunchPad开发板而言,这个采样时间过短,下面是对输入1.632V输入信号的采样结果
输入1.632V对应的理论转换结果为2228,可以发现图中的转换结果明显偏小
加大采样窗口后,可以得到准确的结果,如下图所示,ACQPS设定为163
我的计算是按照TRM中的相关章节11.15.2 Choosing an Acquisition Window Duration,如下图所示
由于LaunchPad各ADC通道没有Rs和Cs所以我假定了一组数值,因此有可能不准确。不过在此提醒大家使用ADC单元的时候计算一下最小采样窗口,同时注意各个通道的Cp值是不一样的,
TMS320F28379D的ADC通道CH值为14.5pF,对比一下TMS320F28335的ADC通道CH为1.64pF,虽然TMS320F28379的Ron电阻为425Ω,比TMS320F28335的Ron电阻1KΩ小一些,但是由于TMS320F28379D的CH数值较大,因此建议采用相对小些的Rs电阻以减小最小采样窗口从而减小对时间敏感型应用的影响
问题4.
不太清除上述代码片段中高亮语句的作用,注释掉以后,代码运行没有发现异常
看起来是使能了对counter 2的初始化
但是例程并没有使用counter2,我没有找到哪里将SOCPSSEL配置成了1
问题5.
SOCBCNT2(SOCACNT2)在SOCB(SOCA)产生的时候,会被清零吗?如果不会被清零,那是不是要手动清零呢?
问题6.
srcStep为-14是因为16个结果寄存器,以32bit的大小进行传输,最后一次传输地址指针指向ADCRESULT14,所以在开始新的burst传输时需要将地址指针减去14用以使指针指向ADCRESULT0,请问这个理解对吗?
destStep为2是不是也是因为以32bit的大小进行传输,最后一次传输时地址指针指向addr1.14,每次传输16个16bit的结果,所以需要使addr1.14+2 = addr2.0 从而开始新的16个16bit结果的存储,请问这个理解对吗?