【GD32E503评测】+ W5500网络模块移植
[复制链接]
现在搞物联网的趋势日益增长,我在项目中也经常接触到网络。因为GD32E503V这款MCU没有内置网络接口,所以我通过SPI接口扩展了W5500模块来实现网络通讯。
W5500 芯片是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,同时也是一颗工业级以太网控制芯片,是韩国WIZnet(微知纳特)发布全硬件TCP/IP协议栈以太网接口芯片。W5500 支持高速标准4线SPI接口与主机进行通信,该 SPI 速率理论上可以达到 80MHz。其内部还集成了以太网数据链路层(MAC)和10BaseT/100BaseTX 以太网物理层(PHY),支持自动协商(10/100-Based全双工/半双工)、掉电模式和网络唤醒功能。与传统软件协议栈不同,W5500内嵌的8个独立硬件 Socket 可以进行8路独立通信,该8路Socket的通信效率互不影响,可以通过 W5500 片上32K 字节的收/发缓存灵活定义各个Socket的大小。
本来计划通过开发板外引的IO口来扩展SPI接口,最后查看了半天的原理图,把相关SPI的IO口都一个个标注出来,才发现MCU自带的3个SPI都已经用掉了,一个是SPI Flash,一个是SDIO的SD卡,一个是复用成I2S的音频模块,想找第二公用功能以及remap都找不到能用的,无奈之下,只能焊掉SPI Falsh,也就是GD25Q16芯片,W5500的一直功能才得以实现。
W5500的驱动库,可以到github上去下载:
这是我新建的W5500的项目结构
硬件连接接口如下:
PA7—>W5500_MOSI
PA6—>W5500_MISO
PA5—>W5500_SCK
PE3—>W5500_CS
PE6—>W5500_RST
调试过程中我自己还发现了一个问题,因为此次调试的W5500是模块形式组成,所以用杜邦线来接到开发板,以前的项目W5500都是直接layout到板上。同样的程序,在STM32上跑得很欢快,但是在这块开发板为啥死活都出不来呢…… 经过不断的排查再排查,问题居然出在杜邦线上,可能我用的杜邦线质量比较差(顺便吐槽一下,某宝上的杜邦线压根找不到质量好的,如果坛友有推荐的,还麻烦介绍一下,谢谢哈),后来用了另外一种杜邦线,就可以了。本来信心满满地认为调试只要半天就可以了,后来在这个问题上至少浪费了我3天的时间……
主循环里,我做了个Socket Server的服务,端口12345,用网络调试工具连上去,就可以双向发送数据了。有兴趣的可以下载完整项目代码参考一下。
GD32E503V-EVAL-W5500.7z
(1.84 MB, 下载次数: 237)
|