STM32F103RB는 USB(Universal Serial Bus) 통신 프로토콜을 지원한다. USB는 직렬 포트, 병렬 포트 등 다양한 인터페이스를 대체하여 주변기기와 컴퓨터의 연결을 표준화하기 위한 용도로 설계 되었다. USB는 패킷 단위로 데이터를 전송하며 패킷의 종류에는 토큰 패킷, 데이터 패킷, 상태 패킷이 있다. 각각의 패킷은 데이터에 대한 메타정보(헤더), 실제 데이터, 데이터 송수신 성공여부에 대한 정보를 담고 있다.
USB에 대한 자세한 내용은 다음의 블로그글을 참고하기를 바란다. 우리가 알아야할 점은 USB 통신이 고속으로 이루어진다는 점, 핀의 종류로 VBUS, GND, SHEILD, D+, D-가 있다는 점 정도만 알면 된다. 대략적으로 다음과 같이 회로를 구성할 것이다.
https://blog.naver.com/lovinghc
Hyunchul.Sung : 네이버 블로그
자기소개가 없습니다.
blog.naver.com
USB 단자
USB Mini-B female 단자인 U-M-M5SS-W-2(C91144)를 사용하였다. 데이터시트 등을 참고해야 겠지만 필요에 따라서는 USB-A, USB-C 등 다른 타입의 단자를 사용해도 될 것이다.
VBUS
UART와 마찬가지로 과전류를 방지하기 위한 폴리 퓨즈(0603L035YR(C207013))와 100nF의 바이패스 커패시터를 연결해주었다.
USB D+/D-
UART에서 데이터선에 과전류 방지를 위해 저항을 연결해준 것과 마찬가지로 22Ω 저항을 연결해주었다. 고속으로 통신이 이루어지는 만큼 너무 높은 저항을 연결하게 되면 신호에 지연이 발생한다.
USB 통신에서는 USB 호스트는 통신라인에 걸린 전압을 바탕으로 연결 여부를 판단한다. 만약 UART 통신에서 pull-down 저항을 연결해준 것처럼 기준 신호를 정해주기 위해서 pull-up 저항을 연결하게 되면 문제가 발생한다. 호스트는 통신선의 HIGH 값을 인식하게 되면 기기가 연결되었다고 생각하고, 초기화 통신을 요청하게 되는데, 정작 장치가 준비되지 않아서 응답을 하지 않게 되면 장치를 제대로 인식하지 못하는 문제가 발생한다. 이를 위해서 P-MOSFET을 이용하여 GPIO로 제어를 하게 되면 확실하게 장치가 준비되었다는 것을 호스트에 알려줄 수 있게 된다. P-MOSFET 소자로 AO3401A(C347476)를 선택하였다. N-MOSFET을 사용하지 않는 이유는 VGS > VTH 상태를 유지해야 하는데, 데이터 선의 경우 0.3V ~ 2.8V로 스윙하기 때문에 스위치가 진동할 수 있다. 게이트 저항으로 330Ω 저항을 선정하였으며(과전류 방지), 10KΩ 저항을 풀업 저항으로 사용하였다.
과전류 방지를 위하여 UART에서 해준 것처럼 PD2E001DRLR(C150526)를 사용하였다.
쉴드 핀
USB에는 EMI 방사 대비용으로 330Ω 저항, 100nF 커패시터를 많이 사용한다.
최종적으로 구성한 회로는 다음과 같다.
다음 글에서는 나머지 핀들에 대한 인터페이스에 대해서 다루고 프로젝트에 대한 글을 마무리하겠다.
'뭐라도 만들어보자!!( 프로젝트 ) > MCU 보드 제작기' 카테고리의 다른 글
11. MCU 보드 제작기 - 나머지 핀들 연결(확장 IO) + 제작 완료 (0) | 2025.02.27 |
---|---|
9. MCU 보드 제작기 - UART 인터페이스 (0) | 2025.02.27 |
8. MCU 보드 제작기 - LED, 스위치 (0) | 2025.02.25 |
7. MCU 보드 제작기 - JTAG/SWD 인터페이스 (0) | 2025.02.24 |
6. MCU 보드 제작기 - 외부 발진 회로 (0) | 2025.02.24 |