[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 할당을 해결할 수 있다.


[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 회로도




[AT90USB1287-EX] 이더넷 테스트 - 초간단 웹서버 만들기




AVR와 W5100을 이용하여 아주 간단한 웹서버를 만들어 보도록 하자.
웹서버는 TCP서버의 일종으로 웹브라우저에서 80번 포트로 접속하면 HTTP프로토콜에 따라 데이터를 송수신 하면 된다.

AVR 초간단 웹서버 테스트 동영상
[AT90USB1287-EX] 보드가 임베디드 웹서버로 동작하고 접속하여 보드의 LED제어하는 간단한 예제를 작성해 보았다.





먼저 접속하면 보여줄 웹페이지를 HTML 코드로 작성해서 변수로 저장해 둔다. 추후 좀더 복잡한 페이지는 USB메모리 스틱이나 SD Card에 저장할 수 있다.




const unsigned char str_http_ok[] = {"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n"};

const unsigned char str_msg[] = {"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n\
    <html><head></head><body ><DIV><p align=\"center\"><b><size=\"8\"><br>[AT90USB1287-EX] WebServer - LED Test</font></b></DIV>\
    <HR style=\"COLOR: #3366FF; BACKGROUND-COLOR: #EB9243\"></DIV><div align=\"center\"><p align=\"center\"></p></div>\
    <form name=\"form1\" method=\"get\" action=\"$LED_ON\"><p align=\"center\"><input type=\"submit\" value=\"LED ON\"  name=\"ledo\"></p></form>\
 <p><p></td></tr><tr><td><form name=\"form2\" method=\"get\" action=\"$LED_OF\"><p align=\"center\">\
    <input type=\"submit\" value=\"LED OFF\" name=\"ledn\"></p></form><p></td></tr></table></div></body></html>"};




TCP서버 처리를 위한 함수는 기존과 동일한데 HTTP프로토콜은 디폴트 80번 포트 이므로 80번포트로 소켓을 생성하고 데이터 수신되면 웹페이지를 전송해 주면 된다. 아래 코드와 같이 아주 간단하다.

void ProcessTCPS(unsigned int sock)
{
    unsigned int len;
 unsigned int port = MY_LISTEN_PORT;

 switch (getSn_SR(sock))
 {
  // Socket CLOSED일 경우     
 case SOCK_CLOSED:
  if(!m_SokStatus1)
  {
   DebugPrint("[%d] : Web Server Started.",sock);
   m_SokStatus1 = 1;
  }

  if(socket(sock, Sn_MR_TCP, DEFAULT_HTTP_PORT, 0x00) == 0)
  {
   DebugPrint("\a%d : Fail to create socket.",sock);
   m_SokStatus1 = 0;
  }
  else listen(sock);
 
  break;

case SOCK_ESTABLISHED:
  //수신데이터가 있으면
  if((len = getSn_RX_RSR(sock)) > 0)   
  {
      if (len > TX_RX_MAX_BUF_SIZE) len = TX_RX_MAX_BUF_SIZE;
      //데이터 수신
      len = recv(sock, data_buf, len);  
  
     //수신데이터 처리 -> 웹 쿼리 응답
     ProcessWebpage(sock, data_buf);    
  } 
  break;

 case SOCK_CLOSE_WAIT:                            
  //If the client request to close
  disconnect(sock);
 
  m_SokStatus1 = 0;
  break;  
  } 
}



이제 웹페이지에서 특정한 응답을 받아서 처리 하는 부분을 작성해 보자. 이번 예제에서는 웹페이지에 있는 버튼에 따라 LED를 On/Off할 수 있도록 해 보았다.

아래 코드와 같이 브라우저에서 웹페이지를 요청하면 "HTTP/1.0 200 OK" 메세지와 HTML페이지를 전송하면 된다.
  send(sock, str_http_ok, strlen(str_http_ok));
  send(sock, str_msg, strlen(str_msg));


void ProcessWebpage(unsigned sock, unsigned char *data_buf)
{
 int wait_send=0;

 //LED 제어 처리
 if(strncmp("$LED_ON", (char *)&(data_buf[5]), 7)==0)
 {     
  Led1On();
  send(sock, str_http_ok, strlen(str_http_ok));
  send(sock, str_msg, strlen(str_msg));
  DebugPrint("led on\r\n");
 }
 else if(strncmp("$LED_OF", (char *)&(data_buf[5]), 7)==0)
 {     
  Led1Off();
  PORTF = 0xFF;
  send(sock, str_http_ok, strlen(str_http_ok));
  send(sock, str_msg, strlen(str_msg));
  DebugPrint("led off\r\n");
 }
 else
 {
  send(sock, str_msg, strlen(str_msg));   
 }

 while(getSn_TX_FSR(sock)!= getIINCHIP_TxMAX(sock))
 {
  if(wait_send++ > 1500)
  {
   DebugPrint( "HTTP Response send fail");
    break;
  }
  Delay(1);
 }
 disconnect(sock);
 DebugPrint("closed\r\n");
}





[LM3S5732 EVM] W5200 테스트

[TI]/LM3S5xxx | 2011.09.15 23:00
Posted by nexp
[LM3S5732 EVM] W5200 테스트










type.h의 bool 타입이 기존 프로젝트와 겹쳐서 컴파일 에러가 발생한다.
이런 부분은 컴파일마다 차이가 발생할 수 있으므로 unsigned char로 대체 했다.
//typedef enum { false, true } bool;


socket.c, socket.h 파일에서 bool 사용하는것을 수정 했다.
extern uint16 send(SOCKET s, const uint8 * buf, uint16 len, bool retry); // Send data (TCP)


다른 MCU와 다르게 INT/RST 를 묶어 두었을때 포트가 정상 동작하지 않는다.(다른 MCU에서는 INT/RST핀을 동시에 사용하도록 했었다.)
아무래도 GPIO특성상 4mA밖에 흘리지 못해서 그런것 같다.
INT/RST 핀을 따로 분리 하니 잘 동작한다.




또 한가지 문제가 발생 했다.

SPI클럭 설정 부분에서 12Mhz이상 되면 정상 동작하지 않는다.
스펙상으로 25Mhz까지 동작한다고 하는데...
12Mhz이상 설정하면 무조건 25Mhz클럭이 출력되도 정상 동작하지는 않는다.

 SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(),
        SSI_FRF_MOTO_MODE_0, //SPI MODE 설정
        SSI_MODE_MASTER,  //Maser/Slave
        12000000,    //SPI 클럭 주파수
        gSpIDataWidth);     //데이터크기


SSIClk = FSysClk / (CPSDVSR * (1 + SCR))

레지스터를 직접 설정해 보았지만 아무리 조합 해 봐도 12Mhz이상 나오지 않는다. 계산상으로도 그렇고..(CPSR 은 2의 배수이기 때문이다.)
HWREG(SSI0_BASE + SSI_O_CPSR) = 3;
HWREG(SSI0_BASE + SSI_O_CR0) &= ~(0xFF00);

결론은 Luminary의 최대 클럭은 12Mhz이다.


12Mhz일 때 TCP 전송 속도는 1.79Mbps정도 된다. 
[1] iInChip Send: 1.7998 Mbps(3966014 bytes, 16.8116 sec)
iInChip Recv: 1.7996 Mbps(3966014 bytes, 16.8136 sec)
------------------------------------------------------------

[W5200 EVM] 보드 제작

[INTERFACE]/WIZNET_EVM | 2011.09.09 08:30
Posted by nexp
[W5200 EVM] 보드 제작


하드웨어 TCP/IP 스택을 지원하는 W5100의 신버전 W5200 테스트 보드를 제작했다. SPI방식만 지원해서 더 소형 으로 제작 가능하다. SPI 클럭속도가 훨씩 더 빨라지고 8개의 스택을 지원하므로 웹서와 같은 어플리케이션에 저렴하고 간단하게 적용할 수 있다. 




기존 W5100 EVM과 비교해서 크기가 더 작아지고



기존 보드와 핀맵을 동일하게 제작하여 확장보드에 연결 가능하다.



W5200, W5100 확장 테스트 보드 [NET-EVM]



[W5200 EVM] 핀맵 회로도



[iMCU W7100 EVM]  TCP/IP 테스트 -  간단한 임베디드 웹서버 테스트


W7100은 64kbyte 코드 영역외 256kbyte의 데이터 영역 flash를 내장하고 있어 외부 메모리 없이 간단한 웹서버 제작에 상당히 용이하다. MCU하나에 간단한 이더넷 처리하는 어플리케이션으로 최적이지 않을까...

그래서 간단히 웹서버를 올려서 테스트 해 보았다. 기존 LM3S8962 EVM에서 테스트한 웹페이지를 수정하여 테스트 해보았다.
코드는 간단하며 하드웨어 TCP/IP이므로 포트는 미리 열어 두어야 한다. 4개 정도를열어 두면 크게 문제 없다. 참고로 IE에서 웹페이지 요청할때 파일이나 이미지가 많으면 동시에 여러개의 포트를 열어서 요청하므로 포트가 부족하거나 빠른 처리가 되지 않는다면 무시될 수 있다. 소프트웨어 TCP/IP일 경우 메모리만 충분하다면 포트는 무한정 열수 있지만 하드웨어 TCP/IP일 경우 미리 여러 두어야 한다.
void main()
{
 unsigned int cnt = 0;
 SystemInit();  //Initialize iMCU

 init_iMCU();
 Led1Init();
 Led1On();
 Led2Init();
 Led2Off();

 U0_Init(BAUD_115200);
 U0_PutStr("iMCU Serial Test\r\n");
 printf("Start\r\n");

 NetInit();  // Initialize   Network Configuration
 DisplayConfig();
 
 RomFileTest();

 while(1)
 {
  ProcessWebSever(3);
  ProcessWebSever(4);
  ProcessWebSever(5);
  ProcessWebSever(6);
 }


W7100 웹서버 테스트 동영상
웹페이지 접속하면 메인 이미지 출력하고 LED제어 화면에서 간단히 LED제어 하는 예제이다. 포트 4개 열었는데 로딩 속도도 나쁘지않고 동시여러 파일 로딩이 되는것을 확인 할 수 있다.



참고로 LM3S8962 WebServer 테스트 동영상과 비교해 보면  이미지 로딩 속도가  큰 차이가 없음을 확인할 수 있다.


[W7100 EVM] iMCU 테스트 보드 제작 (8051+MAC+Phy+HW TCP/IP 원칩)


iMCU W7100은 hardwired TCP/IP Core 를 내장하고 8051코어가 내장되어 있는 one-chip 인터넷 솔루션 이다. 256KByte Data Flash, 64K Code Flash, 64Kbyte RAM으로 구성된 메모리는 별도의 확장 필요없이 간단한 웹서버를 구현하기에 아주 적합한 솔루션을 제공할것 같다.

내부에 부트로더가 있어 별도의 장비 없이 UART나 이더넷으로 프로그램을 다운로드 할 수 있다. 가격도 저렴(IC Bank에서 6500원에 판매하고 있다.)하니 간단히 임베디드 웹서버 공부하는데 사용하면 좋을것 같다.

데이트시트


회로도

예제소스




[M-Type EVM]  으로 표준핀맵에 맞추어 모든 핀을 빼두었고 서포트로 고정 가능하다.



소형으로 제작하다 보니 스위치 및 LED는 윗면에 배치하고 뒷면으로 W7100을 실장하도록 했다.



확장 테스트 보드





W7100 테스트 동영상
LED테스트



웹서버 테스트








[W5100 EVM] 초간단 TCP서버 테스트


임베디드 시스템에서 이더넷을 통한 네트웍제어는 여러가지 솔루션이 있지만 특히 소형의 임베디드 환경에서는 상당한 부하를 차지한다. 임베디드 환경에서 좀더 쉽고 간단히 이더넷을 제어하기 위해 TCP/IP스택이 하드웨어적으로 처리되는 W5100을 이용하여 초간단 TCP서버를 구축해 보았다.

먼저 소형 [W5100 EVM] 모듈과 AVR128 보드, 확장 테스트보드(EXP-) 를 연결한다.


회로적으로 아래와 같이 연결된다.




소스코드
소스코드는 예전에 작성했던 코드를 좀더 간단하고 사용하기 편하도록 몇가지 수정을 했다.(좀더 자세한 내용은 [AVR TCP Server 테스트 예제 참고)


[config.h]
W5100의 SPI_CS핀은 PD5에 연결되어 있다.
//-----------------------------------------------------------------------------
// W5100 Driver
#define IINCHIP_SpiInit     SPI0_Init
#define IINCHIP_SpiSendData    SPI0_SendByte 
#define IINCHIP_SpiRecvData    SPI0_RxData

#define IINCHIP_CS_BIT     BIT5
#define IINCHIP_CS_DDR     DDRD
#define IINCHIP_CS_PORT     PORTD

#define IINCHIP_CSInit()    Sbi(IINCHIP_CS_DDR, IINCHIP_CS_BIT)
#define IINCHIP_CSon()     Sbi(IINCHIP_CS_PORT, IINCHIP_CS_BIT)
#define IINCHIP_CSoff()     Cbi(IINCHIP_CS_PORT, IINCHIP_CS_BIT)
//-----------------------------------------------------------------------------


[/01_drv/wiznet/mcu/types.h]
SPI모드 제어를 위한 설정
//#define __DEF_IINCHIP_BUS__ __DEF_IINCHIP_DIRECT_MODE__
//#define __DEF_IINCHIP_BUS__ __DEF_IINCHIP_INDIRECT_MODE__
#define __DEF_IINCHIP_BUS__ __DEF_IINCHIP_SPI_MODE__ /*Enable SPI_mode*/


네트웍 초기화
MAC Address는 고유하 번호를 할당받아야 하지만 테스트용으로 충돌 나지 않는 할당하면 된다.
보드의 IP역시 충돌나지 않는 값으로 설정하면되지만 공유기를 사용하는 경우 자동 할당번호 내의 값으로 설정해야 한다.
#define MY_NET_MAC   {0x00, 0x08, 0xdc, 0x00, 0x00, 0x00} // MY Mac Address : 00.08.DC.00.00.00

#define MY_NET_GWIP   {192,  168, 0,    1} //Gateway     : 192.168.0.1
#define MY_SOURCEIP   {192,  168, 0,  101} //보드 IP     : 192.168.0.101
#define MY_SUBNET   {255, 255, 255,   0}

#define MY_LISTEN_PORT  5000  //서버 포트 : 5000


TCP 서버 데이터 처리
ProcessTcpSever() 함수에서 TCP 시퀀스를 폴링으로 처리 한다.
소켓의 상태를 검사 하다 데이터가 수신되면 recv()함수로 수신된 바이트를 읽어오면 된다.
//TCP-Server 처리
void ProcessTcpSever(void)
{
 int len;       
 unsigned char data_buf[TX_RX_MAX_BUF_SIZE];
 unsigned int port = MY_LISTEN_PORT;
 
 switch (getSn_SR(SOCK_TCPS))
 {
 case SOCK_ESTABLISHED:
  //데이터 수신 검사
  if((len = getSn_RX_RSR(SOCK_TCPS)) > 0)    
  {
   //if Rx data size is lager than TX_RX_MAX_BUF_SIZE
   if (len > TX_RX_MAX_BUF_SIZE) len = TX_RX_MAX_BUF_SIZE; 
   
   //데이터 수신
   len = recv(SOCK_TCPS, data_buf, len);   
   
   // send the received data
   //send(SOCK_MYTEST, data_buf, len); 

   EthernetTest(data_buf, len);
  }  
  break;
  
 case SOCK_CLOSE_WAIT:                             
  //If the client request to close
  disconnect(SOCK_TCPS);
  
  m_SokStatus1 = 0;
  break;
  
 case SOCK_CLOSED:
  if(!m_SokStatus1)
  {
   m_SokStatus1 = 1;
  }
  
  //reinitialize the socket
  if(socket(SOCK_TCPS,Sn_MR_TCP, port,0x00) == 0)
  {
   DebugPrint("Fail to create socket.");
   m_SokStatus1 = 0;
  }
  else
  {
   listen(SOCK_TCPS);
  }
  break;
 }
}


TCP클라이언트로 데이터가 수신되면 처리 하는 함수로 테스트 예제로 이번 예제에서 첫번째 데이터로 LED를 제어하고 있다. ->이부분을 원하는 형태로 수정하면 된다.
//수신데이터 처리
void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)
{
 unsigned int i;

 DebugPrint("Read Data[%d]\r\n", len);
 
 for(i=0;i<len;i++)
 {
  //수신데이터 표시
  DebugPrint("%c ", pRcvBuffer[i]);
 }

 //데이터 처리 - LED제어
 if(pRcvBuffer[0] == '1')
 {
  Led1On();
 }
 else if(pRcvBuffer[0] == '0')
 {
  Led1Off();
 }
}



메인함수
//-----------------------------------------------------------------------------
int main(void)
{
 SystemInit();

 //Serial Init
 DebugInit(BAUD_115200);
 DebugPrint("W5100 TCP Server Program\r\n");

 Led1Init();
 Led1On();

 //W5100 Chip Initialize
 //----------------------------
 InitWiznet();
 NetInit();
 //----------------------------

 //설정된 IP 표시
 DisplayConfig();

 while(1)
 {
  //TCP Server Process
  ProcessTcpSever();
 }
}
//-----------------------------------------------------------------------------


W5100 TCP 서버 테스트
실행파일


보드가 서버로 동작하기 때문에 PC프로그램은 Client로 접속에서 데이터 전송할 수 있다. 예제에서는보드 IP인 192.168.0.101로 접속 가능하다.



W5100 테스트 동영상
TCP서버로 동작하는 보드에 접속하여 데이터를 전송해 LED를 제어 하는 예제. '1'을 전송하면 LED On, '0'을 전송하면 LED Off.




[WiFi] Wiz610wi 테스트 보드 제작 - WiFi 테스트


Serial2WiFi 모듈 WIZ610을 테스트 하기 위한 보드를 제작 했다. AP기능이 있으므로 PAD폰, iPhone, 안드로이드폰등의 모바일 기기에서 쉽게 접속하여 무선 이더넷이 가능하다.
모듈의 커넥터가 1.27mm 헤더핀이고 안테나도 고정하기 쉽지 않아 일반테스트 하기에 어려움이 있어 쉽게 테스트 할 수 있도록 제작했다.



WIZ610 WiFi 모듈을 TCP서버로 설정하고 TPC포트로 접속하면 데이터를 쉽게 송수신 할수 있다. 서버쪽 모듈에서는 단순히 WiFi로 전송되는 이더넷 데이터를 시리얼로 송수신 할수 있다. 간단히 테스트 할수 있는 TCP클라이언트 프로그램을 C#으로 제작 했다.



WIZ610 WiFi 모듈 테스트
노트북을 이용하여 TCP서버로 구동되고 있는 원격지의 모듈에 접속해서 보드의 LED를 On/Off하는 예제 작성해 보았다.
WiFi모듈은 특성상 전류를 상당히 많이 소비하기 때문에(500mA정도) 대형 니카드 밧데리로 연결해서 테스트 했다.



테스트 동영상


[WiFi] Wiz610wi 테스트 보드 제작 - 환경 설정



WiFi 솔루션으로 검토중 Wiz610wi 모듈에 대해 조사 해 보았다. WiFi to Serial 솔루션으로 진행하려고 하는 프로젝트에 딱 맞는것 같다.
우선 AP기능을 가지고 있어 별도의 AP없이 임베디드기기 간의 WiFi로 통신이 가능하다. 특히 스마트폰이나 안드로이드 폰간의 통신이 별도 AP없이도 가능하므로 무선 솔루션이 가능하다.



 유선으로 인터넷 데이터를 받아서 WiFi기기들로 전송이 가능하다.



MII인터페이스가 가능하므로 게이트웨이로 동작하는 AP로도 동작 가능하다.





WIZ610wi WiFi to Serial Interface 모듈 제작
1.27mm 핀헤더 커넥터 이기 때문에 땜질하기도 어렵고 여러가지 기능을 부가 하기 위해 보드를 하나 제작 했다.
기본적으로 5V, 3.3V 전원 공급할 수 있는 레귤레이터와 PC에서 디버깅 하기 쉽도록 USB2UART 커넥터를 두고 CAN통신이 가능한 MCU를(STM32) 연결할 수 있는 커넥터를 두었으며 CAN드라이버를 추가 하여 CAN to WiFi를 가능하도록 했다.



Wiznet WiFi모듈 사용에 관련해서 정리해보면
1) Wiz610모듈은 AP로 동작하기 때문에 네트웍 검색해서 접속해서 원하는 값들을 설정하면된다.



2) 네트웍 접속이 여이치 않다면 Wiz610모듈의 HW Trigger모드핀으로 설정가능하다. (시리얼 모드로는 거의 설정할 일이 없다.)
설정이 완료 되면 W610 WiFi 모듈의 IP(192.168.1.254)에 접속해서 데이터를 송수신할 수 있다.



한가지 설정할때 문제가 되었던 것이 있는데... 보안 설정 부분이 변경되었다고 한다.
메뉴얼에서 <GU5_2_1_0_0_12345678>로 설정하는것으로 되어 있는데 <GU5_2_1_0_0_12345678>로 수정하면 된다.
변경된 내용은 아래와 같다고 한다.
- Parameter 추가 전 GU command format : AuthMode_Encrypt[_KeyLength_KeyFormat_.....]
- Parameter 추가 후 GU command format : AuthMode_Encrypt[_DefaultKey_KeyLength_KeyFormat_.....]
(DefaultKey value : 1 ~ 4)

블로그 이미지

nexp

카테고리

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