OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8712|回复: 13

AD7606的采集的电压不对,和真实输入有很大误差

[复制链接]

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-10-10
在线时间
15 小时
发表于 2021-7-10 21:30:02 | 显示全部楼层 |阅读模式
2金钱
为什么我的AD7606读回来的电压这么奇怪,5V量程的,V[0]接的是3.3V,但读回来只有2V,其他输入悬空全是1V,而且如果我接地的话读回来是9V。
故障.png

最佳答案

查看完整内容[请看2#楼]

已解决,是采样速率的原因,把过采样率调大就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-10-10
在线时间
15 小时
 楼主| 发表于 2021-7-10 21:30:03 | 显示全部楼层
已解决,是采样速率的原因,把过采样率调大就好了
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-10-10
在线时间
15 小时
 楼主| 发表于 2021-7-12 16:13:42 | 显示全部楼层

已解决,是采样速率的原因,把过采样率调大就好了
回复

使用道具 举报

6

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2020-7-11
在线时间
23 小时
发表于 2021-7-13 15:06:24 | 显示全部楼层
能问下楼主用的是什么模式吗,SPI,还是并行,我这边移植了个程序到407上,采样数据一直是0V
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-10-10
在线时间
15 小时
 楼主| 发表于 2021-7-13 23:00:06 | 显示全部楼层
wangyang123 发表于 2021-7-13 15:06
能问下楼主用的是什么模式吗,SPI,还是并行,我这边移植了个程序到407上,采样数据一直是0V

我用的是串行,给的例程里面是用定时器定时方法采样的,我用他的方法也是0V,后来换了查询BUSY位就好了
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-7-7
在线时间
3 小时
发表于 2021-7-17 12:33:15 | 显示全部楼层
请问大佬能分享一下代码吗,我最近一直在搞这个一直失败 2489655349@qq.com
回复

使用道具 举报

6

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2020-7-11
在线时间
23 小时
发表于 2021-7-23 09:45:43 | 显示全部楼层
wu5538372 发表于 2021-7-13 23:00
我用的是串行,给的例程里面是用定时器定时方法采样的,我用他的方法也是0V,后来换了查询BUSY位就好了

能参考一下楼主的BUSY中断代码吗,我这边用转换后读取,软件,硬件SPi都试过了,都是0,好难,调试大半个月了,毫无进展,2267077640@qq.com
回复

使用道具 举报

21

主题

86

帖子

0

精华

高级会员

Rank: 4

积分
639
金钱
639
注册时间
2017-3-6
在线时间
64 小时
发表于 2021-7-23 22:51:50 | 显示全部楼层
这两天也在调试AD7606,也是用串行但是出来的数据也全部是0,还没查到原因,楼主可以分享一下源码?或者指导一下可以?非常感谢,我参考的安富莱的例程
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-5-20
在线时间
2 小时
发表于 2021-7-27 21:10:33 | 显示全部楼层
请问楼主有没有正点原子的32f1或f4使用AD7606模块spi的代码吗?能发我下吗?非常感谢qq邮箱2721640167@qq.com
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-5-20
在线时间
2 小时
发表于 2021-7-27 21:11:15 | 显示全部楼层
请问楼主有没有正点原子的32f1或f4使用AD7606模块spi的代码吗?能发我下吗?非常感谢qq邮箱2721640167@qq.com
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-5-20
在线时间
2 小时
发表于 2021-7-27 21:12:21 | 显示全部楼层
wu5538372 发表于 2021-7-13 23:00
我用的是串行,给的例程里面是用定时器定时方法采样的,我用他的方法也是0V,后来换了查询BUSY位就好了

你好,请问能分享下代码吗?非常感谢qq邮箱:2721640167@qq.com
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-10-10
在线时间
15 小时
 楼主| 发表于 2021-7-29 23:56:26 | 显示全部楼层
wangyang123 发表于 2021-7-23 09:45
能参考一下楼主的BUSY中断代码吗,我这边用转换后读取,软件,硬件SPi都试过了,都是0,好难,调试大半个 ...

void AD7606_StartConv(void)
{
        /* 上升沿开始转换,低电平持续时间至少25ns  */
        AD_CONVST_LOW();
       
        delay_us(1);
       
        AD_CONVST_HIGH();
}
/*返回16位AD采样数据*/
uint16_t AD7606_ReceiveData(void)          
{          
        uint8_t count=0;           
        uint16_t data=0;
        AD_SCK_HIGH();       
        for(count=0;count<16;count++)//读出16位数据
        {
                data<<=1;
                AD_SCK_LOW();        //下降沿有效
                if(AD_MISO_IN()== 1)
                        data++;
                AD_SCK_HIGH();
        }
        return(data);
}
void AD7606_IRQSrc(void)
{
        uint8_t i;
        uint16_t usReadValue;

        while(BUSY_STATE() == NOT_BUSY)
        {
        }
        AD_CS_LOW();
        for (i = 0; i < CH_NUM; i++)
        {
                usReadValue = AD7606_ReceiveData();
                if (g_tAD.usWrite < FIFO_SIZE)
                {
                        g_tAD.usBuf[g_tAD.usWrite] = usReadValue;
                        ++g_tAD.usWrite;
                }
        }               
        AD_CS_HIGH();
        AD7606_StartConv();//立即开始下一次转换
}
#define BUSY        0
#define NOT_BUSY    1
#define BUSY_STATE()            GPIO_ReadInputDataBit(AD_BUSY_GPIO_PORT,AD_BUSY_PIN)
#define FIFO_SIZE                1*1024*2                /* 大小不要超过48K (CPU内部RAM 只有64K) */
/* AD数据采集缓冲区 */
typedef struct
{
        uint16_t usRead;
        uint16_t usWrite;
        uint16_t usCount;
        uint16_t usBuf[FIFO_SIZE];
}FIFO_T;

这就是查询BUSY引脚后读取电压的函数,把电压读到usBuf[FIFO_SIZE]这个数组里,转换完之后把g_tAD.usWrite清0就行。我也是依照例程改的,其他写时序的代码应该都差不多的。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-8-9
在线时间
3 小时
发表于 2021-8-9 16:35:34 | 显示全部楼层
楼主最后的代码是BUSY中断,没用定时器吗
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-5-20
在线时间
6 小时
发表于 2021-10-16 20:22:19 | 显示全部楼层
可以参考下你的代码吗、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 22:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表