[W5500 EVM] 모듈 보드 제작

[INTERFACE]/WIZNET_EVM | 2014.11.22 21:55
Posted by nexp

[W5500 EVM] 모듈 보드 제작




W5200 EVM 과 동일 한 핀맵으로 W5500 EVM 보드를 제작 했다. W5500 칩 자체 크기가 커져서 사이즈는 약간 크지만 저렴한 가격 때문에 사용할 곳이 많을것 같다.


W5500 은 W5200과 거의 동일한 기능을 하지만 칩 공정상 더 최신 기술이 들어가 저렴해 진것 같다. 


W5500은 기존 W5200 모듈 및 SPI 모듈의 핀맵과 호환되도록 제작해서 여러 확장 보드에서 쉽게 연결하여 테스트 가능하도록 제작했다.


W5500의 테스트 소스코드는 Winzet 에서 제공하는 W5500 Driver 파일을 수정해서 작성했다.






W5500 EVM에서 추가된 부분은 MAC Address 할당 메모리가 추가되었다. 필요에 따라 MAC Address 할당된 메모리 실장하면 MAC Address 할당을 해결할 수 있다.


XMC1300 EVM - W5200 TCP/IP 전송속도 테스트




[NET_EV EVM] 확장 테스트 보드 에서 테스트 가능하다. W5200은 하드웨어 TCP/IP 스텍을 내장하고 있어 SPI통신으로 이더넷통신을 쉽게 구현할 수 있다





XMC1300 EVM W5200 연결 핀맵

XMC1300 EVM에서 아래와 같이 핀맵이 구성된다.

W5200_CS -> P1.4 (P_A13)

W5200_RST -> P2.11 (P_B17)





XMC1300의 SPI클럭 최대 속도는 16Mhz이고 이때 TCP/IP 루프백 전송 속도는 1.4Mbps정도 나온다

W5200을 이용한 다른 MCU들의 TCP/IP속도와 비교하면 효율성이 조금 떨어지는것 같다.


------------------------------------------------------------

[35] iInChip Send: 1.4289 Mbps(348160 bytes, 1.8590 sec)

iInChip Recv: 1.3339 Mbps(348160 bytes, 1.9913 sec)

------------------------------------------------------------

[36] iInChip Send: 1.4162 Mbps(348160 bytes, 1.8756 sec)

iInChip Recv: 1.3400 Mbps(348160 bytes, 1.9823 sec)

--------------------------------------------------------



K20 EVM - Kinetis Cortex-M4 W5200을 이용한 TCP/IP 루프백 전송속도 테스트





W5200은 HW TCP/IP 스택을 내장하고 있는 칪으로 저렴한 MCU에서 SPI통신으로 쉽게 Ethernet 통신이 가능하도록 해준다.

K20에서 W5200을 이용하여 TCP/IP 전송 속도 테스를 진행해 보았다.





K20의 SPI최대 속도는 25Mhz이고 TCP/IP 루프백 속도 테스트 결과 2.5Mbps 정도로 측정된다.




[34] iInChip Send: 2.6033 Mbps(348160 bytes, 1.0203 sec)

iInChip Recv: 2.2290 Mbps(348160 bytes, 1.1917 sec)

------------------------------------------------------------

[35] iInChip Send: 2.6008 Mbps(348160 bytes, 1.0213 sec)

iInChip Recv: 2.2092 Mbps(348160 bytes, 1.2023 sec)

-------------------------------------------------------






K20 Hadward TCP/IP Network Module W5200 드라이버 코스코드

 TCP/IP 전송속도 테스트를 위하여 [Net_EV-SM EVM] 확장 테스트 보드를 이용하였다.

 SPI는 SPI0에 연결되어 있고 /CS는 PB3, /RESET는 PB2에 각각 연결되어 있다.

//-----------------------------------------------------------------------------

// W5200 HAL

#define W5100_CS_PORT GPIOB

#define W5100_CS_BIT BIT3


#define W5100_RST_PORT GPIOB

#define W5100_RST_BIT BIT2



#define W5100_IO_INIT() SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;\

                                        PORTB_PCR2 = PORT_PCR_MUX(1);\

                                        PORTB_PCR3 = PORT_PCR_MUX(1);\

                                        Sbi(GPIOB_PDDR, W5100_CS_BIT);Sbi(GPIOB_PDDR, W5100_RST_BIT);\

                                        IINCHIP_CSon();


#define IINCHIP_CSoff() cbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_CSon() sbi(W5100_CS_PORT, W5100_CS_BIT)



#define IINCHIP_SPI_INIT() SPI0_Init();IINCHIP_SPI_SPEED();

