LTC2496 16通道单端差分ADC采集数据

介绍

The LTC ® 2496 is a 16-channel (8-differential) 16-bit No
Latency ΔΣ™ ADC with Easy Drive™ technology. The pat-
ented sampling scheme eliminates dynamic input current
errors and the shortcomings of on-chip buffering through
automatic cancellation of differential input current. This
allows large external source impedances, and rail-to-rail
input signals to be directly digitized while maintaining
exceptional DC accuracy

更多手册和信息详见官网:
官网:http://www.linear.com/LTC2496

数据格式

实验采用16Bit 单端(Single-Ended Inputs)模式
通讯采用串行(SPI)

输出格式(SDO)

输出数据为24位,前4位是状态,20~4位为16bit的数据(大端),最后4位是0
LTC2496 16通道单端差分ADC采集数据_第1张图片

输入格式(SDI)

输入数据为8位
前3位为101
第4位SGL是选择单端(1)和差分(0)的模式
之后是ODD A2 A1 A0
LTC2496 16通道单端差分ADC采集数据_第2张图片

SCK与数据的时序

LTC2496 16通道单端差分ADC采集数据_第3张图片

连线

LTC2496 16通道单端差分ADC采集数据_第4张图片
与单片机连接CS片选 SCK SDI和SDO,CH0~CH15引出,其余电路按经验配置

单片机代码

内存定义

u8 ADC_code[5][16][3]; //5片2496   16个通道  每个通道24bit
u8 ADC_command;  //8bit

测量通道

void SPI_SendAll(u8 channel)
{
	int i ,nop;
	GPIO_WriteLow(SCK); // __
	//0-4
	ChannelSelect(channel); //ADC_command = 0xB0; // 1011 0000
	DELAY;
	
	GPIO_WriteLow(CS0);GPIO_WriteLow(CS1);
	GPIO_WriteLow(CS2);GPIO_WriteLow(CS3);
	GPIO_WriteLow(CS4);
	DELAY;
	
	for(i = 0; i < 8; ++i)
	{
		if(ADC_command&0x80) //1 0 1 1 0 0 0 0 0
			GPIO_WriteHigh(SDI);
		else
			GPIO_WriteLow(SDI);
		sDELAY;
		
		GPIO_WriteHigh(SCK); // ↑
		DELAY;
		GPIO_WriteLow(SCK); // ↓
		sDELAY;
		ADC_command<<=1;
	}
	//END 
}

读取数据

void SPI_ReadAll(u8 channel)
{
	int i,j,c,nop;
	//0-4
	for(c = 0; c < 5; ++c)
	{
			GPIO_WriteLow(CSx[c].Px,CSx[c].Pinx);
			DELAY;
			while(GPIO_ReadPin(SDO) != 0); //等待EOC变低电平
			DELAY;
			//读取24字节数据
			for(i = 0; i < 3; ++i)
			{
				for(j = 0; j <8 ;++j)
				{
					ADC_code[c][channel][i]<<=1;
					if(GPIO_ReadPin(SDO) != 0)
						ADC_code[c][channel][i] |= 0x01;
					else
						ADC_code[c][channel][i] &= 0xFE;
					
					sDELAY;
					GPIO_WriteHigh(SCK); //↑
					DELAY;
					GPIO_WriteLow(SCK); //↓
					sDELAY;
				}
			}
			DELAY;
			GPIO_WriteHigh(CSx[c].Px,CSx[c].Pinx);
			DELAY;
	}
	//end
}

你可能感兴趣的:(C语言,嵌入式,LTC2496,2496,ADC,单片机,单端)