[ST_MICRO]/STM32H72018. 12. 6. 05:33

STMH7 EVM - USB Mass Storage Host Mode 테스트


STMH7 EVM - USB Mass Storage Host Mode 테스트





STM32H7 EVM 보드에는 USB Host 및 Device를 테스트 할 수 있는 커넥터가 있다.


CubeMX로 USB HOST 모드 설정







USB_HOST 모드설정을 Mass Storage Host Class 로 설정한다.

VBUS 파워 공급을 GPIO로 설정 할 수도 있지만 이번에는 그냥 하드웨어 적으로 Host Mode 고정으로 전원을 강제로 공급하도록 했다.






CubeMX에서  FATFS 설정은 USB Disk로 설정한다.






이렇게 CubeMX 설정으로 마무리 하여 코드를 생성하면 대부분 자동으로 생성이 된다.

생성된 코드에서 수정 할 부분을 usb_host.c 파일의 USBH_UserProcess() 함수에 추가하면 된다.


main 함수에서 주기적으로 수행하면서 처리되는 함수 인데 테스트를 위해 HOST_USER_CLASS_ACTIVE 이벤트에서 디렉토리 내용을 출력하도록 했다.

static void USBH_UserProcess  (USBH_HandleTypeDef *phost, uint8_t id)
{
  /* USER CODE BEGIN CALL_BACK_1 */
  switch(id)
  {
         case HOST_USER_SELECT_CONFIGURATION:
                printf("CONFIGURATION\r\n");
                break;
         case HOST_USER_DISCONNECTION:
                Appli_state = APPLICATION_DISCONNECT;
 
                printf("DISCONNECTION\t\n");
                break;
         case HOST_USER_CLASS_ACTIVE:
                Appli_state = APPLICATION_READY;
                printf("APPLICATION_READY\r\n");

                f_opendir_scan_usb();
                break;
         case HOST_USER_CONNECTION:
                Appli_state = APPLICATION_START;
                printf("CONNECTION\r\n");
                break;
  default:
  break;
  }
  /* USER CODE END CALL_BACK_1 */

}




void f_opendir_scan_usb(void)
{
    DIR dir;
       FILINFO fno;
    TCHAR path[200] = "0:";

    res = f_mount(&fat32,path,0);
    printf("USB Mount : res f_mount : %d\r\n",res);
    if (res == FR_OK)
    {
    res = f_opendir(&dir,path);
        printf("res f_open : %02X\n\r",res);
        if (res == FR_OK)
        {
        while(1)
        {
            char *fn;
            res = f_readdir(&dir, &fno);
            if (res != FR_OK)
                printf("res = %d f_readdir\n\r", res);
            if ((res != FR_OK) || (fno.fname[0] == 0))
                break;
      */
      fn = fno.fname;
            printf("%c%c%c%c ",
                ((fno.fattrib & AM_DIR) ? 'D' : '-'),
                ((fno.fattrib & AM_RDO) ? 'R' : '-'),
                ((fno.fattrib & AM_SYS) ? 'S' : '-'),
                ((fno.fattrib & AM_HID) ? 'H' : '-') );
            printf("%10d ", fno.fsize);
            printf("%s/%s\n\r", path, fn);
        }
        }
        res = f_mount(0,path,0);
        printf("USB Unmount : res f_mount : %02X\n\r",res);
    }

}


테스트 해 보면 STM32H7 EVM 보드에 USB 메모리 스틱을 연결하면 인식해서 메모리 스틱의 파일 목록을 보여 주고 있다.




Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2013. 5. 4. 23:00

VNC1L MP3 EVM - USB 메모리스틱의 파일 읽고 쓰기 테스트

 VNC1L MP3 EVM - USB 메모리스틱의 파일 읽고 쓰기 테스트

 

 

 

 

파일 쓰기 테스트

1) 파일 생성 -> OPW 파일명

ex) opw test.txt¶

 

2)데이터 쓰기 -> WRF 쓸바이트 수

->데이터

ex)wrf 5¶

12345

 

