[INTERFACE]/USB2008. 1. 1. 09:47

[AT90USB1287 EVM]AVR + USB Host/Device Controller 보드 제작

[AT90USB1287 EVM]AVR + USB Host/Device Controller 보드 제작

[Mega128 EVM] (http://nexp.tistory.com/7) 은 Atmega128과 At90USB1287을 사용할 수 있도록 PCB를 제작 했다.
At90USB1287을 이용하여 보드를 조립 했는데.... USB Host로 구동해 메모리 스틱의 내용을 읽어 오도록 구성 해 보았다.








테스트 동영상
W5100과 At90USB1287을 이용하여 임베디드 FTP Server를 구현하고 임베디드 USB호스트를 이용하여 파일을 저장하도록 하였다.
 


Posted by nexp

댓글을 달아 주세요

  1. 김재훈

    혹시 OTG기능으로 동작하여 USB로 데이터를 읽어보셨나요? 요즘 계속 스터디 중인데 단순히 레지스터설정으로 아닌

    다른게 있는 거같은데 간단한 예제 코드정도 받을수있을런지요?

    2010.06.08 16:41 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/AVR_W5100_EVM2007. 12. 28. 01:34

[Mega128 EVM] TCP Test Program

사용자 삽입 이미지





Mega128 EVM의 이더넷 제어는 W5100를 이용하고 우선 간단히 테스트 하기 위해 속도는 좀 느리지만 SPI모드로 구동하여 테스트 해 보았다.

사용자 삽입 이미지















 

이더넷 제어 관련 파일은 ../mega128_evm/01_drv/wiznet 폴더에 있고 w5100.c, wiznet.c파일을 추가하면 된다.

사용자 삽입 이미지












네트웍 MAC, IP..등의 초기화 설정은 main에서 간단히 설정할 수 있다.

//-----------------------------------------------------------------------------
#define MY_NET_MAC   "\x00\x08\xDC\x00\x00\x00"  // MY Mac Address : 00.08.DC.00.00.00
#define MY_NET_SIP   0xC0A80003 // MY Source IP     : 192.168.0.3
#define MY_NET_GWIP   0xC0A80001 // MY Gateway IP    : 192.168.0.1
#define MY_CH_DESTIP  0xC0A80002 // MY Destination   : 192.168.0.2
      :

예제 소스코드

예제는 TCP Server로 구성하고 클라이언트로 부터 전송되는 데이들 받아서 그값에 따라 Mega128 EVM의 LED를 제어하도록 하였다. 자세한 설명은 추후에 계속....

void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)

{

        unsigned int i;

        if(pRcvBuffer[0] == CMD_LED_OUT)

        {

                if(pRcvBuffer[1] & 1)Led1On();

                else Led1Off();

                if(pRcvBuffer[1] & 2)Led2On();

                else Led2Off();

        }

               

        DebugPrint("Read Data[%d]\r\n", len);

       

        for(i=0;i<len;i++)

        {

                //if(i%16==0)DebugPrint("\r\n");

                DebugPrint("%02X ", pRcvBuffer[i]);

        }

        DebugPrint("\r\nReceive OK!\r\n");

}

//TCP-Server 처리

void ProcessTcpSever(void)

{

        int len;                                                

        unsigned char data_buf[TX_RX_MAX_BUF_SIZE];

        uint16 port = MY_LISTEN_PORT;

       

        switch (getSn_SR(SOCK_TCPS))

        {

        case SOCK_ESTABLISHED:

                //check Rx data

                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;       

                        //read the received data

                        len = recv(SOCK_TCPS, 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;

                        DebugPrint("Connect.");

                }

               

                //reinitialize the socket

                if(socket(SOCK_TCPS,Sn_MR_TCP, port,0x20) == 0)

                {

                        DebugPrint("Fail to create socket.");

                        m_SokStatus1 = 0;

                }

                else

                {

                        listen(SOCK_TCPS);

                }

               

                break;

        }

}

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



터미널 창의 제어 메세지

사용자 삽입 이미지














호스트 프로그램
호스트 프로그램은 VB를 이용하여 간단히 TCP클라언트로 구성하고 서버로 접속해서 LED를 제어하도록 작성하였다.

사용자 삽입 이미지


실행 동영상
호스트 측의 LED버튼을 클릭하여 EVM보드의 LED를 제어하고 있다.

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/AVR_W5100_EVM2007. 11. 25. 20:40

[Mega128 EVM] LED Control - 개발환경 설정

[Mega128 EVM] LED Control


사용자 삽입 이미지



프로젝트 소스 :



프로젝트 파일 구조는 00_hal 하드웨어 의존 관련 파일, 01_drv의 하드웨어 독립의 Driver관련 파일,  ex01_led... application 파일 형태로 별도의 디렉토리가 구분된다.

mega128_evm.zip파일은 시스템 관련 파일로 00_hal, 01_drv로 구성이 되며 앞으로 드라이버 파일이 추가되거나  초기화 설정파일이 변경되면 추구 업데이트 되며... 모든 예제에 적용할 수 있도록 구성하였다.


