TI中文支持网
TI专业的中文技术问题搜集分享网站

ads8317通过spi采集数据问

VDD位5.0v

-IN位接地

+IN为输入电压

Vref为2.5v,

我给+IN5.0v电压时候,读出来为32767,为7FFF

我给+IN2.5V电压,读出来为16474(数值有一些波动,不是很稳定)

+IN短接,读出来为151

下面是我spi_read的程序,我通过给到的芯片手册

static int ads8317_adc_conversion(struct ads8317 *adc, u32 channel)
{
	int ret;
	printk("into %s\n",__func__);
	printk("into %s,channel:%d\n",__func__,channel);
//	adc->buffer = 0;
//	printk(" adc->buffer:%x\n",adc->buffer);
	
	struct spi_transfer	t = {
			.rx_buf		= &adc->buffer,
			.len		= 3,
		};	
	struct spi_message	m; 
	spi_message_init(&m);
	spi_message_add_tail(&t, &m);
	ret = spi_sync(adc->spi, &m);
	if(ret)
		return ret;
		udelay(2);
	printk(" adc->buffer0:%x\n",adc->buffer[0]);
	printk(" adc->buffer1:%x\n",adc->buffer[1]);
	printk(" adc->buffer2:%x\n",adc->buffer[2]);
	
	return ((((adc->buffer[0] << 16) | (adc->buffer[1] << 8) | adc->buffer[2])>>2)&0xffff);
	
}
我想问两个问题
1我的位转换是否有问题?
2在ads8317芯片手册中的20页关于table1的表哥能否给出详细的解释,我不是很看的懂

Amy Luo:

您好,
ads8317满量程输入范围是+IN– (–IN)是-VREF~+VREF,即2*VREF,您的Vref为2.5v,就不能输入大于2.5V的信号,输入信号范围-Vref~+Vref对应数字信号8000~7FFF。

gengle lou:

回复 Amy Luo:

满量程不是5v吗

Amy Luo:

回复 gengle lou:

您好,满量程范围-VREF~VREF,您的Vref是2.5V,那么就是-2.5V到2.5V,总的是2*Vref=5V范围。

gengle lou:

回复 Amy Luo:

在电路图这边-IN脚接地了,所以我外部输入的电压的范围是否为0-5v?

Amy Luo:

回复 gengle lou:

抱歉,回复晚了。-IN脚接地属于单端输入,那就要考虑输入共模电压范围了,若-IN接地,输入0-5V,那么满量程输入范围根据上面表格+IN-(-IN)即0-5V,不满足-2.5V(VREF)~+2.5V(VREF)的部分将不能正常ADC转换。如果输入信号范围是0-5V,就要像上面表格设置工作条件,即需要将-IN接2.5V。

gengle lou:

回复 Amy Luo:

因为硬件-IN是接地的,不太好改变,使用如下表的模式吗,1fdclock=24xfsample,这个fsample是什么?2用单端输入模式code值和输出电压值的关系是否还能用20页的table1来对比。table1中2.5v得到的代码是7FFF,我实际5v得到7FFF。

Amy Luo:

回复 gengle lou:

您好,fsample是采样率。我想知道在您现在电路的情况下,输入信号2.5V到5V时,您转换的代码是对应的吗

gengle lou:

回复 Amy Luo:

2.5v到5v对应的code为3fff(16383)到7fff (32767) ,不知道对不对。

赞(0)
未经允许不得转载:TI中文支持网 » ads8317通过spi采集数据问
分享到: 更多 (0)