#define IINCHIP_SpiSendData SPI0_WriteReadByte

#define IINCHIP_SpiRecvData SPI0_WriteReadByte

#define IINCHIP_SPI_SPEED()            SPI0_SetSpeed(SPI_SPEED_MAX) 


#define IINCHIP_RSToff() cbi(W5100_RST_PORT, W5100_RST_BIT)

#define IINCHIP_RSTon() sbi(W5100_RST_PORT, W5100_RST_BIT)

//-----------------------------------------------------------------------------




EFM32G210 EVM - 웹서버를 이용한 온습도 모니터링 예제

 

 

 

 

 

EFM32의 저전력 기능을 활용하기 위해 저전력으로  온습도 모니터링 가능한 임베디드 웹서버를 제작했다.

온도, 습도 센서는 STH10 온습도 센서 모듈을 이용하였다.

 

 

SHT10 온습도 센서 드라이버 소스

//-----------------------------------------------------------------------------
// SHT10 Sensor
#define SHT_DAT_BIT      BIT13
#define SHT_DAT_PORT     GPIOB

#define SHT_DATA_H()     sbi(SHT_DAT_PORT, SHT_DAT_BIT);
#define SHT_DATA_L()     cbi(SHT_DAT_PORT, SHT_DAT_BIT)

#define SHT_SCK_BIT      BIT14
#define SHT_SCK_PORT     GPIOB
#define SHT_DAT_DDR      DDRD 
#define SHT_DAT_READ()     ((pGPIO->P[1].DIN&SHT_DAT_BIT)?1:0)

#define SHT_SCK_H()      sbi(SHT_SCK_PORT, SHT_SCK_BIT);
#define SHT_SCK_L()      cbi(SHT_SCK_PORT, SHT_SCK_BIT)

#define SHT_PORT_INIT()     GPIO_PinModeSet(gpioPortB, 14, gpioModePushPull, 1);\
                                        GPIO_PinModeSet(gpioPortB, 13, gpioModeInputPull, 0)


#define OUT_MODE()      GPIO_PinModeSet(gpioPortB, 13, gpioModePushPull, 1)
#define IN_MODE()      GPIO_PinModeSet(gpioPortB, 13, gpioModeInputPull, 0)
#define _SHT_DELAY()     Delay_us(10);
//-----------------------------------------------------------------------------

 

 

 

EFM32 Embedded Webserver - Temperature and Humidity Web Monitoring 동영상

EFM32 웹서버에 접속하면 2초에 한번씩 온습도 데이터를 전송하는 테스트 이다. 인터넷이 연결되는 핸드폰이나 모바일 기기에서 온습도 모니터 가능하다.

 

 

 

 

EFM32 Webserver Test Page

웹서버 IP 로 접속하면 가장 최근의 온습도 데이터를 확인할 수 있다.

EFM32G210 EVM - 저전력 Embedded Web Server 테스트




EFM32G210의 장점으로 Cortex-M3코어(128k Flash/16k RAM)에 저전력으로 구동 된다. 소형에 저렴하면서 플래시와 램이 풍부해서 소형 임베디드 웹서버 제작하기에 좋을것 같다.


간단히하기 위해 내부 플레쉬메모리에 웹서버를 구현 해 보았다.




할당된 IP에 접속하면 출력될 Web Page

간단한 이미지와 입출력 제어를 위한 CGI코드로 구성되어 있다.




EFM32 Web Server 테스트 동영상


EFM32G210 EVM - W5200을 이용한 TCP/IP 전송 속도 테스트



[XMega-EX EVM] 확장 테스트 보드를 이용하면 W5200모듈을 연결하여 이더넷 테스트가 가능하다.



EFM32G210 EVM W5200 TCP/IP 모듈 드라이버 코드

//-----------------------------------------------------------------------------

// W5100 HAL

#define W5100_CS_PORT GPIOA

#define W5100_CS_BIT BIT0


#define W5100_RST_PORT GPIOA

#define W5100_RST_BIT BIT1



#define W5100_IO_INIT() GPIO_PinModeSet(gpioPortA, 0, gpioModePushPull, 1);\

                                        GPIO_PinModeSet(gpioPortA, 1, gpioModePushPull, 1);\

                                        IINCHIP_CSon();


#define IINCHIP_CSoff() cbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_CSon() sbi(W5100_CS_PORT, W5100_CS_BIT)



#define IINCHIP_SPI_INIT() SPI0_Init();IINCHIP_SPI_SPEED();

#define IINCHIP_SpiSendData SPI0_WriteReadByte

#define IINCHIP_SpiRecvData SPI0_WriteReadByte

