while (1)
{
if(HAL_GPIO_ReadPin(W5300_LINK_GPIO_Port, L_LINK)==1) // LINK——LED 为高电平
{
for(i=0;i<8;i++)
{
close(i);
}
}
else
{
W5300_UDP_Loopback(0,1000,Dip,1000, S_Buffer); //socket号,本机端口,目的IP,目的端口,收发缓存
}
}
一、硬件配置
1.1 stm32与W5300的硬件连接
我选择的是16位数据宽度,因此这个地方地址线需要串一位进行连接,板子的A9不需要连,W5300的A0位也不需要连接。
下面是W5300的排针引脚:需要注意的是J1和J2不要画反了
二、软件配置
软件的话我是用的是STM32CubeMX+keil5.32配置的。由于stm32外接w5300需要用到32的FSMC总线,这个总线可以用来外扩SRAM/FLASH/LCD的,这个地方W5300是可以当成SRAM来配置的。
1、以下是cubemx的配置过程:
1、首先得选择好自己的芯片型号
2、配置ICACHE
选择1-way就好了
3、配置RCC
高速时钟选择晶振
4、配置sys
开启系统基准时钟
5、配置FSMC总线
STM32的FSMC有一个存储区间,我们要用的是BANK1,BANK3一般用来外扩NAND FLASH,
然后BANK1里面又分了四个小区间每块64M,说明用户自己的话可以外扩4块SRAM类似的内存。
在这里我们选择BANK1里面的第三块,也就是NE3,这个可以随意选择,我第一块用来外扩SRAM了,这个后面再说。
chip select 选择 NE3
memory type 选择SRAM
address 选择10位的地址长度
data选择16位数据长度
然后不用勾选byte enable,不用高低位字节操作
使能write oporation 因为开了这个才能写数据
使能writefifo可以进行快速读写
下面两个图来自于W5300的数据手册,描述了地址建立时间和数据建立时间还有保持时间,一般就用到Address setup time、Address hold time、data setup time以及data hold time,我看到很多文章没有说明这个怎么来的,这个地方是根据你的系统时钟计算出来的,我在cubemx里面配置了160M的时钟频率。
下图中Address setup time最大需要7ns,那就直接用7ns来计算我们需要配置的数
7ns/(1/160M)=1.12,因此cubemx里