RT -Thread Studio V2.0.0
芯片
STM32F407VGT6
网络芯片W5500
硬件连接
第一步,打开SPI设备驱动框架
双击RT -Thread Set
tings
然后在打开devices文件下的board.h文件,打开#define BSP_USING_SPI2的定义,我这里使用的是SPI2
然后在stm32f4xx_hal_conf.h文件中打开对 SPI 的支持,也就是取消掉 HAL_SPI_MODULE_ENABLED 这个宏定义的注释
然后需要初始化SPI的引脚和时钟
定义了 BSP_USING_SPI3 宏之后,drv_spi.c 文件就会参与编译,该文件只是配置了 SPI 的工作方式和传输函数,具体 SPI 外设的时钟和引脚的初始化需要借助 STM32CubeMx 生成的代码
所以需要将 CubeMx 生成的 SPI2 的初始化代码复制到自己工程的 board.c 文件的末尾,使之参与编译
W5500芯片所需要的的SPI配置如下
其实需要用到的只是GPIO引脚的初始化,SPI的模式配置并没有用到。
将CubeMx 生成的 void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)函数复制到board.c文件中
然后先编译一下,没有报错,然后打开RT -Thread Settings继续添加W5500的设备驱动
打开RT -Thread Settings,在wiznet图标上右键选择详细配置,修改SPI device name Reset PIN number IRQ PIN number,根据自己实际硬件连接配置
我这里使用的是SPI2,Reset脚连接到
单片机的PD10,IRQ脚连接到单片机的PB12
具体的引脚编号可以在drv_gpio.c文件中查看,PB12就是28,PD10就是58
然后更RT -Thread Settings改里的配置
然后编译一下,在packages文件夹下会有wiznet-latest文件夹,然后打开src下的wiz.c文件
在wiz.c文件的最后面找到int wiz_init(void)函数
在wiz_init函数里添加rt_hw_spi_device_attach("spi2", WIZ_SPI_DEVICE, GPIOD, GPIO_PIN_11);
PD11是连接到W5500的CS引脚
发现有报错,添加#include "drv_spi.h"即可
编译无错后下载程序
发现W5500初始化已经成功了
用ifconfig命令可以查看当前获取到的IP地址
也可以使用ping命令测试网络情况
W5500驱动移植成功,使用RT -Thread Studio开发环境还是非常简单的。
原作者:love潇潇熊