STM32--W5500 从入门解读
博主痛苦的调试过程的开始之初,想要首先在网络上大致简单了解一下w5500 与 stm32 的调试,我发现,并没有很多特别有用的资料,因此,此时不得不自己去了解,因此,下面就将记录一下博主的主要的一个学习的过程吧。
一、w5500数据手册解读
1、基本介绍
不管别的,大家想要了解w5500 就肯定知道跟网络有关,简单来说就是处在stm32 与 网络通讯之间的一个模块,那么具体来讲见下图:
上图可以很简单的看出:
stm32 —spi——-w5500—-以太网
2、主机接口
上图: 采用MCU 主控制器与SLAVE相联,两种方式,第一种是可变数据长度,第二种是不可变数据长度
下面具体讲一下 SPI与 主机通讯所要了解的一些资料
w5500的帧分为三段:地址段,控制段,数据段
上面讲的两种工作模式:
数据长度可变:我们就可以通过SCSn来控制字节的大小,即当我们自动控制SCSn的高低电平,低电平开始,高电平帧额传输结束
数据长度固定:1 2 4 字节
SPI数据帧
SPI数据帧包括了16位的偏移地址,8位控制断,N字节段,下图为表示的格式:
随后芯片手册就在将关于这些偏移地址,控制段,数据段,相关内容,只要参考数据手册即可,上面写的也是算是清晰。
下面举一个示例,来自芯片手册:
3、通过寄存器
通用寄存器区配置了 W5500 的基本信息,例如:IP 及 MAC 地址。该区域可以通过 SPI 数据帧的区域选择位(BSB[4:0])的值选定,下面就是对应的寄存器的描述,对寄存器的进行配置,就可以实现我们最后的IP MAC等等的设定了
综上就是对我们的W5500的总体的一个描述了,我们下一步就是需要上升到软件层面了。
二、软件层面
对于软件部分我们采用的就是网上给出来的示例的程序,随后我将会上传到我的github上,大家可以进行访问,此外提一下我才用的stm32f103rc的开发板
不管别的废话,我们就直接进行软件层面的程序解读~
System_Initialization(); //STM32系统的初始化过程
Load_Net_Parameters(); //装在w5500的网络的相关的参数
W5500_Hardware_Reset(); //进行硬件复位W5500
W5500_Initialization(); //W5500初始化配置
经过上面的步骤配置,基本上,我们就可以实现了对于网络的应用了。下面就贴上作者的一个简单的使用
if(W5500_Interrupt)//´¦ÀíW5500ÖжÏ
{
W5500_Interrupt_Process();//W5500是否接收到中断了
}
if((S0_Data & S_RECEIVE) == S_RECEIVE)//端口零是否接收到了数据
{
S0_Data&=~S_RECEIVE;
Process_Socket_Data(0);//W5500对这个0端口的数据进行处理
}
三、作者实现的效果
通过w5500传送一个数据,然后我通过了stm32 中的printf 的重定向实现了通过串口通讯发送给了网络。
https://github.com/Scottars/Gas-Detect
这个是作者github地址欢迎访问交流下载! 需要说明的是,本人的内容是纯属学生的工作的内容,内容简单,以实现目标为目的,大家有什么问题 相互交流~