[ST_MICRO]/STM32F43x2015.04.12 23:00

[STM32F439 LCD EVM] USB Host 모드를 이용한 TFT LCD Test

[STM32F439 LCD EVM] USB Host 모드를 이용한 TFT LCD Test




STM32F439 EVM 보드에는 USB 디바이스 및 호스트를 테스트 할 수 있는 커넥터가 있다.

STM32F439의 USB호스트 기능을 이용하여 USB 메모리 스틱에 있는 BMP파일을 TFT-LCD에 출력 할수 있는 테스트를 진행해 보았다.



USB 메모리스틱의 BMP파일을 TFT-LCD에 출력하는 테트스 동영상


Posted by nexp
[AVR]/AT90USB2012.01.25 23:00

[AT90USB1287-EX] USB Host 테스트 - 메모리 스틱의 이미지 파일 TFT LCD에 출력하기

[AT90USB1287-EX] USB Host 테스트 - 메모리 스틱의 이미지 파일 TFT LCD에 출력하기


AT90USB1287은 USB 호스트 기능이 있어 USB 메모리 스틱의 파일을 읽거나 쓸수 있다.


USB 메모리 스틱의 파일 리스트를 읽어 LCD에 출력하고 bmp파일을 차례로 TFT LCD에 출력하는 예제를 작성해 보았다.





AT90USB1287 USB Host 테스트 동영상
USB메모리 스틱이 인식되면 BMP파일을 찾아서 순서대로 출력하는 예제를 작성해 보았다.





AT90USB1287 USB 메모리스틱 테스트 예제 소스코드
int main(void)
{
 //시스템 초기화
 SystemInit();
 
 //LED포트 초기화
 Led1Init();
 Led1On();
 Led2Init();
 Led2On();

 //UART Init
 DebugInit(BAUD_57600);
 DebugPrint("[AT90USB1287-EX] Test Program - USB Host MS\r\n");

 //TFT LCD 초기화
 TftLcd_Init();         
    Disp_Full_Color(White);
    Delay(500); 

 PutString("[AT90USB1287] Host MS Test",1,0,Red,0);

 //USB Host초기화
 usb_task_init();
 host_ms_task_init();
 nav_reset();

 while(1)
 {
  usb_task();
  host_ms_task();
  
  //메모리스틱 파일 처리
  ProcessMSTest();
 }
}



AT90USB1287 USB 메모리스틱 호스트 처리 함수
void ProcessMSTest(void)
{
 char name[10] = "a_1.bmp";
    unsigned char cnt = 0;

 unsigned char i;
 
 // USB인식되면
 if( !Is_device_disconnection() )
 {
  if(ms_connected == 1)
  {
   if(mounted == FALSE)
   {
    if(nav_drive_set(host_selected_lun) == FALSE)
    {
     mounted = FALSE;
     return;
    }
    
   //FAT 초기화
    if(nav_partition_mount()==FALSE)
    {
     mounted = FALSE;
     return;
    }
    else
    {
     mounted = TRUE;
     
     //파일 리스트 출력
     USB_FileNameRead();

     Delay(100);
     
     //MS에서 파일 읽어와 TFT에 출력
        while( 1)
        {
      if(cnt>gMaxFileCnt)cnt=0;
      sprintf(name, "a_%d.bmp", cnt);
      Draw_BitMap(name);
      cnt++;
        }
     return;
    }
   }
  }
  else mounted = FALSE;
 }
 else mounted = FALSE;
}

Posted by nexp
[MSP430]/MSP430F5x2011.08.11 12:03

[MSP430F5510 EVM] USB HID 테스트

[MSP430F5510 EVM] USB HID 테스트



MSP430F5510 을 이용하여 HID테스트를 했다. HID를 이용하면 USB디바이스 드라이버 제작할 필요없이 고속의 USB통신을 할수 있다. 간단히 HID인식해서 데이터 송수신 하는 예제를 작성해 보았다.
저렴하고 소형의 MCU임에도 불구하고 USB데이터 처리는 빠르고 쉽게 처리되었고 상용 제품에 적용하기에 좋은것 같다.

HID테스트용 PC프로그램 제작



MSP430F5510 HID USB데이터 송수신 테스트 소스코드

