LTC2380-24驱动.txt
down别人的,别人要钱,这个免费,共交流。不知道有用没
double Ltc2380_AcqDat(void)
{
uint32 temp=0;
uint8 index=0;
uint16 acq_times = 1023;
double adc_val_temp=0.0;
/*设置LTC2380内部平均次数*/
while(acq_times)
{
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_SET);
delay_us(1);
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_RESET);
while(HAL_GPIO_ReadPin(GPIOB, LTC2380_BUSY));
delay_us(2);
acq_times--;
}
/*开始读取采集到的数据*/
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_SET);
delay_us(1);
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_RESET);
while(HAL_GPIO_ReadPin(GPIOB, LTC2380_BUSY));
delay_us(2);
HAL_GPIO_WritePin(GPIOD, LTC2380_SCK, GPIO_PIN_RESET);
for(index=0;index<24;index++)
{
temp=temp<<1;
if(HAL_GPIO_ReadPin(GPIOB, LTC2380_SDO))
{
temp=temp+1;
}
delay_us(1);
HAL_GPIO_WritePin(GPIOD, LTC2380_SCK, GPIO_PIN_SET);
delay_us(2);
HAL_GPIO_WritePin(GPIOD, LTC2380_SCK, GPIO_PIN_RESET);
delay_us(1);
}
HAL_GPIO_WritePin(GPIOD, LTC2380_SCK, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LTC2380_CNV, GPIO_PIN_RESET);
if(temp<=0x007fffff)
{
adc_val_temp=(((double)(temp))/8388607.0)*(-5.0)*2.5;
}
else if(temp>0x007fffff && temp<=0x00ffffff)
{
adc_val_temp=(((double)(0x00ffffff-temp))/8388607.0)*5.0*2.5;
}
return adc_val_temp;
}