例子里面默认的是使用ADC12 内部时钟源,即ADC12OSC,我在datasheet里面查看了一下,这里的ADC12OSC是使用USC来控制的,他跟一个叫做MODOSC的时钟源有关(MODOSC是什么,我搞不明白,能不能帮忙解释一下?)而MODOSC是来源于MODCLK的,但是在电路图上并没有看到MODCLK到底是从哪里来的,使用的应该不是从系统那里直接过来的,应该是分频得到的,现在就是ADC12的时钟找不到是多少???而且MODOSC的使用好像说是得需要MODOSC_REQEN的使能允许才能使用,但是在代码里面也并没有看到对MODOSC的配置,是不是默认就会配置为ADC12 的采样时钟???最后问下,ADC12可以采用四种时钟源,即内部时钟ADC12OSC,ACLK,MCLK,SMCLK,这四种时钟是怎么为ADC12提供时钟的,也就是这四种时钟分到ADC12 上的到底有多少???
Triton Zhang:
在MSP430的F5,F6系列MCU中,UCS(Unified Clock System)除了常用的振荡器之外,还包含一个内部振荡器MODOSC(Module Oscillator). 和其他振荡器比如DCOCLK,VLOCK,XT1CLK等不同的是,该振荡器不提供给CPU用,而是给一些外设模块使用,比如FLASH,ADC等,所以叫做Module Oscillator. 这个振荡器在用户使用这些外设时才通过用户软件开启,能够最大地节约功耗。振荡器的频率大概为500K。
MODOSC振荡器输出的时钟脚MODCLK. 这个时钟可以用在ADC12模块中,就是下图中的ADC12OSC. 下图红色标注部分很明显地标出了ADC12模块的时钟系统。ADC12模块可以由4个时钟提供,即MODCLK,ACLK,MCLK,SMCLK。
由于在不同的低功耗模式下,MSP430的CPU从不同的时钟源获得时钟,用户在使用时需要查看自己的低功耗模式对应的时钟源是否打开.
作为MSP430时钟系统的一个补充,MODOSC即MODCLK的存在为系统低功耗设计提供了一个模式,例如在LPM3低功耗模式下,用户的其他外设都只需要很低的CLK就可以了,而对ADC采样速率又有较大的要求,这时就可以用32K的振荡器作为ACLK的输入,在ADC采样时启动MODOSC,从而可以获得高于CPU频率的ADC时钟,实现较快的ADC采样。
至于这4个时钟最后提供给ADC采样的频率是多大,要取决于ADC12PDIV和ADC12DIVx的值,这几个寄存器位决定了ADC12的时钟由4个时钟源分频得到.