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