上一节我们学习了使用ENC28J60芯片来实现简单的以太网通信,使用的是一个极其简陋的网络协议栈,这个协议栈的功能是很不完善的,只能用作演示验证。
想要用到产品上,要使用相对成熟的协议栈。本节我们就以uIP以太网协议栈为例,来学习如何移植它到ENC28J60的平台上。
UIP是一种适用于小型嵌入式通信的TCP/IP协议栈,由瑞典计算机科学院的人开发编写的,它去掉了完整的TCP/IP中不常用的功能,简化了通讯过程,但其保留了网络通信中必须使用的协议,把设计重点放在IP、TCP和ARP协议的实现上。简单易用、占用资源少是它的设计特点,虽然简化过后必然有一些不完善的地方,但是用在某些简单的网络环境中还是很实用的。
本节的例子使用的开发环境是cubemx 6.1.0,pack版本是1.8.0;硬件使用的是stm32f103VET6和ENC28J60;软件方面,uIP协议栈使用的是1.0版。
1)cubemx工程配置
与上一节的配置内容是完全一样的,先看一下硬件连接图:
ENC28J60这个芯片可实现10M的以太网通信,与MCU是使用SPI接口,接在SPI1口上,使用软件控制CS线,另外还连接了RST复位引脚、INT中断引脚。
配置SPI接口时,如下图:
选择全双工,配置为速率为不大于20M(因为ENC28J60的SPI接口时钟最大20M)