|
一起来学MSP430F6638-基础篇之ADC12(6)
[复制链接]
本帖最后由 jqh_111 于 2014-1-11 23:37 编辑
基础篇之模数转换ADC12 接上一帖,一起来学MSP430F6638-基础篇之TIMERB(5)。我有两周的时间没有更新了吧,前段时间我感冒发烧身体非常不适所以啥也没做。还有就是年末了,大家都很忙,都赶着回家过年呢。我这两天一直奔波于学校的财务处,到时办公室,事情不多就是费时间。我找财务处报销科研费用,排了两天的队都没办成,看来下次得早上七点过去了。。言归正传,关于这类帖子的更新,我可能会越来越慢了。再过几天我就要坐近20个小时的火车回家了,家里没网络,不能及时更新帖子了。而且,回到家以后,我的帮母亲大人做家务,总之很多事的。不过我还是会找时间好好弄,逛逛论坛。回到主题,模数转换这个模块在很多单片机上都有,对获取外部信号的变化量起着非常重要的作用。对了,值得大家注意的是:ADC12是目前第一个能用MCLK信号的外设。MCLK一般是提供给系统用的时钟信号。
下面是模数转换的编程调试过程,以及遇到的问题是怎么解决的。在调试过程中给我遇到的第一个问题是:采样没得到我预期的结果,转换忙标志位ADC12BUSY一直置位着,存储单元里ADC12MEMX的值也没变化。我反复调试,查看用户指导书都不知道是怎么回事。。
弄了两个小时,最后终于发现问题了。有个寄存器没置位,ADC12CTL1的ADC12SHP位。来看看这位到底有什么作用,而我却这么容易把它忽视了。
从图中我们得知开始采样时,SAMPCON必须同时置高电平。当它置位时,SAMPCON的信号来自采样时钟信号;为零时,信号来自采样输入信号。在这篇帖子里,我使用的是单通道单次转换,每次采样转换都需要置位一次ADC12SC。在这个模式下,必须得配置几个寄存器,ADC12才能正常工作,其他没配置的寄存器都为默认值。这几个寄存器是:
1、P6SEL,通过设置它使引脚启用ADC12外设功能。
2、ADC12ON,打开ADC12功能。
3、ADC12SSEL1,选择一个可用的时钟信号驱动ADC12。
4、ADC12SHP,作为AD转换的脉冲信号。
5、ADC12INCHx,选择采样通道,作为被采样信号和内部采样的桥梁,它必不可少。
6、ADC12SC和ADC12ENC,每开始采样转换时都得由它两触发。
设置好这6个部分,ADC12就可以正常工作了。下面是程序的截图,
ADC12就到这了,祝大家新年快乐!{:soso__777611008342407710_4:}
同时上传IAR工程文件,建议自己敲写这些代码,如果不想敲写請付一个芯币。
|
|