기본적으로는 USB Host MSC 작업되어 있는 것을 기반으로 작업합니다.
$PROJ_DIR$\..\..\Libraries\CMSIS\Device\ST\STM32F2xx\Include
$PROJ_DIR$\..\..\Libraries\STM32F2xx_StdPeriph_Driver\inc
$PROJ_DIR$\..\..\src
$PROJ_DIR$\..\..\src\USB-Host-HID\inc
$PROJ_DIR$\..\..\Libraries\STM32_USB_OTG_Driver\inc
$PROJ_DIR$\..\..\Libraries\STM32_USB_HOST_Library\Core\inc
$PROJ_DIR$\..\..\Libraries\STM32_USB_HOST_Library\Class\MSC\inc
$PROJ_DIR$\..\..\Libraries\STM32_USB_HOST_Library\Class\HID\inc
|
preprocessor 부분은 위와 같이 변경합니다.
USE_STDPERIPH_DRIVER USB_TEST USB_TEST_HOST_HID
|
USB_TEST_HOST_HID로 define을 해서 빌드하도록 합니다.
위 그림이 망고 M32F2의 USB Host 관련 부분입니다.
PB14, PB15를 사용합니다.
데이타 쉬트에서 내용을 보면 HS로 High Speed 모드로 동작하는 부분임을 알 수 있습니다.
PB 12~15가 HS와 연관이 있는데 PB12와 PB13은 ULPI 모드와도 연관이 있습니다.
ULPI 모드로 동작할 경우에는 상당히 많은 핀을 연결해야 합니다.
현재 망고보드에서는 사용하는 방식은 아닙니다.
PB12와 PB13이 그 외에도 HS_ID와 HS_VBUS로도 동작할 수 있는데
이 부분은 일단 사용하지 않도록 합니다.
결국 PB14, PB15 두 핀만 설정하면 됩니다.
위 내용은 MSC의 경우와 동일하기 때문에 특별히 수정되는 부분은 없습니다.
모든 내용을 변경하고 빌드해서 수행하면 아래의 결과를 얻을 수 있습니다.
2번을 선택해서 초기화를 수행합니다.
USB 마우스를 장착하면 위와 같은 메시지가 출력됩니다.
보드의 KEY1을 누르면 마우스 처리를 시작하게 됩니다.
마우스 움직임에 따라서 offset 값이 출력됩니다.
마우스 버튼을 누르면 이 동작도 출력이 됩니다.
키보드를 장착해 보았습니다.
역시 보드의 KEY1을 누르면 키보드 처리를 시작하게 됩니다.
그런데 입력된 결과가 조금 이상합니다.
a를 입력했을 때 q가 찍히고, m을 입력했을 때 ','가 찍힙니다.
q를 입력하면 a가 되네요.
vwxyz는 모두 다 이상하네요.
왜 이런 결과가 나타나는 지는 좀더 분석이 필요해 보입니다.
내용