打印

ADC采样值不准

[复制链接]
8488|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gang8013|  楼主 | 2012-7-20 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC_TDR=0XFF; //关闭
ADC_CR2=0B1000; //右对齐;


ADC_CSR=0X03;
ADC_CR1=0X01;//启动;
while((ADC_CSR & 0x80) == 0); // 等待ADC结束
ADC_CSR&=0X7F; //清零第7位;
c=ADC_DRH*256+ADC_DRL;




上面STM8S是建的一个ADC单次采样的部分,CR1在这之前已经激活过,

我用一个电位器调压给一个AD口,当电位器调整后,不动。第一次采样的值,都不准 ,然后采样第二次才准。

我是调完之后,运行单步测试的,调整完电位器后,再去采样,时间都超过1S以上,所以采到的值应该是稳定的。

各位帮忙看看,是写的不对,还是有其它什么要注意的。
沙发
figo20042005| | 2012-7-20 12:57 | 只看该作者
是不是你采样频率很低,查询等待时间很长,一般都是NS-US级别的啊,不会有1S之久,你单独测AD,不加其他程序,看有没有问题

使用特权

评论回复
板凳
gang8013|  楼主 | 2012-7-20 13:08 | 只看该作者
试过,我用了一数组,循环了AD采样,从仿真的结果上看,只有连续采样两次,第二次的结果才是想要的

使用特权

评论回复
地板
gang8013|  楼主 | 2012-7-20 13:38 | 只看该作者
每次只要采样电压调整后,有时第一次采样的结果总,是不对的,我开始怀疑AD是不是在调整电压的时候,自己启动了,或者程序的写法有题,导致第一次结果不对。

使用特权

评论回复
5
IJK| | 2012-7-20 13:39 | 只看该作者
印象里用ST的芯片(STM32或者STM8)碰到过AD的问题,问题是对ADC进行初始化后,第1次采样/转换不对,随后的采样/转换都对了。

LZ看看是不是这个问题。

使用特权

评论回复
6
IJK| | 2012-7-20 13:48 | 只看该作者
LZ需要做的是,不要关闭ADC模块。

使用特权

评论回复
7
gang8013|  楼主 | 2012-7-20 14:24 | 只看该作者
这些我都注意到了,ADC启动后,就没有关闭,
我用的是单次采样模式,不知是不是用这个模式的试的!
网上有说,清标志位,顺序有关系。我放在读数据前或读数据后,以及启动AD采样前,都试过,还是有时数据不对。真是怪了!

使用特权

评论回复
8
IJK| | 2012-7-20 15:32 | 只看该作者
记得我没有清标志位,LZ不妨试试。
另外参考一下ST提供的例子。

使用特权

评论回复
9
figo20042005| | 2012-7-20 15:36 | 只看该作者
ADC_CSR =0x03;     //ad通道
      ADC_CR1 = 0x62;           //  设置AD转换时钟1/12,连续转换模式

     ADC_CR2 = 0x08;           // 设置数据为右对齐

     ADC_CR3 = 0x00;           // 不使用数据缓冲

     ADC_CR1 |= 0x01;          // 打开AD模块电源

     Delay(200);                     // 延时至少100uS,用于等待采样保持电容充电至稳定

     ADC_CR1 |= 0x01;          // 启动AD转换
    ADC_CSR &= 0x7F;
    while(!(ADC_CSR & 0x80));
    c=ADC_DRH*256+ADC_DRL;
  LZ试试这个程序

使用特权

评论回复
10
gang8013|  楼主 | 2012-7-20 17:59 | 只看该作者
初步测试,楼上的方法OK,看来还是标志位要放在,AD启动后清除!
非常感谢!

使用特权

评论回复
11
elec921| | 2012-7-20 19:45 | 只看该作者
主要是要等内部电容的电压稳定

使用特权

评论回复
12
figo20042005| | 2012-7-20 20:56 | 只看该作者
没什么问题了。那LZ结贴吧

使用特权

评论回复
13
zgzjcxsscwj| | 2012-7-21 09:41 | 只看该作者
同上

使用特权

评论回复
14
hbusxw| | 2012-7-21 09:58 | 只看该作者
都是牛人哪,学习了

使用特权

评论回复
15
icecut| | 2012-7-21 12:12 | 只看该作者
你采样完先切换到下一个通道,然后在处理当前通道.值.处理完之后在开始下一个循环

使用特权

评论回复
16
zsyf0918| | 2014-4-17 14:48 | 只看该作者
我 将采样频率降低后解决了不稳定

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

0

粉丝