关于430g2553--ADC10的问题

2019-03-24 09:53发布

例1:用单通道重复采样模式对A1采样,将采样结果20次求平均,然后将结果存在变量ADC10_Result内。假设选择2分频后的ACLK做采样时钟,选择内部参考源           2.5V,ADC10SC触发采样,禁止ADC10中断,采样时间设置为64个采样时钟。
程序:
int ADC10_Result;
ADC10CTL1 |= CONSEQ_2; //单通道重复采样模式
ADC10CTL0 |= SREF_1+REFON+REF2_5V;//选择内部参考源2.5V,打开基准源
ADC10CTL0 |= ADC10SHT_3+MSC; //过采样率设置为64个采样周期,打开AD转换
ADC10CTL1|= ADC10SSEL_1+ADC10DIV_1+SHS_0; //ACLK2分频为采样时钟,用ADC10SC触发采集
ADC10CTL1 |=INCH_1; //选择通道A1
ADC10CTL0 |= ADC10ON; //开启ADC10
ADC10AE0 |= 0x02; //开启外部通道A1
for(int i=0;i<20;i++)
{
ADC10CTL0 |=ENC+ADC10SC; //开始转换
while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG标志变高(转换完成)
ADC10_Result+=ADC10MEM; //读取采样结果
}

ADC10_Result= ADC10_Result/20;
问题:
请问,在MSC=1的时候,ENC和ADC只要置过1,不就会自动取样转换了吗?为什么这个程序将其写在for循环内(每次都置1)?
而且自动取样转换,万一读取每次取样结果并处理取样结果的时间大于从这次转换完车到下一次转换完成的时间不就容易把下次的数据淹没吗?
求指教!万分感谢!

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
msp430_now
1楼-- · 2019-03-24 14:37
 精彩回答 2  元偷偷看……
doforfuture
2楼-- · 2019-03-24 18:27
< :TI_MSP430_内容页_SA7 -->
msp430_now 发表于 2015-7-14 03:19
ADC10CTL0 |=ENC+ADC10SC; //开始转换
上面这句话的意思是ADC转换开始,此时ADC的中断程序ISR被触发

wh ...

但是,由单通道重复采样的状态转移图看,当MSC=1,ENC=1的时候,并不需要手动再对ENC和ADC10SC置一了啊。采样转换是自动进行的啊。谢谢!
数码小叶
3楼-- · 2019-03-24 20:55
你有没有想过,你第二个问题就是第一个问题的答案啊
捕获111.PNG



捕获222.PNG
数码小叶
4楼-- · 2019-03-24 23:11
 精彩回答 2  元偷偷看……
doforfuture
5楼-- · 2019-03-25 04:50
数码小叶 发表于 2015-7-14 11:13
手册里还有一句话“The function of the ENC bit is unchanged when using the MSC bit.”

哦,谢谢啦,又看了一下datasheet,感觉明白好多了。所以,其实每次只要将ADC10SC置一就可以了,而ENC没必要每次都置一,是吗?
数码小叶
6楼-- · 2019-03-25 07:31
doforfuture 发表于 2015-7-14 13:16
哦,谢谢啦,又看了一下datasheet,感觉明白好多了。所以,其实每次只要将ADC10SC置一就可以了,而ENC没 ...

一周热门 更多>

相关问题

    相关文章