打印

stm8的AD连续模式

[复制链接]
7139|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
610095871|  楼主 | 2012-4-15 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做stm8的ad连续模式,手册上说ADC在连续模式下,完成一次转换后立刻开始下一次转换,我是这样做的,先初始化需要转换的ad模拟通道,设置成连续模式,之后使能ad,之后开启转换,然后判断eoc标志位,之后读取AD值,可是读出来的值并不是我设置的两个通道的值,求解,该怎么整?
沙发
610095871|  楼主 | 2012-4-15 22:25 | 只看该作者
扫描模式如果没有启用,则启动一次AD转换只会转换第一个通道,如果是单次模式,则转换完成后不动作,如果是连续模式,则转换完成后继续转换


扫描模式如果启用,则启动AD转换会转换所有设定的通道,如果是单次模式,则所有通道转换完成后不动作,如果是连续模式,则所有通道转换完成后继续从第一个通道开始转换

使用特权

评论回复
板凳
610095871|  楼主 | 2012-4-15 22:26 | 只看该作者
哦了

使用特权

评论回复
地板
seeker2010| | 2013-3-8 17:50 | 只看该作者
请问如果是连续模式(不是扫描),启动一个通道的AD转换后,开始连续不断的转换当前的通道,此时转换通道后,还要开启一次AD转换命令吗(就是置一次ADON位吗)

使用特权

评论回复
5
奔牛滚滚| | 2013-3-9 00:20 | 只看该作者
seeker2010 发表于 2013-3-8 17:50
请问如果是连续模式(不是扫描),启动一个通道的AD转换后,开始连续不断的转换当前的通道,此时转换通道后 ...

不用

使用特权

评论回复
6
seeker2010| | 2013-3-10 22:18 | 只看该作者
继续追问,;P,如果是连续转换模式(不是扫描),且开启了缓存,当置ADON位一次启动AD踩样,会踩样到10个AD值,然后继续转换,但改变输入通道是不确定,有可能通道1转换到到一半而改变通道到2,这时缓存中的数是不是包括了通道1和通道2的,还是说当由通道1转为通道2的同时,转换值从缓存0开始存放,(顺便问一下,如果是左对齐方式,10个缓存寄存器可不可以用指针方式读出),谢谢

使用特权

评论回复
7
seeker2010| | 2013-3-18 21:41 | 只看该作者
没人回答,自已顶一个

使用特权

评论回复
8
andytenglong| | 2015-3-29 23:32 | 只看该作者
本帖最后由 andytenglong 于 2015-3-29 23:34 编辑

敢问 你的AD程序可以用吗?我的寄存器都是按照手册上设置的   为什么读不到ADC_DRH的值啊
uint GetADResult(void)
{
      uint    result = 0;
      uchar      i = 0;

      ADC_CSR = 0x04;           // 选择AD转换通道pin20  AIN4
      ADC_CR1 = 0x62;           //  设置AD转换时钟1/12,连续转换模式
      ADC_CR2 = 0x08;           // 设置数据为右对齐
      ADC_CR3 = 0x00;           // 不使用数据缓冲
      ADC_CR1 |= 0x01;          // 打开AD模块电源
      delay(200);                     // 延时至少100uS,用于等待采样保持电容充电至稳定
      ADC_CR1 |= 0x01;          // 启动AD转换

          while((ADC_CSR & 0x80)!=0x80);    // 等待AD转换完成
      
        result= ADC_DRH;
        ADC_CSR &= 0x7F;

        return result ;
                }
这个只是测试程序 没有读ADC_DRL的值



使用特权

评论回复
9
dipingzhu| | 2015-7-24 13:52 | 只看该作者
求代码

使用特权

评论回复
10
643757107| | 2015-7-24 15:12 | 只看该作者
谁知道连续模式是怎么回事啊

使用特权

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

本版积分规则

27

主题

323

帖子

10

粉丝