void ADC_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD, ENABLE);
/*!< Configure pins: SCK */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*!< Configure pins: MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*!< Configure CS_PIN pin: CS pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*!< Configure NOUSE_PIN pin: NOUSE pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*!< Configure SPI_ADC_SPI pins: RD/CONST */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*!< Configure pins: MISO SDOA SDOB*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Deselect the FLASH: Chip Select high */
CS_HIGH();
RDCO_LOW();
}
void ADC_SendData(u32 data)//??SPI??
{
u8 i;
CS_LOW();
SCK_L();
RDCO_LOW();
SCK_H();
RDCO_HIGH();
// NOUSE_L();
for(i=0;i<23;i++)
{
if(i>0)
{
if(data & 0x80000000) //ÅжϷ¢ËÍ×î¸ßλ
SDI_H(); //
else
SDI_L(); //
data <<= 1; //×óÒÆÅ×ÆúÒѾÊä³öµÄ×î¸ßλ
}
SCK_L();
if(i==0) RDCO_LOW();
if(i>0) NOUSE_L();
SCK_H();
}
}
u32 ADC_Read_ONE_Data()
{
u32 i;
u32 data=0,date=0;
CS_LOW();
SCK_L();
RDCO_LOW();
SCK_H();
RDCO_HIGH();
NOUSE_L();//???,?????
for(i=0;i<20;i++)
{
if(i>0)
{
SDI_L();
data=data|SDOA();
date=date|SDOB();
data=data<<1;
date=date<<1;
}
SCK_L();
if(i==0) RDCO_LOW();
if(i>0) {NOUSE();NOUSE_L(); }
SCK_H();
}
data=data>>4;
data=data&0x0ffff;
date=date>>4;
date=date&0x0ffff;
data=data<<16;
data=data|date;
return data;
}
void ADC_Read_ALL_Data(u32 number)
{
u16 i;
for(i=0;i<number;i++)
{
value=ADC_Read_ONE_Data();
valueA=value>>16;
valueB=value&0x0000ffff;
}
}
void ADC_Init()
{
CS_LOW(); //Ƭѡ
Delay( 200 );
ADC_SendData(0x10020000);//ADC1
ADC_SendData(0x03ff0000);
ADC_SendData(0x10050000);//ADC2
ADC_SendData(0x03ff0000);//
ADC_SendData(0x10200000);//
SCK_L();
Delay( 200 );
}
|