VOID main(VOID)
{
    //시스템 초기화
 SystemInit();
   
 //init USB
 USB_init();

 Led1Init();
 Led1Off();
 
 Led2Init();
 Led2Off(); 
   
    // Enable various USB event handling routines
    USB_setEnabledEvents(kUSB_VbusOnEvent+kUSB_VbusOffEvent+kUSB_receiveCompletedEvent
                          +kUSB_dataReceivedEvent+kUSB_UsbSuspendEvent+kUSB_UsbResumeEvent+kUSB_UsbResetEvent);
   
    // See if we're already attached physically to USB, and if so, connect to it
    // Normally applications don't invoke the event handlers, but this is an exception. 
    if (USB_connectionInfo() & kUSB_vbusPresent)
      USB_handleVbusOnEvent();

    while(1)
    {
        BYTE i;
        // Check the USB state and directly main loop accordingly
        switch(USB_connectionState())
        {
           case ST_USB_DISCONNECTED:
    // Enter LPM3 w/ interrupts enabled
                 __bis_SR_register(LPM3_bits + GIE);              
                _NOP();                                             
                break;
               
           case ST_USB_CONNECTED_NO_ENUM:
                break;
               
           case ST_ENUM_ACTIVE:
    // Enter LPM0 (can't do LPM3 when active)
                __bis_SR_register(LPM0_bits + GIE);              
                _NOP();

     //------------------------------------------------------------------------------
    //USB데이터 송수신
                // Exit LPM on USB receive and perform a receive operation
                if(bHIDDataReceived_event)                             
                {
      // Holds the new addition to the string                 
      char pieceOfString[MAX_STR_LENGTH] = "";          
                 
                  // Add bytes in USB buffer to theCommand
      // Get the next piece of the string
                  hidReceiveDataInBuffer((BYTE*)pieceOfString,MAX_STR_LENGTH,0);                
                  strcat(wholeString,pieceOfString);    
                  // Add it to the whole
                  hidSendDataInBackground((BYTE*)pieceOfString,strlen(pieceOfString),0,0);     
                 
      
     if(wholeString[0] == CMD_LED2_ON)
     {
       Led2On();
     }
     else if(wholeString[0] == CMD_LED2_OFF)
     {
       Led2Off();
     }     
       else if(wholeString[0] == CMD_LED1_ON)
                    {
                      Led1On();
                    }
     else if(wholeString[0] == CMD_LED1_OFF)
                    {
      Led1Off();
                    }
                    else if(wholeString[0] == CMD_READ_DATA)
                    {                     
                      //USB데이터 전송
       hidSendDataInBackground((BYTE*)outBuffer,63),0,0);
                    }
                  bHIDDataReceived_event = FALSE;
                }
                break;
   //----------------------------------------------------------------------------------
   
           case ST_ENUM_SUSPENDED:
                __bis_SR_register(LPM3_bits + GIE);          // Enter LPM3 w/ interrupts
                break;
               
           case ST_ENUM_IN_PROGRESS:
                break;
               
           case ST_NOENUM_SUSPENDED:
                __bis_SR_register(LPM3_bits + GIE);               
                break;               
               
           case ST_ERROR:
                _NOP();
                break;
               
           default:;
        }
   
    }  // while(1)
} //main()



MSP430F5510 HID테스트 동영상

Posted by nexp
[MSP430]/MSP430F5x2011.08.11 11:25

[MSP430F5510 EVM] 보드 제작

[MSP430F5510 EVM] 보드 제작


MSP430F5510은 TI사의 저전력 MSP430코어와 USB기능을 가지고 있어 저전력의 USB기능이 필요 할때 유용하게 사용할 수 있다. 48핀 LQFP패키지라 소형이고 저렴한 가격으로 적용할 때가 많을것 같아 테스트 보드로 제작해 보았다.




48핀 LQFP 타입의 MSP430F5510



[SM-Type EVM]   타입으로 제작해 핀맵이 호환되며 USB2UART, ZIGBEE2UART등의 모듈을 연결 할 수 있다.



확장 테스트 보드




MSP430F5510 EVM 보드 회로도






Posted by nexp
[INTERFACE]/USB_FTDI2011.07.17 12:49

[FT2232H EVM] 보드 제작

[FT2232H EVM] 보드 제작





USB 2.0 High Speed를 지원하는 FT2232테스트 보드를 제작 했다. 기존 [FT2232D EVM] 보드, [FT245  EVM] 보드   와 핀맵이 호환 되도록 했다.



기존 보드와 동일하게 FT2232H의 모든 핀은 빠져 있고 EEPROM도 실장되어 있다.




[FT2232H EVM] 회로도
핀맵



IO전원 설정



Posted by nexp