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.

关于AD采样



最近在学习MSP430的AD采样,使用官方给的例子是没问题的,但是我看了很多例子,基本上都是使用P6SEL=0x01的0端口来举例,调试通过,而且也没问题,现在我需要改一下转换通道,AD一共是有16个可以使用的模拟通道,然后我改为P7.0即A12通道,程序如下:

void ADC_init()

{

P7SEL |= 0x000f; // 选择并设置通道(功能选择:作为模拟输入)
ADC12CTL0 = ADC12ON + ADC12MSC + ADC12SHT1_8; // 打开 ADC12, 多次采样,extend sampling time
// to avoid overflow of results
ADC12CTL1 = ADC12SHP + ADC12CONSEQ_2; // 使用采样定时器, 单通道多次转换
ADC12IE = 0x008; // ADC12IFG.3中断允许
ADC12CTL0 |= ADC12ENC; // 使能ADC转换
ADC12MCTL0 = ADC12INCH_12; // ref+=AVcc, channel = A12 -> P7.0
ADC12CTL0 |= ADC12SC; // 开始转换 - software trigger

}

这样配置了ADC以后,无法进入到中断,但是我把ADC12IE=0x008改为ADC12IE=0x001以后,进入中断完全没问题。后来也对照了ADC的配置和例子,基本上没问题,但是就是想不通是哪里配置出了问题???还有就是我想问下ADC12MEM有16个存储器,是不是不用配置就会使用默认,即每一个转换通道的转换结果都会默认存储在对应的存储器???还有一个,ADC12MCTLx这个寄存器的配置我会,但是不知道它跟转换通道相关的寄存器配置有什么关系?是每一个通道对应一个ADC12MCTL?但是每一个ADC12MCTL都有一个INCH可以选择模拟输入通道,能不能给我说说ADC12MCTL???还有就是配置AD转换的时候是不是只要配置了PxSEL=0x01(设置为模拟输入)就可以了?还要不要配置ADC12MCTL的INCH选择一下通道,这2个都可以设置AD的通道,有什么不一样?例子里面我看了一下,即使只配置PxSEL也可以进行转换,但是有时候也有配置INCH,那到底INCH什么情况下才需要配置???

麻烦帮我解决以上问题,在此谢过,感激不尽!!!

  • 问题比较多哈,不过总结起来还是你没看数据手册哦。

    1. 为什么 把ADC12IE = 0X0008更改成ADC12IE=0X0001后就能中断了呢?

       在你的代码中把ADC12MCTL0 设置成了ADC12INCH_12,即 ADC12的第12个通道采样的结果值会保存在ADC12MEM0寄存器中。而ADC12IE = 0X0008的意思是ADC12MEM3中有数据的时候触发中断,这咋可能实现得了呢?  所以要么你更改ADC12IE的值要么 更改ADC12MCTL3的值,否者是进不了中断的。

    2. MSP430的ADC12模块有ADC12MEM0-ADC12MEM15总共16个寄存器用来保存ADC采样结果,但不不是和ADC通道就一一对应的,每个MEM寄存器都可以独立配置成任意通道的结果,默认值全部是0

    3. 每个ADC12MCTLX对应的就是ADC12MEMX的ADC采样配置。而不是每个通道对应的配置。

    4. 设置管脚的adc功能要看具体MCU的数据手册,不同的芯片可能会不一样。

    总的来说,就是ADC的通道和ADC12MEMX是没有对应关系的,需要通过ADC12MCTLX去设置。你可以吧同一个通道设置到多个ADC12MEMX上,也可以把不同的ADC通道设置到不同的ADC12MEMX上。这样的设计大大地方面了用户,用户可以更灵活的按照自己需要去做设计。

    切记,不要现抄代码,那样既不利于你开发,也不利于你学习。例程代码是让你学习的,不是让你抄的,用到实际工程中会有很多问题。

  • 好的,谢谢你的热心回答,解答很详细,代码我拷过去也是为了看一下例子里面的程序,能否通过,如果可以,说明这样配置应该是没问题的,然后我会看着数据手册上的资料对寄存器根据需要进行配置。刚才你说的很对,谢谢你的提醒,学习方面还有待提高和加强