#define IINCHIP_SPI_SPEED()            MMC_SPISpeed(SPI_SPEED_MAX) 


#define IINCHIP_RSToff() cbi(W5100_RST_PORT, W5100_RST_BIT)

#define IINCHIP_RSTon() sbi(W5100_RST_PORT, W5100_RST_BIT)

//-----------------------------------------------------------------------------




EFM32를 이용하여 TCP/IP 전송율 테스트 결과 1.4Mbps 이다. EFM32 의 최대 SPI 클럭속도가 1.4Mhz인 것을 생각하면 그리 빠르지는 않은듯...

저전력 웹서버 만들면 좋을것 같다.


[W7200 EVM] TCP/IP 테스트 - W7200 TCP Server 전송 속도 테스트




W7200은 Cortex-M3 STM32와 W5200이 한칩에 들어 있는 Internet MCU 이다.


소스코드는 기존 STM32-SM + W5200과 호환이 되지만 SPI(SPI0), CS(PA4), RST(PB8), PowerDown(PB9) 핀은 하드웨어 적으로 고정되어 있다.



W7200 TCP Server 전송 속도

TCP 서버 송수신 속도는 3Mbps정도로 측정된다. STM32-SM EVM (2.5Mbps)과 동일한 코드로 테스트 해보면 W7200이 속도가 좀더 빠르게 나오는데... 아무래도 한칩에 포함되어 있어 그런것이 아닐까 생각해 본다.




W7200 W5200 제어 드라이버 코드

//-----------------------------------------------------------------------------

// W5100 HAL

#define _SPI0_ENABLE 1


#define W5100_CS_PORT GPIOA

#define W5100_CS_BIT BIT4


#define W5100_RST_PORT GPIOB

#define W5100_RST_BIT BIT8

#define IINCHIP_RSToff() cbi(W5100_RST_PORT, W5100_RST_BIT)

#define IINCHIP_RSTon() sbi(W5100_RST_PORT, W5100_RST_BIT)



#define W5100_PD_PORT GPIOB

#define W5100_PD_BIT BIT9

#define IINCHIP_PDoff() cbi(W5100_PD_PORT, W5100_PD_BIT)

#define IINCHIP_PDon() sbi(W5100_PD_PORT, W5100_PD_BIT)




#define W5100_IO_INIT() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);\

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;\

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;\

GPIO_InitStructure.GPIO_Pin=W5100_CS_BIT;\

GPIO_Init(GPIOA, &GPIO_InitStructure);\

GPIO_InitStructure.GPIO_Pin=W5100_RST_BIT|W5100_PD_BIT;\

GPIO_Init(GPIOB, &GPIO_InitStructure);\

                                        IINCHIP_RSTon();IINCHIP_PDoff();



#define IINCHIP_CSoff() cbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_CSon() sbi(W5100_CS_PORT, W5100_CS_BIT)




#define IINCHIP_SPI_INIT() SPI0_Init();SPI0_SetSpeed(SPI_SPEED_MAX);

#define IINCHIP_SpiSendData SPI0_WriteReadByte

#define IINCHIP_SpiRecvData SPI0_WriteReadByte

//-----------------------------------------------------------------------------








[W7200 EVM] Internet MCU 보드제작 - Cortex M3 with hardwired TCP/IP, MAC & PHY




H/W TCP/IP 포함된 Wiznet 사의 Cortex-M3(STM32) W7200 보드를 제작 했다. W7200은 한 칩에 MAC PHY, H/W TCP/IP(W5200), STM32가 들어 있어 소형의 임베디드 네트웍을 구성할 수 있다.


[STM32-SM EVM] 보드와 핀맵을 호환할 수 있도록 제작했고, STM32코어 이므로 때문에 소스코드는 그대로 사용가능하다.



W7200 특징


W7200 ARM 32-bit Cortex-M3

  - 72MHz maximum frequency (1.25 DMIPS/MHz)
  - 20KBytes Data Memory (RAM)
  - 128KBytes Code Memory
  - Low Power: Support Sleep, Stop and Standby modes
  - 7 timers
  - Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
  - 2 watchdog timers (Independent and Window)
  - SysTick timer 24-bit down counter
  - Full-duplex UART
  - Programmable Watchdog Timer
  - CRC calculation unit, 96-bit unique ID
  - GPIO, SPI, USART and USB Interfaces
  - 10BaseT/100BaseTX Ethernet PHY embedded



W7200 블록도




[W7200 EVM]




W7200 - H/W TCP IP W5200, MAC, PHY, STM32 가 하나의 칩으로 구성되어 있어 소형으로 제작 가능하다.

