logo资料库

STM32F103的高速以太网接口设计.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
STM32F103的高速以太网接口设计 的高速以太网接口设计 现代数据采集和监控系统的网络化,对信息传输速率和传输距离提出了更高的要求。采用STM32F103微控制器 和W5300芯片搭建的网络系统,结构简单、易于实现。 引言 随着信息技术的快速发展,网络技术的应用越来越广泛。以太网接口是以太网中各节点的通信基础,处于TCP/IP协议栈的数据 链路层,是信息传递和管理的重要环节[1]。对于单片机来说,由于内部资源有限,既要完成主控任务,又要实现TCP/IP协议栈, 难度较大,经综合考虑采用意法半导体公司生产的STM32F103作为控制核心[2]。韩国WIZnet公司生产的W5300芯片内部集 成了以太网协议,可以简化软件设计,减少调试时间,从而缩短开发周期;同时,能够简化系统布局,有利于系统升级。 1 芯片介绍 1.1 STM32F103芯片 STM32F103是基于ARM CortexM3核的32位处理器芯片。其最高工作频率为72 MHz;内置高速存储器(512 KB Flash、64 KB RAM);丰富的增强I/O端口和外设资源,包括5路USART、2个12通道DMA控制器、3路SPI以及12位的ADC、DAC、 FSMC、SDIO、USB、CAN、I2C等;具有标准和先进的通信接口;提供可编程电压检测器(PVD),保证整个系统的稳定工 作,提高抗干扰能力;温度传感器直接与内部ADC相连,能够对器件周围环境的温度进行监测;工作温度为-40~85 ℃[3],能 够满足设计的要求。 1.2 W5300芯片 W5300是一款高性能以太网芯片,采用0.18 μm CMOS工艺,内部集成10/100M以太网控制器,MAC和TCP/IP协议栈。它支 持固件TCP/IP协议TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE、Ethernet;8个独立端口同时工作;高速网络数据传 输,速度可达到50 Mbps;支持混合网络TCP/IP协议栈(软件/硬件TCP/IP协议栈);支持存储器到存储器的DMA功能(只有 16位数据总线宽度才支持,从模式);内嵌10BaseT/100BaseTX的以太网物理层;自动握手功能(全双工,半双工);自动 MDI/MDIX(信号线极性交叉);LED网络指示;第三方物理(PHY)接口;支持8/16位数据总线;支持2种主机接口模式 (直接访问模式和间接访问模式)等[45]。 2 系统硬件组成 系统硬件结构框图如图1所示。该系统包括以下几个模块: ① 电源模块,为系统工作提供稳定的电源; ② 晶振模块,为系统提供时钟; ③ 复位模块,复位MCU; ④ RS232接口模块,输出调试信息及部分网络信息的设置; ⑤ I2C存储模块,用于大量信息的存储; ⑥ JTAG接口模块,下载程序; ⑦ W5 300模块,实现以太网功能; ⑧ RJ45接口模块,以太网接口。 图1 系统硬件结构框图 图2 W5300与STM32F103的接口电路 STM32F103与W5300的接口电路如图2所示。W5300的数据线DATA0~DATA15与STM32F103的D0~D15相连;W5300的地 址线ADDR0~ADDR15与STM32F103的A0~A15相连;STM32F103的片选信号/CS与W5300的FSMC_NE4相连,使W5300映 射到主机的地址范围为0x6C000000~0x6C0003FF;STM32F103的读使能信号/RD与W5300的FSMC_NOE相连; STM32F103的写使能信号/WR与W5300的FSMC_NWE相连;因为STM32F103需要供电电压3.0 V以上才能够正常工作,所 以要求复位时间较长,采用软件对其进行硬件复位,以保证正确复位。系统采用内部PHY模式,相应的TEST_MODE[3:0]引 脚均拉低;采用16位数据总线传输,相应的BIT16EN引脚要接高电平;采用直接访问模式。 3 系统软件实现 3.1 开发环境IAR和仿真器JLink简介 IAR EWARM(IAR Embedded Workbench for ARM)是一个针对ARM处理器的集成开发环境,它包含项目管理器、编辑器、 C/C++编译器和ARM汇编器、连接器XLINK和支持 RTOS的调试工具CSPY。在EWARM环境下,可以使用 C/C++和汇编语言
方便地开发嵌入式应用程序。较其他的ARM开发环境而言,IAR EWARM具有入门容易、使用方便和代码紧凑等特点[67]。 JLink是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWARM、ADS、Keil、WinARM、RealView 等集成开发环境,即可支持所有ARM7/ARM9内核芯片的仿真,仿真通过RDI接口和各集成开发环境进行无缝连接。它具有操 作方便、连接方便、简单易学的特点,是ARM处理器最实用的开发工具。 3.2 主程序 W5300的Socket就可以配置为TCP、UDP、IPRAW、MACRAW模式进行数据的发送或接收。基于一般工程的应用模式,下 面只讨论TCP和UDP的通信流程。由于W5300固化了TCP/IP协议栈,只需创建Socket接口即可实现网络通信,大大简化了软 件设计流程。其主程序如下: int main(void){ Stm32_init();/*STM32初始化*/ W5300_init();/*初始化W5300*/ while(1){ loopback_tcp_sever(0,8000,data_buf,0); /*TCP服务器回调函数*/ loopback_tcp_sever(1,8001,data_buf,0); loopback_tcp_sever(2,8002,data_buf,0); loopback_tcp_sever(3,8003,data_buf,0); loopback_tcp_sever(4,8004,data_buf,0); loopback_tcp_sever(5,8005,data_buf,0); loopback_tcp_client(6,serverip, 8006,data_buf,0); /*TCP客户端回调函数*/ loopback_udp(7,1025,source_data,0,0); /*UDP回调函数*/ } } STM32F103初始化程序如下: void Stm32_init(void){ RCC_Configuration();/*配置系统时钟*/ IWDG_Configuration();/*配置看门狗定时器*/ GPIO_Configuration();/*配置I/O引脚*/ USART_Configuration();/*配置串口参数*/ I2C_Configuration();/*配置I2C参数*/ FSMC_SRAM4_Configuration (); /*配置FSMC*/ } W5300初始化程序如下: void W5300_init(void){ Reset_h5300();/*硬件复位W5300*/ Reset_r5300();/*软件复位W5300*/ Set_SHAR(mac);/*设置本机硬件地址*/ Set_GAR(gw);/*设置本机网关地址*/ Set_SUBR(sn);/*设置本机子网掩码*/ Set_SIPR(ip);/*设置本机IP地址*/
Buf_init(tx_mem_buf,rx_mem_buf); /*内部TX/RX存储器初始化*/ } 以UDP为例介绍Socket接口的设计。UDP是一种不可靠的、无连接的数据传输方式。它不需要建立连接就可以进行数据传输 [2]。UDP通信流程如图3所示[8]。 图3 UDP通信流程 UDP回调函数程序如下: void loopback_udp(SOCKET s, u16 port, u8* buf, u16 mode, u8 cs_flag){ u32 len=sizeof(source_data)-1; /*缓冲区的数据长度*/ u8 destip[4]={192,168,0,10};/*目的IP地址*/ u16 destport=1025;/*目的端口*/ switch(getSn_SSR(s)) { /*获取Socket状态*/ case SOCK_UDP:/*Socket处于UDP模式*/ if(cs_flag) { /*相当于UDP客户端*/ sendto(s,buf,len,destip,destport); } else {/*相当于UDP服务器*/ if((len=getSn_RX_RSR(s)) > 0) { /*判断是否接收到数据*/ len=recvfrom(s,buf,len,destip,&destport); /*接收数据,返回收到的数据长度*/ sendto(s,buf,len,destip,destport); /*把收到的数据发送到对端*/ } } break; case SOCK_CLOSED:/*Socket端口释放*/ close(s); /*关闭该Socke端口*/ socket(s,Sn_MR_UDP,port,mode); /*创建该Socke端口*/ break; default: break; } } 4 实验与结论 UDP服务器的测试方法是:打开SocketTool,创建UDP客户端模式,设置好对方IP、对方端口、本地端口后,在数据发送窗 口中输入字符串“Please send data”,点击发送数据后,在数据接收与提示窗口中将显示接收到的字符串“Hello Harbin!”。 UDP客户端的测试方法是:打开SocketTool,创建UDP服务器模式,设置好本地端口后,在数据接收与提示窗口中将显示以 一定的时间间隔接收到的字符串“Hello Harbin!”。 测试结果表明,该系统运行稳定,实现了以太网的接口功能;没有操作系统的支持实现单芯片与Internet的连接,可以为嵌入 式网络的开发提供硬件平台[9]。
分享到:
收藏