STM32F746G-DISCO 보드에는 USB FS/HS 단자가 있습니다.
이중 FS 포트를 사용하여 USB Device Mode에서 마우스 테스트를 해 보았습니다.
STM32CubeIDE에서 새 프로젝트를 생성 후 핀 초기화 후 SYS/USART1/I2C3/USB_OTG_FS/USB_DEVICE만 설정하였습니다.
USB_DEVICE관련 설정은 기본값을 사용하였습니다.
가장 중요한 설정이 클럭 설정인데 USB 디바이스는 48MHz를 사용해야 합니다.
소스코드를 빌드하여 보드에 다운로드를 해 보았습니다.
정상적으로 다운로드가 된것을 확인한 후 Micro USB 케이블을 CN13(USB_FS) 단자에 꽂습니다.
아래와 같이 윈도우 PC에서 STM32F746G-DISCO 보드를 정상적인 HID로 인식하였습니다.
제어판의 '장치 및 프린터'를 보면 'STM32 Human Interface' 이름의 마우스가 추가된 것을 확인할 수 있습니다.
또는 설정의 장치 항목을 보면 아래와 같이 등록되어져 있습니다.
STM32F746G-DISCO 보드가 HID mouse 장치로 등록만되어 있을 뿐 다른 기능은 추가하지 않아 실질적인 마우스로써의 기능은 없습니다. 그래서 간단히 터치값을 읽어 들여 마우스 이동 기능을 추가하여 동작시켜 보았습니다.
아래는 HID를 사용하여 PC로 데이터를 전송하기 위해 제공되는 함수입니다.
USBD_HID_SendReport(&hUsbDeviceFS, HID_Buffer, sizeof(HID_Buffer));
전송되는 데이터는 HID_Buffer[4]를 할당하여 사용하는데 아래와 같은 형식으로 버퍼가 사용됩니다.
HID_Buffer[0] - 0:왼쪽 버튼, 1:오른쪽 버튼
HID_Buffer[1] - X 축으로 이동한 값
HID_Buffer[2] - Y 축으로 이동한 값
HID_Buffer[3] - 휠 이동한 값
HID_Buffer[0], HID_Buffer[3]은 0을 넣어주고 터치로부터 읽어 들인 값을 이전 위치 값과 비교하여 HID_Buffer[1], HID_Buffer[2]에 넣은 후 USBD_HID_SendRequest 함수를 사용하여 데이터를 PC로 전송하였습니다.
아래는 간단히 마우스 이동을 테스트 해 본 영상입니다.
'Hardware > STM32' 카테고리의 다른 글
[STM32F746G-DISCO] USB MSC로 사용하기 (Device Mode) (0) | 2024.07.16 |
---|---|
[STM32F746G-DISCO] USB 키보드로 사용하기 (Device Mode) (0) | 2024.07.15 |
[STM32F746G-DISCO] STemWin 사용하기 (Graph widget) (0) | 2024.07.14 |
[STM32F746G-DISCO] 칩 내부 온도센서 사용하기 (0) | 2024.07.14 |
[STM32F746G-DISCO] STemWin 사용하기 (Image widget) (0) | 2024.07.13 |
댓글