由于自己做了一块板,以太网用了SPI3的,总是接入失败,
所以改用正点原子的标准程序《实验52 ENC28J60网络模块实验》、战舰板、以太网模块,改成SPI3也没办法接成功,
请能人的指点下为什么
硬件资源改变是:
原SPI2 ---> SPI3
RST   G6   D5
MISO   B14 PB4
SCK   B13 PB3
MOSI   B15 PB5
INT   D2 PB6
CS   G8   A15
软件的改动:
1.去除LED及初始化(DS0与PA15冲突)
2.宏定义的改动
// #define ENC28J60_CS PGout(8) //ENC28J60片选信号
// #define ENC28J60_RST   Gout(6) //ENC28J60复位信号
#define ENC28J60_CS PAout(15) //ENC28J60片选信号
#define ENC28J60_RST   Dout(5) //ENC28J60复位信号
(注,未找到INT的定义,应该程序未使用)
3.初始化的改动
(enc28j60c)
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOD->CRL&=0XFF0FFFFF;
GPIOD->CRL|=0X00300000; //PD5 推挽
GPIOD->ODR|=1<<5; //上拉
GPIOA->CRH&=0X0FFFFFFF;
GPIOA->CRH|=0X30000000; //PA15 推挽
GPIOA->ODR|=1<<15; //上拉
(spi.c)
//对SPI3口初始化
RCC->APB1ENR|=1<<3; //PORTB时钟使能
GPIOB->CRL&=0XFF000FFF;
GPIOB->CRL|=0X00BBB000; //PA3/4/5复用
GPIOB->ODR|=0X7<<3; //PA3/4/5上拉
//对CS信号线初始化
RCC->APB1ENR|=1<<2; //PORTA时钟使能
GPIOA->CRL&=0X0FFFFFFF;
GPIOA->CRH|=0X30000000; //PA15推挽
GPIOA->ODR|=1<<15; //PA15上拉
RCC->APB1ENR|=1<<15; //SPI3时钟使能
4.SPI的改动
找到SPI2全替换成SPI3
现象,初始化不成功,已经调了两天了,请指点,谢谢!
|