STM8L AD多次转换的值在哪里?
本帖最后由 RAY-395197 于 2014-10-29 17:12 编辑CLK_PCKENR2 |= 0X01; //使能外设ADC的时钟,之后对ADC的寄存器操作有效
ADC1_SR = 0X00;
/////ADC1_TRIGR1=0x10;
ADC1_SQR1 = 0x80; //禁止DMA传输
ADC1_SQR4 = 0X04; //PA4为输入检测通道
ADC1_CR1 = 0X00; //开启AD模块电源,使用Sing mode
ADC1_CR3 = 0X00;
ADC1_CR2 = 0X04; //数据右队齐,LOW 8BIT AT ADC_DRL
ADC1_CR1 = 0X01; //启动转换
delay(7);
ADC1_CR1 |= 0X02;
delay(50);
while(!(ADC1_SR & (1<<0))); //等待转换结束,14个时钟周期
ADC1_SR = 0X00;
ADC1_CR1 = 0X00;
///////////////////////////
怎样多转换几次ADC
这个问题搞了很久了还没解决!请知道的人指教啊!注意是8L啊不是8S。不一样
用连续转换功能,楼主最好能说一下想要做到那种效果。这样才能提供好的建议。 是这样的,为了检测电压,需要连续检测电压三次取平均值
这样检测的准确一些,目前只检测一次,因为休眠所以不准确
请问结果从哪里读取,请列出代码
用中断设置连续转换,通过一个计数器来判断,当计数器的值大于3的时候,关闭中断,程序再将3次取到的AD值进行处理。
结果在中断读取AD转换值寄存器就可以了。 本帖最后由 RAY-395197 于 2014-10-29 17:25 编辑
感谢你的回复!
你这个方法是可以达到目的。但是产品是低功耗产品,必须要尽量省电.因此程序结构是在某个功能程序里查询AD,平时不用的。有没有其他方法?就告诉我怎么设置连续转换,和结果怎么读?
手册里14.3.5是这样写的
14.3.5 连续转换模式
在这个模式里 ,转换以后ADC并不停止而是继续下一个通道,在已选择通道串里。连续转换直到 CONT位和ADON位被设置并且转换值通过DMA被传送到RAM或者EEPROM记忆体缓存里。
因为EOC中断只有在被选的通道串转换结束以后才会产生,所以每个通道的转换结果并不能从ADC_DR 寄存器读取出来。
为了节约在一个记忆体(RAM或者EEPROM)里每个通道的转换,DMA必须使用从外设到记忆体模式。 如果CONT位在一个转换中途复位,现有的被选择的通道串转换行动就会以最后一个被选择的通道来结束,并且ADC就停止了。
注意: 在一个转换中途,CONT位禁止再次设置.
但是这里没有告诉值具体在什么地方,ADC configuration register 1 (ADC_CR1)这个寄存器只是连续转换的开关,不知道结果在哪里取
没有人研究STM8L么。。。自己顶 帮顶,没用过STM8的ADC 我也来帮挺
页:
[1]