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.

MSP430G2553 ADC10 使用DTC 多通道多次采样问题



求官方正版解释:

最近搞了好久的ADC10 ,想用ADC10来来采样多个通道的值,比如只采集A7和A5,设置好DTC等等值,很多程序都是用这条语句来获得值的ADC10SA = (unsigned int)a此时a指向的地址是0x204,此时的ADC10SA的地址也是0x204,官方的解释是在0x200~0x206这个位置,这怎么解释?这是不是不正确???另外通道不连续,是不是采样时把A7~A0全部都采样了一次,还是A7,A6,A5采集一片,最终才会产生中断??
论坛中有几个帖子涉及到这个问题,也没个人回答。。。。如下:www.deyisupport.com/.../67721.aspx 


  • 序列通道采样模式,每个采样结果会存储在ADC10MEM,不太明白大家为啥不看这个寄存器。序列通道采样模式是从编号高的通道依次采样。每完成一次采样产生一次中断。
  • 楼上说的是对的。ADC10模块不像ADC12每个通道没有专门的缓存寄存器。如果用连续多通道采样的话,都会配合DTC的功能来实现。

    建议你在做连续采样时,通道数设为连续的。

    谢谢

  • 你说的是开一个通道,采集结果,产生中断,读ADC10MEM的值.又开一个通道,采集一次,中断读数,请注意,你误解了DTC的用法,TI例程ADC10——10就是这样设置的,我说的是:多路ADC一次采集完成,产生中断,用一个数据来读数据,比如这样: ADC10SA = (unsigned int)adc_sample;   //数据传送开始地址寄存器  设置DTC的开始地址  Data buffer start,结果就在adc_sample这个设置好的数组里
    你的实例是怎么做的,有程序可以贴出来看看?谢谢!

  • TI员工,你好!我看到网上很多程序都是用一个数组一次性读取多个通道,比如ADC10SA = (unsigned int)adc_sample;这样
    那么问题是:1.通道不连续采样,结果会怎么样?我试过,是结果不准确,你的结果呢?

    2.采样通道连续,假如我采集A7,A6,A5这三个通道,设置采集每个通道采集2次,总计6次,采样结果是不是也把A4~A0也采集进来了,因为我发现数据也不对,请给与解释,谢谢!
    这个博客是写得比较详细,但是也有问题。
    http://blog.sina.com.cn/s/blog_6cd2030b01017x74.html 

  • 你说的是开一个通道,采集结果,产生中断,读ADC10MEM的值.又开一个通道,采集一次,中断读数,请注意,你误解了DTC的用法,TI例程ADC10——10就是这样设置的,我说的是:多路ADC一次采集完成,产生中断,用一个数据来读数据,比如这样: ADC10SA = (unsigned int)adc_sample;   //数据传送开始地址寄存器  设置DTC的开始地址  Data buffer start,结果就在adc_sample这个设置好的数组里
    你的实例是怎么做的,有程序可以贴出来看看?谢谢!

  • 首先,用一个数组是可以读取多个通道的采样值的。但是这个前提是你使能了DTC。 因为DTC的功能相当于DMA,会自动将每个通道采样好的数据搬到MCU 的memory区间内。

    由于ADC10不像ADC12那样功能强大,如果你使用它的连续通道采样时,它是从你设置的最高通道号开始,以状态机的工作方式一个通道一个通道往下采样转换,知道A0。所以说如果你要使用连续采样时,需要将将通道连在一起。这样叫连续通道采样。可以的话,尽量从A0往上设置。

    如果像你设置了A5,A6,A7的话,系统会采集到A0结束,这样的话,你需要注意DTC对应的数据了。不然容易得到错的数据。

    谢谢

  • 看到上面的回复!明白太多了!