AD7689驱动

AD7689驱动

最近在做一个项目用到了AD7689采样芯片,AD7689是一个16bit、250K、SPI通信最多支持8通道采集的AD芯片,说起这个芯片真的坑,刚开始的时候采用按通道0到通道7的顺序采集方式,发现读到的AD值就是不对,一直在跳变,刚开始一直怀疑是自己写的驱动程序不对,然后按着芯片手册重新对照了自己的驱动,发现驱动没有问题,然后自己仔细看了下这个AD芯片的内部结构后豁然开朗,原来这个芯片内部硬件采用的是模拟开关控制采集通道,并且在模拟开关后面添加了一个滤波器,导致采样太快在切换通道的时候压差越大滤波器滤波时间越长,导致读下一个通道的采集电压值的时候可能是上一个通道还没有滤波完的数据,最后处理方式是降频采集方式,等此次通道采样值稳定后再切换到下一个通道进行采样。最后获取的采样值才是正确有效的。前期吃过的亏都是为后期开发避免走弯路的铺垫。

1.AD7689采样芯片内部功能框图
在这里插入图片描述
2.寄存器配置表
在这里插入图片描述
3.AD7689驱动程序

这是我个人写的AD7689的驱动,经测试有效。
#define AD7689_RB		1       //不回读CFG寄存器配置内容
#define AD7689_SEQ		0       //禁止序列器
#define AD7689_REF		1       //内部基准电压源REF = 4.096V
#define AD7689_BW		1 	    //全带宽低通滤波器
#define AD7689_INCC		7       //单级性,以GND为参考
#define AD7689_CFG      1       //覆盖寄存器内容

uint16_t SPI_AD7689_Read( uint8_t AD7689_INx)
{
	uint8_t i = 0;
	uint16_t AD7689_Config=0;
	uint16_t AD7689_Data;
	AD7689_Config = (AD7689_CFG<<13)|(AD7689_INCC<<10)|(AD7689_INx<<7)|(AD7689_BW<<6)|(AD7689_REF<<3)|(AD7689_SEQ<<1)|AD7689_RB;
	AD7689_Config <<=2;       //根据芯片手册左移2位末位补0
	
	AD7689_CNV_SET_H();   //CNV = 1;
	delay_us(6);
	AD7689_CNV_SET_L();   //CNV = 0;
	delay_us(6);
	AD7689_CNV_SET_H();   //CNV = 1;
	delay_us(6);
	AD7689_CNV_SET_L();   //CNV = 0;
	delay_us(1);
	for(i=0;i<16;i++)
	{
		if(AD7689_Config&0x8000)
		{
			AD7689_DIN_SET_H();	      //DIN = 1;	
		}
		else
		{
			AD7689_DIN_SET_L();       //DIN = 0;
		}
		delay_50ns(1);
		AD7689_CLK_SET_L();          //CLK = 0;
		delay_50ns(1);
		AD7689_Config <<= 1; 
		AD7689_CLK_SET_H();        //CLK = 1;
		delay_50ns(1);
		AD7689_Data <<=1;
		if(Read_AD7689_SDO_Value)
		{
			AD7689_Data |=1;
		}
	}
	delay_us(2);
	AD7689_CLK_SET_L(); 
	delay_us(2); 
	AD7689_CNV_SET_H();
	return (AD7689_Data&0xFFFF);
}

希望这次开发经验分享对后期使用AD7689采集芯片的IT发烧友们有一定的帮助,谢谢!

  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值