이전 글에서 EMIF02-USB03F2에 대해서 알아 봤습니다.
이글은 이 칩에 연결된 VBUS_FS(PA9), OTG_FS_ID(PA10)에 대해서 알아 보려고 합니다.
1. VBUS_FS(PA9)
VBUS오 연결되는 있는 PA9핀은 VBUS 신호를 감지하는 역할을 합니다.
Device_only 모드에서는 Host USB(PC)등에서 전원을 인가하기 때문에, USB 케이블이 꽃혀 있나 확인 하는 용도로도 사용 가능 합니다.
✅ 실제로 STM32 CubeMX에서 보면
USB_OTG_FS 설정할 때 위의 그림들처럼 되어 있습니다.
· VBUS sensing: Enable
· PA9 핀 자동 설정: Input 모드
그리고, STM32 USB 드라이버(usb_device.c 또는 usbd_conf.c) 안에서도 VBUS 감지를 체크하는 코드가 들어가 있습니다.
(예: HAL_PCDEx_SetConnectionState() 같은 함수가 실제 연결 상태를 바탕으로 동작)
PA9 핀은 STM32 USB 하드웨어 블록(USB_OTG_FS) 에 입력 신호로 연결되기 때문에 소프트웨어(GPIO로) 제어하는 게 아니라, USB 하드웨어 컨트롤러가 내부적으로 자동으로 읽어들이는 구조 입니다.
(즉, PA9는 "GPIO로 직접 제어"하는 게 아니고, USB Peripheral 자체가 "PA9 상태"를 감지해서 연결 상태를 관리합니다.
✅ 실제 PA9 동작을 보면
· PC가 USB 케이블을 연결하면 → VBUS(5V)가 들어오고
· STM32의 USB 하드웨어가 PA9을 감지해서 → "USB 연결됨" 이벤트 발생
· USB Stack이 이를 받아서 USB 연결 절차를 진행
이 모든 게 "자동"으로 돌아갑니다
하지만 필요하다면 PA9의 실제 입력 유무를 소프트웨어에서 확인은 할 수 있습니다.
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9) == GPIO_PIN_SET)
{
// VBUS High (USB 연결됨)
}
else
{
// VBUS Low (USB 연결 안 됨)
}
VBUS 감지도 꺼버리고 사용해도 가능 합니다. 이때는 CubeMX 에서 "VBUS Sensing"을 Disable로 설정하면 됩니다.
(위의 그림 참고~)
※ 아! CPU별로 STM32CubeMX에서 "VBUS Sensing"의 옵션에 Disable이 없는 경우가 있을 수 있습니다.
이때는 직접 PA9에 마우스를 클릭해서 Reset_State나 원하는 기능을 선택하시면 됩니다.
2. OTG_FS_ID(PA10)
우선 USB의 ID 핀에 대해서 설명하겠습니다.
USB OTG(USB On-The-Go) 라는 표준이 있습니다.
- OTG는 "장치(Device)"가 때로는 Host, 때로는 Device 역할을 할 수 있게 해주는 기술입니다.
- 이때 누가 Host가 될지, 누가 Device가 될지를 결정하는 게 ID 핀입니다.
※ ID 핀은 "호스트와 디바이스 역할을 구분"하는 데 사용합니다.
✅ ID 핀의 동작
ID 핀 상태 | 역할 |
GND에 연결 (ID Low) | 자신이 Host가 됨 |
오픈(또는 풀업) (ID High) | 자신이 Device가 됨 |
즉,
- ID 핀을 GND로 땅에 붙이면 → "나 Host야!"
- ID 핀을 오픈 상태로 두면 → "나 Device야!"
STM32는 이 ID 핀의 상태를 PA10(USB_OTG_FS_ID)로 읽어서 자동으로 판단합니다.
하지만, Device_only로 선택하게 되면 PA10 은 노랑색으로 바뀌며, 사용하지 않는 핀으로 표시 됩니다.
✅ 요약
구분 | 설명 |
기본 기능 | Host/Device 역할을 구분 |
ID 핀이 GND면? | Host 모드 |
ID 핀이 오픈이면? | Device 모드 |
STM32는 ID 핀을 어떻게 쓰나? | OTG 하드웨어가 자동 감지 |
직접 제어 필요? | ❌ 필요 없음 (자동 처리됨) |
핀 이름 | ID (PA10 연결) |
- CubeMX에서 USB_OTG_FS 모듈을 "Device only"로 설정해버리면, ID 핀을 무시하고 그냥 디바이스 모드 고정으로 작동시킬 수도 있습니다.
- "Dual Role (Host/Device)"로 설정하면, ID 핀 감지가 활성화되고, 자동으로 역할이 바뀝니다.
3. ETC
'Embedded Program' 카테고리의 다른 글
VCP (Virtual COM Port) 잡동사니(STM32F407x) (0) | 2025.04.27 |
---|---|
VCP (Virtual COM Port) 구현(STM32F407x) 회로도#2 (0) | 2025.04.26 |
VCP (Virtual COM Port) 구현(STM32F407x) 회로도#1 (0) | 2025.04.26 |
VCP (Virtual COM Port) RX 구현(STM32F407x) (1) | 2025.04.25 |
VCP (Virtual COM Port) TX 구현(STM32F407x) (1) | 2025.04.25 |