STM32 회로 리뷰 방법 - USB

USB는 많이 사용되고 있는 Peripheral입니다. 이번 장에서는 어떻게 USB를 회로에 적용해야 하는지 알아보겠습니다.

이번장은 [AN4879] USB hardware and PCB guidelines using STM32 MCUs Application note를 참조하였습니다. https://www.st.com/resource/en/application_note/an4879-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf

사용하는 USB의 스피드와 버전에 따라서 명칭과 하드웨어 구성이 달라질 수 있으니 사용하려는 버전과 스피드 그리고 STM32에서 지원여부를 먼저 확인 하여야 합니다. 아래는 STM32 에서 제공하고 있는 USB 스펙이며 제품에 따라서 지원여부가 다르니 위의 Application note를 반드시 확인해 보시기 바랍니다.

  • USB 2.0 FS(Full speed: 12Mbps) Device only
  • USB 2.0 OTG FS(Full speed) : On-chip FS PHY가 있는 USB 2.0 FS Device/Host/OTG 컨트롤러
  • USB 2.0 OTG HS(High speed: 480Mbps) : USB 2.0 FS/HS Device/Host/OTG 컨트롤러, Full speed 작동을 위한 트랜시버 통합 및 High speed 작동을 위한 ULPI 지원(외부 ULPI - PHY 장치가 필요).
  • 내장된 On-chip HS PHY가 있는 USB 2.0 OTG HS 컨트롤러

USB Pin map

https://m.blog.naver.com/kangyh5/222062643612 에서 참조한 USB Pin map은 아래와 같습니다.

DP(D+) Pull-up 저항

USB 2.0 Full speed 전기적 사양을 준수하려면 USB_DP(D+) 핀을 1.5kΩ 저항을 사용하여 3.0~3.6V 범위의 전압으로 Pull-up 해야 합니다. STM32 제품에 따라서 Pull-up 저항이 포함되어 있지 않는 제품도 있으니 꼭 확인보시기 바랍니다. (예:STM32F102/103 line)

Protection against ESD and EMI

대부분의 USB Connector는 PC에 연결하기 위해 외부로 연결되도록 되어 있습니다. 외부로 인터페이싱 되는 통선 선로에는 반드시 ESD 및 EMI 보호 대책을 세워야 하며 USB도 예외는 아닙니다. USB를 사용하는 시스템은 JESD22-A114D(HBM이라고도 함) 및 IEC 61000-4-2 표준을 모두 준수해야 합니다.

HBM은 구성 요소 장치의 USB 핀이 최대 2kV Discharge을 견딜 수 있어야 하며, 이는 STM32 MCU의 경우입니다. JESD22-A114D 표준 테스트 파형 및 클래스 레벨은 아래 그림과 표를 참조하십시오.

자세한 내용은 www.jedec.org에서 제공되는 System Level ESD-expanded 문서를 참조하세요.

또한 시스템은 콘센트에 연결될 때 USB 라인에 대한 IEC 61000-4-2 표준을 준수해야 합니다. 이 표준은 HBM 표준과 상당히 다릅니다. IEC 61000-4-2 표준 테스트 파형 및 클래스 레벨은 이미지와 아래 표를 참조하세요.

높은 ESD 서지에 대한 보호를 개선하려면(그리고 표준에서 요구하는 조건을 충족하려면) 전용 Component를 콘넥터에 최대한 가깝게 배치해야 합니다(아래 표 참조).

Clock

FS USB Device/OTG에는 정확한 48MHz 클럭이 필요합니다. 이 주파수는 내부 메인 PLL 또는 내부 48MHz 오실레이터에 의해 생성될 수 있습니다.

첫 번째 경우(내부 메인 PLL) 클록 소스는 HSE(외부) Crystal 오실레이터를 사용해야 하며, 두 번째 경우(내부 48MHz) 오실레이터에 아래처럼 대한 동기화할 수 있습니다.

  • USB 데이터 스트림 자체(SOF 신호화), 외부 Resonator/Crystal이 필요하지 않음(이 기능은 a crystal-less USB 2.0 FS device 인터페이스가 내장된 장치에만 사용 가능), 또는
  • LSE에서 트리밍된 내부 48MHz 오실레이터(USB Host에 대해서는 정확성이 충분하지 않음).
  • STM32L47x/L48x 전용 MSI 및 LSE.

HS 동작이 필요한 경우 OTG PHY는 12개의 신호를 통해 MCU ULPI 포트에 연결됩니다. 60MHz 출력을 사용하여 클록할 수 있습니다(HS PHY에서 제공: 이 경우 HSE는 필수 사항이 아님).

다음 그림에 명시된 바와 같이 STM32F7x3xx 장치의 경우 USB HS PHY에는 2개의 PLL이 내장되어 있습니다.

  • PLL1: 클럭 소스-HSE 클럭. 지원되는 값은 12, 12.5, 16, 24 및 25MHz. PLL1은 PLL2의 입력으로 사용되는 60MHz 출력
  • PLL2: 고속(480MHz) 클럭 출력

Power

USB 트랜시버의 경우 작동 전압 범위는 3.0~3.6V입니다. 이 전압은 다음 중 하나에서 공급 받을 수 있습니다.

  • VDD: STM32MCU I/O용 표준 외부 전원 공급 장치
  • VDDUSB: USB 전용 독립 전원 공급 장치. 이 전원 공급 장치는 VDD 또는 USB 트랜시버용 외부 독립 전원 공급 장치에 연결할 수 있습니다.

결과적으로 MCU는 지정된 최소 공급 전압으로 전원을 공급받을 수 있으며 독립 전원 공급 장치 3.3V는 VDDUSB에 연결할 수 있습니다.

