/*--------------------------------------------------------
*@函数名 ADC7691_GET_DATA *
*@函数功能 CS模式(三线式且无繁忙指示) *
* 18位串行ADC *
--------------------------------------------------------*/
uint32_t ADC7691_GET_DATA()
{
uint8_t b=1;
uint32_t data=0;
uint8_t i=0;
ADC7691_CNV = 0; //启动转换 ,SDO自动高阻态
// ADC7691_SCK = 0;
Delay_us(1); //1us
ADC7691_CNV = 1;
Delay_us(10);//转换时间0.5-3.7 us,这里设置为10us
ADC7691_CNV = 0;//采集阶段
Delay_us(1);
for(i=0;i<18;i++)
{
ADC7691_SCK = 1; //高低电平最少持续12ns, 1/72M == 13.8ns,在执行 ADC7691_SCK = 0; 之肯定能保持高 12ns
Delay_us(1);
ADC7691_SCK = 0;
Delay_us(1);
b = GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_14);//ADC7691_SDO;//下降沿读取数据
Delay_us(1);
data = data + b;
data = data << 1;
}
data = data & 0x3ffff;
// ADC7691_CNV = 1;
return data;
}
|