다만 페키기가 QFN타입이 아니라 수작업으로 납땜하기에는 약간의 기술을 요한다.




STM32 코어 이기 때문에 USB2UART를 이용하여 시리얼 포트로 펌웨어 다운로드 할 수 있다.




[ST-Type EVM]형태로 제작해서 기존 확장 보드와 쉽게 호환 가능하다.






W7200 회로도




 [adStar EVM] AJAX를 이용한 실시간 업데이트 웹서버 - 가속도 센서 그래프출력

 

 

임베디드 웹서버의  센서 모니터링을 위한 기술로 실기간 업데이트 가능한 JAVA(AJAX) 기술을 이용하면 쉽게 구현 가능하다.

참고 : Mini WebServer real time page update(실시간 웹페이지 업데이트)

 

 

[adStar EVM] 보드를 이용하여 실시간 업데이트 가능한 임베디드 웹서버를 구현 해보았다. 웹페이지에서 JAVA코드를 디버깅하기는 쉽지 않기 때문에 자주 수정해야 한다. 웹페이지는 SD Card를 통해 업데이트 되어 복사만 하면 되므로 손쉽게 디버깅 할 수 있다.

 

 

adStar 실시간 업데이트 웹서버 테스트 동영상

실시간성 테스를 위해 3축 가속도 센서 데이터를 모니터링 하는 예제를 테스트 했다. 

 

 

 

실시간 업데이트 테스트 코드

실시간 페이지 업데이트를 위해 웹페이지에서는 AJAX가 스레스생하여 xml파일을 요청하고 임베디드 보드에서 xml 데이터만 수정하여 전소하게 된다. 그러면 부하없이 고속으로 실시간 데이터를 전송할 수 있다.

 

void SendToWebpage_sd(int s, char *name, unsigned char *http_response, unsigned long len, int req_type)

{

  : 

  if(req_type==PTYPE_CGI)
  {
   send_len = replace_sys_env_value(http_response,send_len);
  }
  else if(req_type == PTYPE_TEXT)
  {
   send_len = replace_sys_env_value(http_response,send_len);
   

  //XML 데이터 요청이 있으면
   if(strstr(name,"adc_val.xml"))
   {

       //센서 데이터 업데이트
       send_len = replace_sys_env_value(http_response,send_len);
   }      
  }  
  send(s, http_response, send_len, 0);

  file_len -= send_len;
 }
   
 f_close(&fp);

}

 

 

 

realtime embedded web server 테스트 페이지

 

 [adStar EVM] SD Card를 이용한 임베디드 웹서버 테스트

 

 

[adStar EVM]은 SD Card소켓을 내장하고 있기 때문에 여러가지 활용도가 좋은데, SD 카드를 이용하여 간단한 임베디드 웹서버를 제작해 보았다.

adStar의 풍푸한 SDRAM과 고성능이면서 저렴한 adStar의 장점을 최대한 이용해 보았다.

 

SD Card를 이용하면 웹페이 업데이트 및 관리에 있어서 편리한점이 많다. 특히 메모리가 부족한 임베디드 환경에서 저렴하고 웹서버 구현하는데 있어 좋은것 같다.

 

네트웍은 H/W TCPIP W5200모듈을 이용하여 SPI형태로 쉽게 [XP-NET EVM] 보드에 연결하여 테스트 하였다.

 

 

 

[adStar EVM] Embedded Webserver 테스트 동영상 

SD card에 웹페이지를 저장하고 네으웍으로 접속하여 간단한 웹서버 기능을 테스트 하고 있다. 디지털 입력, 디지털 출력, 아날로그 입력 등을 웹브라우저나 스마트폰등에서 접속하여 테스트할수 있다.

 

 

 

adStar 임베디드 웹서버 메인 페이지

임시로 192.168.0.104로 할당하였다.

 

 

 

 

adStar 임베디드 웹서버 디지털 출력 페이지

CGI 파일을 이용하여 LED1, LED2의 출력 상태를 변경하고 이를 LAMP모듈에 출력한다.

 

 

 

 

adStar 임베디드 웹서버 아날로그 입력 페이지 

아날로그 입력 데이터를 그래프로 표시한다. 그래프 표시는 JAVA(ajax) 를 이용하여 실시간으로 표시하도록 했다.

 

 

 

 

 

 

adStar 임베디드 웹서버 디지털 출력 페이지

디지털 출력으로 FND를 사용하였다.

 

 

 

 

 

 

블로그 이미지

nexp

카테고리

분류 전체보기 (1550)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (139)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (210)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (127)
[SENSOR] (41)
[DATA] (21)
[FPGA] (29)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)

티스토리 툴바