3)파일닫기 -> CLF 파일명

ex)clf test.txt¶

 

D:\>dir

 

A.TXT
D:\>opw test.txt

 

wrf 5
12345

D:\>

 

clf test.txt 

 

D:\>dir

 A.TXT
TEST.TXT

 

 

 


 

파일 읽기 테스트

1) 전체 파일 읽기 -> RD 파일명

ex)rd test.txt¶

 

D:\>
12345D:\> 

 

 

 

 

VNC1L Command List

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2013. 5. 4. 22:00

VNC1L MP3 EVM - USB Host Test Module (MP3 Player) 보드 제작

 VNC1L MP3 EVM - USB Host Test Module (MP3 Player) 보드 제작

 

 

USB Host 기능을 가진 VNC1L 의 테스트 보드를 새롭게 제작했다. 기존 VNC1L EVM PCB를 모두 소진해서 새로운 형태로 제작 해볼까 하다 VNC1L의 MP3 플레이 기능을 테스트 해보기위해 제작해 보았다.

 

 

 

 

 

VS1053 (VS1033) MP3 모듈을 연결하면 아주 간단하고 USB메모리 스틱을 지원하는 MP3플레이어를 제작할 수 있다.

  

 

 

 

 

 

 

VNC1L MP3 EVM 회로도

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[MODULE]/MP32012. 7. 1. 23:00

[VNC1L] USB Memory MP3 Player 테스트

[VNC1L] USB Memory MP3 Player 테스트

 

 

 

USB Host 기능이 있는 VNC1L 모듈 VS1033 모듈을 이용하여 USB Memory Stick MP3 Player을 제작했다.

FTDI에서 제공하는 기본 펌웨어중 VMSC1FUL를 이용하면 USB 메모리스틱을 지원하는 MP3모듈을 쉽게 제작할 수 있다.

 

 

 

VNC1L 모듈 핀맵 회로도

 


 

 

 

VS1033 모듈 핀맵

XDCS 핀은 GND처리 해 주면 된다.

 

 

테스트는 USB2UART 모듈을 이용해 터미넝창에서 명령어를 보내면 mp3파일을 출력할 수 있다.

조그만 마이컴을 이용하여 시리얼 포트로 제어명령을 보내도 원하는 동작을 구현할 수 있다.

 

아래는 간단히 mp3을 플레이 하는 예제이고 시리얼 포트로 출력 되는 메세지이다.

 

Ver 03.68-123VMSC1F On-Line:
Device Detected P2
No Upgrade
D:\>
D:\>
Playing YOUN-S.MP3

 

 

T $00 $00
T $01 $00
T $02 $00
T $03 $00
T $04 $00
T $05 $00
T $06 $00
Stopped
D:\>
Playing YOUN-S.MP3

 

 

VMSC(VMUSIC) 명령어
 - Play  File* (VPF)
 - Stop (VST)
 - Play  All  Tracks (V3A  /VRA)
 - Skip  Forward (VSF)
 - Skip Back (VSB)
 - Set  Volume* (VSV)

 

 

 


 

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2012. 7. 1. 19:00

[VNC1L-A1] USB Host - 메모리스틱의 mp3파일 읽어오기

[VNC1L-A1] USB Host - 메모리스틱의 mp3파일 읽어오기

 

 

 

 

1)DIR명령으로 파일 목록을 읽어온다.

 

 


 

2)DIR file 명령을 하면 파일의 크기를 알 수 있다.

 

YOUN-S.MP3 $8D $B5 $01 $00
D:\>

 

-> 실제적으로 하위바이트가 먼저 출력된다.

00 01 B5 D8

 

 


 

 

3)OPR(Open File for Read) 명령으로 파일을 연다.

 

 


 

4)RDF(Read From File) 명령으로 원하는 크기만큼의 데이터를 읽어온다.

mp3파일 512개씩 읽어오는 테스트를 했다.

?l2<0>o[ZD:\>

 

 

테스트 -> USB 메모리 스틱 MP3 플레이어 참고

Posted by nexp

댓글을 달아 주세요