原创 W5500EVB TCP Client模式设置说明

2014-10-21 10:07 2125 19 19 分类: 通信 文集: TCP/IP芯片

W5500EVB是WIZnet为了方便用户更好了解、使用W5500这款网络芯片所开发的评估板,该板采用了STM32F103RCT6+W5500 的设计,基于 ARM 的 Cortex-M3 平台。那么在实现网络通信的过程中,TCP通信模式为最常用,本教程就先为您介绍一下TCP Client模式是怎样成功实现的

一、程序烧录

1. 程序修改

打开IAR Embedded Workbench软件快捷方式,打开TCP Client\app.eww文件。然后在main.c函数中修改如下图1所示的两个IP地址,并且确保调试PC的IP地址与修改内容在同一个网段内,否则无法建立连接。其中绿色框内主要设置PC的IP地址,红色框内主要设置W5500-EVB的IP地址。 w5500_TCP_mode1

图 1 编译界面

修改正确以后,点击project\make 或者按F7快捷键重新编译文件。

2. 设置烧录工具

Flash loader Demonstrator 用于为W5500-EVB烧录程序,安装软件会出现如图2所示窗口。当mini-USB连接到PC的USB设备时,设备管理器会正确安装USB转串口驱动,Port Name 口会自动识别到对应的COM口。

3. 程序下载

   如图3所示,红色框中,SW7是BOOT0按键,SW6是RESET按键。按下按键SW7不松开,同时点击SW6重启EVB板后,松开SW7,进入程序下载模式。在Flash loader Demonstrator中点击下一步,进入如图4所示界面;继续点击下一步出

W5500_TCP_mode2

图 2 烧录工具界面

W5500_TCP_mode3

图3  W5500-EVB实物图

现如图5所示界面。

W5500_TCP_mode4

 图 4                              图5

再次点击下一步进入目标文件烧录界面,如图6所示。

W5500_TCP_mode6

图6  目标文件烧录界面

蓝色框内选择TCP Client\Debug\Exe\app.bin文件,红色框内选择Global Eras完全擦除,设置完成后点击下一步开始下载,如图7所示。

W5500_TCP_mode7

图7 程序下载过程界面

二、测试链接

1. 设置PC为静态IP

   打开网络连接,点击本地连接选择属性,出现如图8所示设置界面,设置完成后点击确定。

W5500_TCP_mode8

图8 PC静态IP设置

2. 通过hercules连接测试

用网线把PC和W5500EVB连接,打开hercules软件,选择正确的COM口打开串口,按一下SW6复位按键,会显示W5500EVB设置好的信息如图9所示。

 W5500_TCP_mode9

图 9 hercules开启界面

然后点击TCP Server,在Port口输入6001(6001在主程序),点击Listen,就可以进行数据传输测试,测试效果如图10所示。在蓝色框中随意输入数字或者字符,点击send,就会看到红色框内有数据接收到。说明连接成功。

W5500_TCP_mode10

图 10 数据收发测试

程序大致流程如下:

1. 初始化,包括系统时钟、中断、串口、GPIO端口、Systick时、eeprom等

2. 重启W5500

3. 系统设置,包括IP地址、网关、子网掩码、MAC地址等

4. 连接模式选择(通过switch选择语句实现)

A .判断Socket状态

B. 如果Socket关闭,打开一个端口

C. Socket初始化,建立连接

D. 如果连接成功,进行数据收发

模式选择主要通过以下函数以及硬件SPI模式的基本函数来实现。

uint8 getSn_SR(SOCKET s)

{

return IINCHIP_READ(Sn_SR(s));

}

uint8 IINCHIP_READ(uint32 addrbsb)

{

uint8 data = 0;

IINCHIP_ISR_DISABLE();                        // Interrupt Service Routine Disable

IINCHIP_CSoff();                              // CS=0, SPI start

IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);// Address byte 1

IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);// Address byte 2

IINCHIP_SpiSendData( (addrbsb & 0x000000F8))    ;// Data read command and Read data length 1

data = IINCHIP_SpiSendData(0×00);             // Data read (read 1byte data)

IINCHIP_CSon();                               // CS=1,  SPI end

IINCHIP_ISR_ENABLE();                         // Interrupt Service Routine Enable

return data;    }

文章评论0条评论)

登录后参与讨论
我要评论
0
19
关闭 站长推荐上一条 /2 下一条