[mw_shl_code=c,true]void ENC28J60_Reset(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB ,ENABLE);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource12 , GPIO_AF_SPI1);// NSS
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13 , GPIO_AF_SPI1);//SCK
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14 , GPIO_AF_SPI1);//MI
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15 , GPIO_AF_SPI1);//MO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIOB->ODR|=0XFFFFE000;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIOB->ODR|=0XFFFF1000; //PA4 ?????? PB12
//????PA12??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIOB->ODR|=1<<11; //PA12 ?????? PB11
SPI1_Init(); //??????SPI1
//????ENC28J60??????(SCK????????????)????SPI???è??
SPI2->CR1&=~(1<<6); //SPI?è±??§??
SPI2->CR1&=~(1<<1); //??????????SCK??0 CPOL=0
SPI2->CR1&=~(1<<0); //???????ù????1???±??±???????,CPHA=0
SPI2->CR1|=1<<6; //SPI?è±?????
// SPI1_SetSpeed(SPI_SPEED_16);//SPI1 SCK??????72M/16=4.5Mhz
GPIO_ResetBits(GPIOB , GPIO_Pin_11); //????ENC28J60
delay_ms(10);
GPIO_SetBits(GPIOB, GPIO_Pin_11); //?????á??
delay_ms(10);
}[/mw_shl_code]
[mw_shl_code=c,true]oid SPI1_Init(void)
{
SPI_InitTypeDef SPI_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);
SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;;//?????¤????
SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b; //8bit????????
SPI_InitStruct.SPI_Mode = SPI_Mode_Master;//SPI?÷?ú
SPI_InitStruct.SPI_CPOL = SPI_CPOL_High ; //??????????SCK??1 CPOL=1
SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge; //???????ù?????????±??±???????,CPHA=1
SPI_InitStruct.SPI_NSS = SPI_NSS_Soft ;//?í??nss???í
SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;//Fsck=Fpclk2/16
SPI_InitStruct.SPI_CRCPolynomial = 7;
SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB; //MSBfirst
SPI_Init(SPI2, &SPI_InitStruct); //SPI?è±?????
SPI_Cmd(SPI2, ENABLE);
SPI1_ReadWriteByte(0xff);//????????
} [/mw_shl_code]
|