프로젝트 환경은 AVR Strudio를 이용하였고, 하드웨어 시스템을 초기화하는 System.c를 반드시 포함해서 컴파일 해야 한다.

Serial을 사용한다면 Serial.c를 포함하면 된다.




[Mega128 EVM] 에는 보드 자체에 간단히 테스트 할 수 있는 LED가 PD6, PD7포트에 각각 연결되어 있다.
이 포트는 PWM기능이 있어 LED의 불 빛을 서서히 점등하는 등의 예제 테스트에도 사용될수 있다.

/00_hal/config.h 파일에 하드웨어 의존적인 LED제어 관련 포트를 설정하도록 되어 있다.

#define LED1_BIT   BIT6
#define LED1_PORT   PORTD
#define Led1Init()   Sbi(DDRD, LED1_BIT)
#define Led1On()   Cbi(LED1_PORT, LED1_BIT)
#define Led1Off()   Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()  Tbi(LED1_PORT, LED1_BIT)

#define LED2_BIT   BIT7
#define LED2_PORT   PORTD
#define Led2Init()   Sbi(DDRD, LED2_BIT)
#define Led2On()   Cbi(LED2_PORT, LED2_BIT)
#define Led2Off()   Sbi(LED2_PORT, LED2_BIT)
#define Led2Toggle()  Tbi(LED2_PORT, LED2_BIT)



LED 회로도



소스코드
LED를 주기적으로 점등하는 예제로 가장 간단하게 구성해서 쉽게 테스트 해 보았다.

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

// Main Routine

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

int main(void)

{

        //Init System

        SystemInit();

        //Init LED

        Led1Init();

        Led2Init();

        Led2On();

        Led1Off();

        while(1)

        {

                Led1On();

                Led2Off();

                Delay(300);

                Led1Off();

                Led2On();

                Delay(300);

        }

}

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


실행 동영상

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/AVR_W5100_EVM2007. 11. 25. 10:47

[Mega128 EVM]보드 관련 자료

[Mega128 EVM] 보드 관련자료

사용자 삽입 이미지



보드 구성
PCB상에서 AVR Mega128, AT90USB1287를 적용할 수 있도록 구성하였고 전원은 3.3V, 5V 설정할 수 있도록 했다.
이더넷는 Ethernet MAC + Phy + Hward Wired TCP/IP Chip W5100을 이용하여 소프프트웨어 부담이 없이 이더넷을 적용할 수 있도록 했다. SPI, BUS direct/indirect모드로 제어할 수 있도록 설정할 수 있다.
USB to Serial(CP2101)칩을 두어 간단히 시리얼 통신이 가능하다.
보드에 디버깅용 LED 2개와 1개의 스위치를 두어 보드만으로 간단히 테스트 가능하다. LED는 PWM, SW는 INT단자에 연결되어 PWM및 INT테스트 가능하다.



회로도



Application Expention Board





PCB수정사항
회로 틀린것을 알고 있었지만 급하게 발주하다보니 수정할 시간이 없었다. 차후 버젼은 좀더 기능 올리고 수정 사항 추가 해야 겠다.
W5100쪽의 리셋핀이 연결되지 않았다. 59(RESET)번핀과 JP1 5번핀 연결요망, 60번핀이 NC이므로 59, 60번핀을 리셋으로 연결하면 된다.


W5100의 크리스탈의 C24, C25사이에 1M옴 저항이 필요 하다.  없으면 클럭이 불안해 지는군..

 


SPI Data Flash 수정
Data Falsh AT45DBxx를 사용하려면 SPI의 MISO핀이 중복으로 연결되어 수정이 필요하다.
급하게 하다보니 실수한 곳이 많다... ㅠㅠ

Posted by nexp

댓글을 달아 주세요

[AVR]/Mega1282007. 11. 24. 01:06

[Mega128 EVM] AVR + W5100 Ethernet EVM Board

[Mega128 EVM] AVR + W5100 Ethernet EVM Board

사용자 삽입 이미지
 

Atmega128 EVM을 새롭게 만들었다. 크기는 좀 크졌지만 메모리(SRAM), 이더넷, S-Flash, USB를 추가 하여 좀더 다양한 어플리케이션에 적용가능하도록 했다. RTOS나 이더넷 예제등을 테스트 해 보기에 적합하다.

가장 큰 특징은 At90USB1287 (USB OTG)를 테스트 할수 있도록 핀을 Mega128과 교체 가능하도록 되어 있어 USB Host OTG를 테스트 하기에 적합하다.

기능으로 USB(Serial or OTG), Ethernet, S-Flash, SRAM, S/W. 2-LED, USB-Serial Boot Loader 등이 있다.


사용자 삽입 이미지

사용자 삽입 이미지




사용자 삽입 이미지


사용자 삽입 이미지



AVR Mega128 Ethernet 확장보드
사용자 삽입 이미지

Posted by nexp

댓글을 달아 주세요

  1. Terry Kim

    EVM으로 구매하고 싶은데요. sdkim365@gmail.com

    2009.07.01 11:28 [ ADDR : EDIT/ DEL : REPLY ]