본문 바로가기

[INTERFACE]/USB

USB 복합장치 제작

USB HID 복합장치 제작 하려고 하고 있다.
15년전에 제작 했던 자료를 꺼내서 해 보려고 했더니 너무 옛날 보드라 관련 자료도 없고 개발환경도 너무나 달라져서 별로 도움이 되지 않는다.

예전에는 USB 시퀀스 잘 알고 있었는데... HID 키보드, 마우스, 조이스틱 (복합장치)등의 장치를 잘 다루었는데..
새로하려니 쉽지가 않다.

우선 기존에 잘 동작 하던 보드에 레포트 디스크립터만 수정하면 되지 않을까?
-> 잘안된다.



TI 자료가 잘 정리되어 있는것 같다.

디스크립터 툴도 제공한다. 우선 기존에 만들었던 TI MSP430F5510 EVM 보드로 테스트 해보자




수정된 디스크립터를 이용해서 컴파일 했는데...  Custom HID는 잡히는데 키보드는 인식을 하지 못한다.
이상하다.
키보드 디스크립터만 만들어서 테스트 해보자
여전히 안된다.

뭐가 문제 이지?
코드에 수정해야 할부분이 또 따로 있나?
되는 코드와 안되는 코드를 비교해보자.

PID 부분이 다르다. PID를 바꾸니 잘 동작한다.
#define USB_VID               0x2047    // Vendor ID (VID)
#define USB_PID               0x0315        // Product ID (PID)

PID가 바뀐다고 안될이유는 없는데...
기존 드라이버를 지워보자

장치관리자에서 드라이버를 삭제하고 새로인식하니 잘 동작한다.
처음에 디스크립터 바꾸면서 잘못된 드라이버가 로딩되면서 문제가 된것 같다.



장치관리자에서 키보드, 커스텀 HID 복합 장치가 등록 되는것을 확인 할 수 있다.







기존 키보드 예제로 테스트 하려고 했는데...
HID 수신이 안된다.

그래서 HID 예제로 테스트 했다.
USB_Cconfig 폴더 내용만 복사하면 된다.
G:\DOC\MCU\MSP430\MSP430USBDevelopersPackage_5_20_06_02\MSP430_USB_Software\MSP430_USB_API\examples\HH1_hidDemo2hidDemo

HID는 TI제공 프로그램을 이용했고 HID로 'a' 'b' 보내면 LED 온 오프하고 'c'보내면 1초뒤에 키 값을 전송하도록 했다.



기본틀은 구성 됬고 필요에 따라 수정만 하면 될것 같다. 

반응형