初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2014-11-19
- 在线时间
- 5 小时
|

楼主 |
发表于 2015-3-2 19:04:34
|
显示全部楼层
void ENC28J60_Reset(void)
{
//RCC->APB2ENR|=1<<2; //使能PORTA时钟
//GPIOA->CRL&=0XFFFF00FF;
//GPIOA->CRL|=0X00003300; //PA2/3 推挽
//GPIOA->CRH&=0XFFF00FFF;
//GPIOA->CRH|=0X00033000; //PA11/12 推挽
//GPIOA->ODR|=3<<2; //PA2/3 输出高
//GPIOA->ODR|=3<<11; //PA11/12 输出高
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_SPI1, ENABLE );//PORTB,D,G时钟使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;//PG6/7/8 推挽 上拉
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化//PG6/7/8
GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4);//PG6/7/8上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8;//PG6/7/8 推挽 上拉
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化//PG6/7/8
GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);//PG6/7/8上拉
SPI1_Init(); //初始化SPI1
//针对ENC28J60的特点(SCK空闲为低电平)修改SPI的设置
SPI1->CR1&=~(1<<6); //SPI设备失能
SPI1->CR1&=~(1<<1); //空闲模式下SCK为0 CPOL=0
SPI1->CR1&=~(1<<0); //数据采样从第1个时间边沿开始,CPHA=0
SPI1->CR1|=1<<6; //SPI设备使能
SPI1_SetSpeed(SPI_SPEED_8);//SPI1 SCK频率为72M/16=4.5Mhz
// Timerx_Init(1000,719); //100Khz计数频率,计数到1000为10ms
TIM6_Int_Init(1000,719);//100Khz计数频率,计数到1000为10ms
ENC28J60_RST=0; //复位ENC28J60
delay_ms(10);
ENC28J60_RST=1; //复位结束
delay_ms(10);
}
其他部分都没怎么动 |
|