注 :未经允许请勿转载,请尊重劳动成果,大家都是知识分子!谢谢!
一开始是用原子的STM32F103的战舰开发版,不过在CUBE配置的时候LWIP的配置死活找不到,只有移植原子的例程这一条路,果断换个板子。
硬件:STM32F429IGTx;
软件:STM32CUBEMX,KEIL5
首先先配置LWIP,ETH,RTOS,IIC以及RCC,之所以配置IIC,是因为F429的开发版的芯片结构的问题,是由MCU的IIC总线发出 电平信号给PCF8574这个IO拓展芯片,然后再使能LAN8720。
先看ETH的配置:
注:之前在网上找到的都是关于这个PHY地址的解答,都是要置0,但是其实是有问题的,我的PHY芯片是LAN8270T,在原子的阿波罗开发板上,这个地址是需要置1的。
在设置完PHY芯片之后,就是参数的设置
由于CUBE默认生成的是LAN8722A,但是实际上是8720,所以在这里改过来,至于下面的参数,就需要参考相关手册啦,是不是这样子呢?可以试一下喔。
在这里是选择RMII,选这个的原因参考开发版电路原理图,然后后面的PHY Address这里是浮空的,所以设0。
RTOS我在任务列表里面加了2个任务备用,其他就是常规操作啦,这里就跳过啦
然后是IIC的配置,这里选择的是I2C2,因为这个是GPIOH的PH4和PH5是两根数据线和时钟线
由于是需要使能ETH_RESET引脚,所以需要另外选择IIC_INT引脚,在CUBE里面,PB12这个引脚没有办法直接选择IIC,而是选择IIC_SMBA,这个总线可以说是IIC的子集,具有相同的使用方法