uint16_t ADC_SPI_GetData(void)
{
uint16_t i;
uint16_t j = 16;
uint16_t ADC_Rev_Data = 0x0000;
/* 使能ADC CONV 上升沿触发AD采样开始 */
Clr_ADC_SPI_CONV;
/* 延时 */
for(i=0;i<10;i++);
Set_ADC_SPI_CONV;
/* 延时 10us 等待采样完成*/
for(i=0;i<1000;i++);
/* CONV下降沿,开始读取数据*/
Clr_ADC_SPI_CONV;
/*接收16bitADC数据,高位在前 */
do
{
ADC_Rev_Data <<= 1;
Set_ADC_SPI_CLK; // SCK=1;
for(i=0;i<40;i++); // delay;
Clr_ADC_SPI_CLK; // SCK=0;
for(i=0;i<40;i++); // delay;
if(GPIO_ReadInputDataBit(ADC_SPI_Port,DAC_SPI_DOUT_Pin)) // 读取SPI_DOUT电平
ADC_Rev_Data++;
--j;
} while(j);
/* 读取完成 取消使能ADC CONV */
Set_ADC_SPI_CONV;
return ADC_Rev_Data;
}
上面的驱动采集的数据有问题,数据不对
在datasheet中,在CONV信号置高后,SCK还有波形,这一块没加,是要加16个SCK吗? |