tag 标签: w5500s2e

相关博文
  • 热度 28
    2018-1-9 16:09
    2382 次阅读|
    0 个评论
    在上两篇文章中分别讲述了通过 MCU 配置 S2E 为 UDP 、 TCP Server 的工作模式”,相信小伙伴们已经对 S2E 的基本功能了解了一些,现在就让我们再接再厉、更上一层楼吧: 首先我们先了解一下MCU与S2E的接线方式: 1、接线方式: 2、例程说明: 打开“通过MCU配置S2E为TCP Client例程”,主程序中第一部分 TIM3_Init(); 是设定一个帧中断的时间定时器,这是因为该例程MCU的串口是通过帧中断来接收AT命令配置S2E后返回的数据的。 第二部分 USARTX_Init(); 初始化 MCU 用到的串口,这里用 USART1_Config(); 是 printf 功能,用于查看调试信息。 USART2_Config(); 用于配置 S2E ,需要注意的是该串口的配置参数需要同 S2E 的串口配置参数一致,否则配置失败。 第三部分主循环中的 TCP_Client_Mode(); 用于配置S2E为TCP Client模式。S2E的AT命令列表详见各个S2E型号的用户手册AT命令章节介绍。配置成功,串口打印“ TCP Client Config Success! ”,配置失败串口打印 “TCP Client Config Fail!” 。 01 /**************************************************** 02 函数名: TCP_Client_Mode 03 形参:无 04 返回值:无 05 函数功能:通过串口发送 AT 命令配置 S2E 模块 06 ****************************************************/ 07 volatile   uint8_t  SendFlag=0; 08 09 void  TCP_Client_Mode( void ) 10 { 11 uint8_t  RecvFlag=1; 12 char  *state; 13 switch  (SendFlag) { 14 case  0: { 15 Usart_Send(USART2, AT\r\n ); // 终端检测命令 16 while  (RecvFlag) { 17 if  (RX2_Point FRAME_LEN) { 18 // 如果接收到数据 19 state=strstr(( char  *)RecvBuff, OK ); 20 // 判断回复的数据中是否有 “OK” 21 if  (state!=NULL) { // 有 22 RX2_Point=0; 23 // 接收缓冲区指针置零 24 RecvFlag=0; 25 // 接收标致位置零 26 SendFlag=1; // 发送标志位置零 27 printf( Recv:%s\r\n ,RecvBuff); 28 memset(RecvBuff,0,RECV_LEN); 29 // 接收缓存清零 30 } else  { // 无 31 SendFlag=100; // 配置失败 32 RecvFlag=0; 33 } 34 } 35 } 36 } 37 break ; 38 case  1: { 39 Usart_Send(USART2, AT+ECHO=0\r\n ); 40 // 开启( 1 ) / 关闭( 0 )回显命令 41 RecvFlag=1; 42 while  (RecvFlag) { 43 if  (RX2_Point FRAME_LEN) { 44 state=strstr(( char  *)RecvBuff, OK ); 45 if  (state!=NULL) { 46 RX2_Point=0; 47 RecvFlag=0; 48 SendFlag=2; 49 printf( Recv:%s\r\n ,RecvBuff); 50 memset(RecvBuff,0,RECV_LEN); 51 } else  { 52 SendFlag=100; 53 RecvFlag=0; 54 } 55 } 56 } 57 } 58 break ; 59 case  2: { 60 Usart_Send(USART2, AT+C1_OP=1\r\n ); // 配置为 TCP 61 Client 模式命令 62 RecvFlag=1; 63 while  (RecvFlag) { 64 if  (RX2_Point FRAME_LEN) { 65 state=strstr(( char  *)RecvBuff, OK ); 66 if  (state!=NULL) { 67 RX2_Point=0; 68 RecvFlag=0; 69 SendFlag=3; 70 printf( Recv:%s\r\n ,RecvBuff); 71 memset(RecvBuff,0,RECV_LEN); 72 } else  { 73 SendFlag=100; 74 RecvFlag=0; 75 } 76 } 77 } 78 } 79 break ; 80 case  3: { 81 Usart_Send(USART2, AT+IP_MODE=1\r\n ); 82 // 配置 DHCP 模式命令 83 RecvFlag=1; 84 while  (RecvFlag) { 85 if  (RX2_Point FRAME_LEN) { 86 state=strstr(( char  *)RecvBuff, OK ); 87 if  (state!=NULL) { 88 RX2_Point=0; 89 RecvFlag=0; 90 SendFlag=4; 91 printf( Recv:%s\r\n ,RecvBuff); 92 memset(RecvBuff,0,RECV_LEN); 93 } else  { 94 SendFlag=100; 95 RecvFlag=0; 96 } 97 } 98 } 99 } 100 break ; 101 case  4: { 102 Usart_Send(USART2, AT+C1_PORT=5000\r\n ); 103 // 配置 S2E 的本地端口号 104 RecvFlag=1; 105 while  (RecvFlag) { 106 if  (RX2_Point FRAME_LEN) { 107 state=strstr(( char  *)RecvBuff, OK ); 108 if  (state!=NULL) { 109 RX2_Point=0; 110 RecvFlag=0; 111 SendFlag=5; 112 printf( Recv:%s\r\n ,RecvBuff); 113 memset(RecvBuff,0,RECV_LEN); 114 } else  { 115 SendFlag=100; 116 RecvFlag=0; 117 } 118 } 119 } 120 } 121 break ; 122 case  5: { 123 Usart_Send(USART2, AT+C1_CLI_IP1=192.168.1.109\r\n ); 124 // 配置远程服务器的 IP 地址 125 RecvFlag=1; 126 while  (RecvFlag) { 127 if  (RX2_Point FRAME_LEN) { 128 state=strstr(( char  *)RecvBuff, OK ); 129 if  (state!=NULL) { 130 RX2_Point=0; 131 RecvFlag=0; 132 SendFlag=6; 133 printf( Recv:%s\r\n ,RecvBuff); 134 memset(RecvBuff,0,RECV_LEN); 135 } else  { 136 SendFlag=100; 137 RecvFlag=0; 138 } 139 } 140 } 141 } 142 break ; 143 case  6: { 144 Usart_Send(USART2, AT+C1_CLI_PP1=5000\r\n ); 145 // 配置远程服务器的端口号 146 RecvFlag=1; 147 while  (RecvFlag) { 148 if  (RX2_Point FRAME_LEN) { 149 state=strstr(( char  *)RecvBuff, OK ); 150 if  (state!=NULL) { 151 RX2_Point=0; 152 RecvFlag=0; 153 SendFlag=7; 154 printf( Recv:%s\r\n ,RecvBuff); 155 memset(RecvBuff,0,RECV_LEN); 156 } else  { 157 SendFlag=100; 158 RecvFlag=0; 159 } 160 } 161 } 162 } 163 break ; 164 case  7: { 165 Usart_Send(USART2, AT+START_MODE=0\r\n ); 166 // 配置下次上电启动模式( 0-AT 模式, 1- 167 数据模式) 168 RecvFlag=1; 169 while  (RecvFlag) { 170 if  (RX2_Point FRAME_LEN) { 171 state=strstr(( char  *)RecvBuff, OK ); 172 if  (state!=NULL) { 173 RX2_Point=0; 174 RecvFlag=0; 175 SendFlag=8; 176 printf( Recv:%s\r\n ,RecvBuff); 177 memset(RecvBuff,0,RECV_LEN); 178 } else  { 179 SendFlag=100; 180 RecvFlag=0; 181 } 182 } 183 } 184 } 185 break ; 186 case  8: { 187 Usart_Send(USART2, AT+EXIT\r\n ); 188 // 保存配置并进入数据模式 189 RecvFlag=1; 190 while  (RecvFlag) { 191 if  (RX2_Point FRAME_LEN) { 192 state=strstr(( char  *)RecvBuff, OK ); 193 if  (state!=NULL) { 194 RX2_Point=0; 195 RecvFlag=0; 196 SendFlag=99; 197 printf( Recv:%s\r\n ,RecvBuff); 198 memset(RecvBuff,0,RECV_LEN); 199 } else  { 200 SendFlag=100; 201 RecvFlag=0; 202 } 203 } 204 } 205 } 206 break ; 207 case  99: { // 配置成功! 208 printf( TCP Client Config Success!\r\n ); 209 Config_OK=1; 210 } 211 default : 212 RecvFlag=100; 213 break ; 214 case  100: { // 配置失败! 215 printf( TCP Client Config Fail!\r\n ); 216 Config_OK=1; 217 } 218 break ; 219 } 220 } W5500S2E-S1 是一款工业级串口转以太网模块,支持多种波特率,从1.2Kbps至1.152Mbps。采用了WIZnet公司的硬件TCP/IP协议以太网芯片W5500。这是更快、更稳定、更安全的以太网解决方案。 WIZnet 官方网站: http://www.iwiznet.cn/ WIZnet 官方技术服务平台(Q群):595547972 更多物联网应用,关注WIZnet官方微信 ​ ​
  • 热度 26
    2018-1-9 15:53
    2582 次阅读|
    0 个评论
    在上一篇文章中讲了“如何通过 MCU 配置 S2E 为 UDP 模式”,相信小伙伴们已经了解了 S2E 的基本功能,在这一篇中,我们再接再厉,继续学习一下“如何通过 MCU 配置 S2E 为 TCP Server 的工作模式”,无论是配置 UDP 模式还是配置 TCP 模式,都是通过串口转以太网的方式实现的: 1、接线方式 2、例程说明 打开“通过 MCU 配置 S2E 为 TCP Server 例程”,主程序中第一部分 TIM3_Init(); 是设定一个帧中断的时间定时器,这是因为该例程 MCU 的串口是通过帧中断来接收 AT 命令配置 S2E 后返回的数据的。 第二部分 USARTX_Init(); 初始化 MCU 用到的串口,这里用 USART1_Config(); 是 printf 功能,用于查看调试信息。 USART2_Config(); 用于配置 S2E ,需要注意的是该串口的配置参数需要同 S2E 的串口配置参数一致,否则配置失败。 第三部分主循环中的 TCP_Server_Mode(); 用于配置 S2E 为 TCP Server 模式。 S2E 的 AT 命令列表详见各个 S2E 型号的用户手册 AT 命令章节介绍。配置成功,串口打印“ TCP Server Config Success! ”,配置失败串口打印 “ TCP Server Config Fail! ” 。 1 /**************************************************** 2 函数名: TCP_Server_Mode 3 形参: 无 4 返回值: 无 5 函数功能:   通过串口发送 AT 命令配置 S2E 模块 6 ****************************************************/ 7 volatile   uint8_t  SendFlag=0; 8 9 void  TCP_Server_Mode( void ) 10 { 11 uint8_t  RecvFlag=1; 12 char  *state; 13 14 switch  (SendFlag) { 15 case  0: { 16 Usart_Send(USART2, AT\r\n ); 17 // 终端检测命令 18 while  (RecvFlag) { 19 if  (RX2_Point FRAME_LEN) { 20 // 如果接收到数据 21 state=strstr(( char  *)RecvBuff, OK ); 22 // 判断回复的数据中是否有 “OK” 23 if  (state!=NULL) { 24 // 有 25 RX2_Point=0; 26 // 接收缓冲区指针置零 27 RecvFlag=0; 28 // 接收标致位置零 29 SendFlag=1; 30 // 发送标志位置零 31 printf( Recv:%s\r\n ,RecvBuff); 32 memset(RecvBuff,0,RECV_LEN); 33 // 接收缓存清零 34 } else  { // 无 35 SendFlag=100; 36 // 配置失败 37 RecvFlag=0; 38 } 39 } 40 } 41 } 42 break ; 43 case  1: { 44 Usart_Send(USART2, AT+ECHO=0\r\n ); 45 // 开启( 1 ) / 关闭( 0 )回显命令 46 RecvFlag=1; 47 while  (RecvFlag) { 48 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 49 state=strstr(( char  *)RecvBuff, OK ); 50 if  (state!=NULL) { 51 RX2_Point=0; 52 RecvFlag=0; 53 SendFlag=2; 54 printf( Recv:%s\r\n ,RecvBuff); 55 memset(RecvBuff,0,RECV_LEN); 56 } else  { 57 SendFlag=100; 58 RecvFlag=0; 59 } 60 } 61 } 62 } 63 break ; 64 case  2: { 65 Usart_Send(USART2, AT+C1_OP=0\r\n ); // 配置为 TCP 66 Server 模式命令 67 RecvFlag=1; 68 while  (RecvFlag) { 69 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 70 state=strstr(( char  *)RecvBuff, OK ); 71 if  (state!=NULL) { 72 RX2_Point=0; 73 RecvFlag=0; 74 SendFlag=3; // 状态标志位置零 75 printf( Recv:%s\r\n ,RecvBuff); 76 memset(RecvBuff,0,RECV_LEN); 77 } else  { 78 SendFlag=100; 79 RecvFlag=0; 80 } 81 } 82 } 83 } 84 break ; 85 case  3: { 86 Usart_Send(USART2, AT+IP_MODE=0\r\n ); 87 // 配置为静态 IP 模式 88 RecvFlag=1; 89 while  (RecvFlag) { 90 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 91 state=strstr(( char  *)RecvBuff, OK ); 92 if  (state!=NULL) { 93 RX2_Point=0; 94 RecvFlag=0; 95 SendFlag=4; // 状态标志位置零 96 printf( Recv:%s\r\n ,RecvBuff); 97 memset(RecvBuff,0,RECV_LEN); 98 } else  { 99 SendFlag=100; 100 RecvFlag=0; 101 } 102 } 103 } 104 } 105 break ; 106 case  4: { 107 Usart_Send(USART2, AT+IP=192.168.1.88\r\n ); // 配置本地 IP 108 RecvFlag=1; 109 while  (RecvFlag) { 110 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 111 state=strstr(( char  *)RecvBuff, OK ); 112 if  (state!=NULL) { 113 RX2_Point=0; 114 RecvFlag=0; 115 SendFlag=5; // 状态标志位置零 116 printf( Recv:%s\r\n ,RecvBuff); 117 memset(RecvBuff,0,RECV_LEN); 118 } else  { 119 SendFlag=100; 120 RecvFlag=0; 121 } 122 } 123 } 124 } 125 break ; 126 case  5: { 127 Usart_Send(USART2, AT+MARK=255.255.255.0\r\n ); 128 // 配置本地 IP 129 RecvFlag=1; 130 while  (RecvFlag) { 131 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 132 state=strstr(( char  *)RecvBuff, OK ); 133 if  (state!=NULL) { 134 RX2_Point=0; 135 RecvFlag=0; 136 SendFlag=6; // 状态标志位置零 137 printf( Recv:%s\r\n ,RecvBuff); 138 memset(RecvBuff,0,RECV_LEN); 139 } else  { 140 SendFlag=100; 141 RecvFlag=0; 142 } 143 } 144 } 145 } 146 break ; 147 case  6: { 148 Usart_Send(USART2, AT+GATEWAY=192.168.1.1\r\n ); 149 // 配置本地 IP 150 RecvFlag=1; 151 while  (RecvFlag) { 152 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 153 state=strstr(( char  *)RecvBuff, OK ); 154 if  (state!=NULL) { 155 RX2_Point=0; 156 RecvFlag=0; 157 SendFlag=7; // 状态标志位置零 158 printf( Recv:%s\r\n ,RecvBuff); 159 memset(RecvBuff,0,RECV_LEN); 160 } else  { 161 SendFlag=100; 162 RecvFlag=0; 163 } 164 } 165 } 166 } 167 break ; 168 case  7: { 169 Usart_Send(USART2, AT+C1_PORT=5000\r\n ); 170 // 配置本地端口号 171 RecvFlag=1; 172 while  (RecvFlag) { 173 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 174 state=strstr(( char  *)RecvBuff, OK ); 175 if  (state!=NULL) { 176 RX2_Point=0; 177 RecvFlag=0; 178 SendFlag=8; // 状态标志位置零 179 printf( Recv:%s\r\n ,RecvBuff); 180 memset(RecvBuff,0,RECV_LEN); 181 } else  { 182 SendFlag=100; 183 RecvFlag=0; 184 } 185 } 186 } 187 } 188 break ; 189 case  8: { 190 Usart_Send(USART2, AT+START_MODE=0\r\n ); 191 // 配置启动模式( 0--AT 模式, 1-- 192 数据模式) 193 RecvFlag=1; 194 while  (RecvFlag) { 195 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 196 state=strstr(( char  *)RecvBuff, OK ); 197 if  (state!=NULL) { 198 RX2_Point=0; 199 RecvFlag=0; 200 SendFlag=9; // 状态标志位置零 201 printf( Recv:%s\r\n ,RecvBuff); 202 memset(RecvBuff,0,RECV_LEN); 203 } else  { 204 SendFlag=100; 205 RecvFlag=0; 206 } 207 } 208 } 209 } 210 break ; 211 case  9: { 212 Usart_Send(USART2, AT+EXIT\r\n ); 213 // 保存配置并进入数据模式 214 RecvFlag=1; 215 while  (RecvFlag) { 216 if  (RX2_Point FRAME_LEN) { // 如果接收到数据 217 state=strstr(( char  *)RecvBuff, OK ); 218 if  (state!=NULL) { 219 RX2_Point=0; 220 RecvFlag=0; 221 SendFlag=99; // 状态标志位置零 222 printf( Recv:%s\r\n ,RecvBuff); 223 memset(RecvBuff,0,RECV_LEN); 224 } else  { 225 SendFlag=100; 226 RecvFlag=0; 227 } 228 } 229 } 230 } 231 break ; 232 case  99: { 233 printf( TCP Server Config Success!\r\n ); 234 Config_OK=1; 235 } 236 default : 237 RecvFlag=100; 238 break ; 239 case  100: { 240 printf( TCP Server Config Fail!\r\n ); 241 Config_OK=1; 242 } 243 break ; 244 } 245 } ​ ​
  • 热度 26
    2018-1-9 14:44
    2730 次阅读|
    0 个评论
    ​ ​ W5500S2E-S1 是 一款工业级串口转以太网模块,支持 TCP Server 、 TCP Client 和 UDP 三种工作模式,串口波特率最高可达 1.152Mbps ,并提供配套的上位机配置软件,也可通过网页或 AT 命令等方式轻松配置。 W5500S2E-S1 模块集成了全硬件 TCP/IP 协议栈以太网接口芯片 W5500 ,网络通信更加快速、稳定、安全。用户只需根据手册中推荐的参考设计原理图,即可快速完成硬件电路的设计,降低开发难度,节省开发时间。 今天我们就实际的来接触一下 W5500S2E-S1 基于 UDP 工作模式的具体操作流程是什么样的,下面我们就来看看吧: 1、 具体操作流程 ( 1 )、接线方式: ( 2 )、例程说明: 打开“通过 MCU 配置 S2E 为 UDP 例程”,主程序中第一部分 TIM3_Init(); 是设定一个帧中断的时间定时器,这是因为该例程 MCU 的串口是通过帧中断来接收 AT 命令配置 S2E 后返回的数据的。 第二部分 USARTX_Init(); 初始化 MCU 用到的串口,这里用 USART1_Config(); 是 printf 功能,用于查看调试信息。 USART2_Config(); 用于配置 S2E ,需要注意的是该串口的配置参数需要同 S2E 的串口配置参数一致,否则配置失败。 第三部分主循环中的 UDP_Mode(); 用于配置 S2E 为 UDP 模式。 S2E 的 AT 命令列表详见各个 S2E 型号的用户手册 AT 命令章节介绍。配置成功,串口打印“ UDP Config Success! ”,配置失败串口打印 “ UDP Config Fail! ” 。
  • 热度 28
    2015-12-9 13:53
    1947 次阅读|
    0 个评论
    2015年12月2日,第四届韩合集成电路技术交流会在WESTIN酒店深圳世界之窗店顺利举办。本届交流会与会嘉宾主要是韩合集成电路项目的主要领导、驻在深圳的9家韩合IC企业以及相关企业代表,主要围绕公司产品和2015年取得的技术成果展开技术交流,WIZnet由陈总带队一行四人参加了此次会议。 从本次交流会获悉,中韩IC产业2014年合作贸易规模达350亿美金,有望继续保持增长。会议期间,陈博士向大家介绍了WIZnet公司的基本情况、全硬件TCP/IP协议栈网络芯片的技术优势、应用领域以及在物联网这一新兴领域的应用前景。 除此之外,中兴介绍了以小兴看看为代表的智能硬件领域的成果,Glovance介绍了其数字音频解决方案,MAPS介绍了其磁共振式无线充电技术与无线充电一体化解决方案,Semisens介绍了其触控技术的3大应用领域,包括智能手机及平板电脑、消费类电子、穿戴式设备等,ZINITIX介绍了其触控IC、驱动IC、电源IC等,CHIPSBRAIN介绍了其256bit AES防复制ASIC的项目概况,CLAIRPIXEL介绍了其用于CCTV/BB的全高清CIS研发状况,HiDeep介绍了其触控Sensor技术的应用等等。 另外,我们还借此机会展示了WIZnet最新开发的W5500S2E和W7500S2E项目,以及W7500P和WIZwiki-W7500P开发板,吸引了数位行内人士的驻**流。 更多内容,请登录WIZnet官网 www.iwiznet.cn 或关注微信公众平台:iWIZnet
  • 热度 26
    2015-12-9 13:46
    2057 次阅读|
    1 个评论
    2015年12月2日,第四届韩合集成电路技术交流会在WESTIN酒店深圳世界之窗店顺利举办。本届交流会与会嘉宾主要是韩合集成电路项目的主要领导、驻在深圳的9家韩合IC企业以及相关企业代表,主要围绕公司产品和2015年取得的技术成果展开技术交流,WIZnet由陈总带队一行四人参加了此次会议。 从本次交流会获悉,中韩IC产业2014年合作贸易规模达350亿美金,有望继续保持增长。会议期间,陈博士向大家介绍了WIZnet公司的基本情况、全硬件TCP/IP协议栈网络芯片的技术优势、应用领域以及在物联网这一新兴领域的应用前景。 除此之外,中兴介绍了以小兴看看为代表的智能硬件领域的成果,Glovance介绍了其数字音频解决方案,MAPS介绍了其磁共振式无线充电技术与无线充电一体化解决方案,Semisens介绍了其触控技术的3大应用领域,包括智能手机及平板电脑、消费类电子、穿戴式设备等,ZINITIX介绍了其触控IC、驱动IC、电源IC等,CHIPSBRAIN介绍了其256bit AES防复制ASIC的项目概况,CLAIRPIXEL介绍了其用于CCTV/BB的全高清CIS研发状况,HiDeep介绍了其触控Sensor技术的应用等等。 另外,我们还借此机会展示了WIZnet最新开发的W5500S2E和W7500S2E项目,以及W7500P和WIZwiki-W7500P开发板,吸引了数位行内人士的驻**流。 更多内容,请登录WIZnet官网 www.iwiznet.cn 或关注微信公众平台:iWIZnet