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.

关于G2553 ADC10DTC1寄存器的使用问题



在G2553数据手册里这样定义这个寄存器DTC transfers. These bits define the number of transfers in each bloc,而且我发现,以这个官方例程msp430g2x33_adc10_09为实验对象,其中有如下语句

ADC10DTC1 = 0x20;

ADC10SA = 0x200;

在我修改ADC10DTC1的值时,通过IAR的观察窗,发现程序在0x200以后写入的数据数量随着改变,与之相对应。值为几,就写几个。

令ADC10DTC1=0x04时;memory如图

所以我推测,为了弥补ADC10MEM数量过少的问题,430借助DTC可以将指定位置开辟为ADC的数据存储区,

根据ADC10DTC1的值开辟出相应的存储位置,而ADC采样所得值将按顺序依次将值写在对应位置,循环往复,

比如在单通道多次采样模式下,ADC10DTC1值为4,那么ADC采样值将按顺序从ADC10SA位置开始依次将值写在1位置,2位置,

3位置,4位置,1位置,。。。。。。。如此循环往复。在其他模式下,也是根据采样值的先后按序储存。

不知道我的理解对不对?

这个官方例程采的是A10的值,但为什么我发现在运行时(借助断点),我发现上图里那些02一直不改变,无论温度升高还是降低。

我是新手,不知道我的推测对不对?

  • 理解基本正确,但MSP430的ADC之所以用DTC,并不是为了弥补ADC10MEN数量过少。DTC的设计是用来方便把ADC值直接转出来,减少CPU的负载。

    上图中02之所以不变,是因为ADC是16-BIT, 02是高8-BIT。

     

     

  • 其实我一直疑问的是,ADC10什么时候进中断啊,尤其是我采用多通道循环采样时,我看了资料上面的时序图,实在是不理解啊,能否粘贴一个时序图,详细讲解下啊?再就是我在选择多通道循环时,怎么可以读取ADC10MEM的值呢,不用那个ADC10DTC??