VDDUSB가 별도의 전원 공급 장치에 연결되면 VDD 또는 VDDA와 분리되어야 하지만 가장 마지막에 공급되어야 하고 가장 먼저 공급이 끊어져야 됩니다.

주의해야 할 몇 가지 중요한 사항은 다음과 같습니다.

• USB FS 트랜시버 기능은 최저 2.7V까지 보장됩니다. VDD 범위가 2.7~3.0V이면 USB FS 전기적 특성이 저하됩니다.

• VDDUSB는 일부 STM32 제품군 에서는 사용할 수 없습니다. 특정 MCU에서 이 기능을 사용할 수 있는지 확인하려면 앞서 언급한 Application note를 참조하세요.

• VDDUSB 핀은 2개의 외부 디커플링 커패시터(100nF 세라믹 + 1μF 탄탈륨 또는 세라믹)에 연결해야 합니다.

• 핀 수가 많은 패키지에 있는 일부 장치에는 전용 VDDUSB 핀이 있습니다. 핀 수가 적은 패키지의 경우 이러한 장치에는 USB 기능을 보장하기 위해 VDD 핀만 있습니다.

• STM32F7x3xx 장치에서 USB HS PHY 하위 시스템은 추가 전원 공급 핀을 사용합니다. VDD12OTGHS 핀은 HS PHY 레귤레이터(1.2V)의 출력입니다. 외부 커패시터(2.2μF)는 VDD12OTGHS 핀에 연결해야 합니다.

• STM32H7x3 장치에서 VDD50USB는 USB 케이블을 통해 공급되어 USB 내부 레귤레이터를 통해 VDD33USB를 생성할 수 있습니다. 이것은 3.3V와 다른 VDD 전원을 지원하는 데 사용됩니다. VDD = 3.3V일 때 USB 레귤레이터를 우회하여 VDD33USB에 직접 전원을 공급할 수 있습니다.

VBUS sensing detection

USB 사양에 따라 USB 장치는 VBUS Sensing detection을 사용해야 합니다. Device가 호스트 존재를 감지하면 풀업 저항을 D+ 또는 D- 데이터 신호에 연결합니다. 이렇게 하면 호스트가 버스에서 Device의 존재를 감지할 수 있습니다.

아래 두 가지 경우가 있습니다.

  • Bus Powered USB Device : 이런 Device는 VBUS Detection이 필수가 아닙니다(USB가 Device에 전원을 공급하므로 Device가 동작하는 경우는 항상 USB에 연결된 상태임)
  • Self powred Device : VBUS Detection는 필수이며 USB 인증시 필요합니다.

5V 허용 핀인 PA9 핀은 기본적으로 VBUS Detection용입니다. STM32 MCU 데이터시트에 5V 허용 핀 전압이 최대 VDD+4V를 초과할 수 없다고 표시합니다. 따라서 MCU에 전원이 공급되지 않고 5V VBUS가 PA9에 연결될 상황을 피해야 합니다. Absolute Maximum Ratings 대한 조건을 초과하면 장치에 영구적인 손상이 발생할 수 있습니다.

이를 위해 PA9의 전압을 4V 미만으로 낮추는 것이 필수적입니다. 또한 STM32 데이터시트에서 언급한 바와 같이 OTG 주변장치 내의 내부 VBUS Detection 블록에는 전류 소비가 있습니다. “VBUS 감지 기능이 활성화되면 PA9 대체 함수가 아닌 기본 상태(Floating input)로 두어야 합니다. 내장된 Detection 블록의 일반적인 200μA 전류 소비(다른 세션을 결정하기 위한 전류 대 전압 변환)는 기능이 활성화될 때 PA9에서 관찰될 수 있습니다."

안정적이고 안전한 VBUS Detection을 위해 전압 분배기를 사용하여 Absolute Maximum Ratings을 보장하는 것이 좋습니다. 이 경우 DC 전류를 최소화하려면 VBUS와 GND 사이의 합계 저항이 높아야 합니다. 이제 기본 GPIO 입력 레벨(VIL, VIH)을 저항 분배기와 함께 사용할 수 있습니다.

VIL/VIH 계산의 경우 모든 GPIO는 주 I/O 공급 VDD에 의해 전원이 공급됩니다. VDDUSB는 일부 MCU에서 USB 전용입니다.

VBUS 감지에 권장되는 저항 분배기 값은 다음과 같습니다.

• 3.0-3.6V 범위의 VDD: 82kΩ(to GND), 33kΩ(to VBUS).

• 1.8-2.0V 범위의 VDD: 68kΩ(to GND), 82kΩ(to VBUS).

저항 값은 ± 0.1% 허용 오차를 가정하여 평가되었습니다. VBUS가 0.8V와 3.67V 사이일 때 스위칭을 보장하기 위해 다양한 STM32 제품군에서 VIL/VIH에 대해 검사합니다.

그 외

실제 회로도는 언급하지 않았습니다. 각각 원하는 Device/Host/OTG에 따라 회로도가 달라지기 때문입니다. 여러가지 회로에 대한 내용은 서두에 언급한 Application note에 나와있으니 참조하시면 됩니다.

일례로 아래는 STM32H745 Nucleo 보드의 USB OTG 회로도 입니다. 이와같이 여러분들이 만들고자 하는 회로도와 최대한 비슷한 레퍼런스 보드를 참조하시어 회로에 활용하시면 됩니다.

  • STMPS2151 : 외부 USB 전원 공급용 Power switch
  • USBLV6-45C6 : ESD Protection 용 TVS 다이오드