본문 바로가기
임베디드.일렉트로닉스

STM32 . USB 클럭 설정 외부크리스탈 혹은 내장 오실레이터 . Custom HID

by i.got.it 2023. 7. 12.

 

STM32 의 USB 활용시 클럭 설정 

 

타겟칩 STM32L4R5 계열 (품번예 :  STM32L4R5VI)  지원 페리페랄 중 USB 를 enable 하여 활용 하려는 경우 클럭 설정방식 2가지 (외부 크리스탈 혹은 내장 오실레이터) 가능하다. 통상 USB 사용하는 경우 정밀 외부 크리스탈 필수인 경우가 많은데,  STM32L4R5 계열 칩은 외부 크리스탈 필수 요구되지는 않는다. 

 

 

본 포스팅에서는 STM32CubeMX (STM32CubeIDE 내장된 것을 활용하는 예이나, 단독으로 STM32CubeMX 실행하여 설정하는 경우에도 동일함.) 에서 USB 클럭 설정하는 2가지 방식 모두 보인다. 

 

1. 외부 크리스탈 활용하는 경우의 USB 클럭 설정. 

24MHz 크리스탈 을 STM32 에 연결 한 경우의 설정. 

아래 영상에서 아래 3가지 설정 순서대로 보인다.

 

1) 외부 크리스탈 설정 

2) USB 활성화 

3) 클럭 설정

이렇게 설정하면 외부 크리스탈 기반 USB 클럭 설정 완료됨.  

 

 

 

USB 활성화 방법 및 세부 설정 

- USB  활성화는 아래 그림의 붉은 박스처럼 선택. 사용자 파라메타 설정(아래 녹색 박스 ) 은 할 것 없음. 

 

위 과정에서 클럭 설정 최종 셋팅은 아래 화면과 같다. 

A : 외부 크리스탈 24MHz 인가되게 하고 PLL Source Mux 에서  클럭 HSE  선택 , 파란색 박스처럼 PLLSAI1R 주파수 48MHz 로 된것이 CLK48 Clock Mux 에서 선택되어 USB 의 클럭 소스로 되어 정확한 48MHz 가 공급된다. 

 

 

2. 외부 크리스탈 없이 내부 오실레이터 이용하는 경우의 클럭 설정.  

내장 오실레이터 중 HSI48 (48Mhz) 를 USB 로 연결. 

아래 영상에서 외부 크리스탈 없이 아래 2가지 설정 순서대로 보인다. 

1) USB 활성화

2) 클럭 설정. 

 

 

 

 

위 과정에서 클럭 설정 최종 셋팅은 아래 화면과 같다

A : MUX 에서 HSI48 (48MHz) 을 선택하여 USB (그림에서 박스 B ) 로 공급. 

 

 

 

앞의 설정까지는 STM32 의 USB 모듈을 활성화 한 것이며 하드웨적인 설정 이다.  USB 통신 프로토콜에 따라 소프트웨어 계층 또한 라이브러리로 제공되고 있다. 아래 예는 USB Custom HID   활성화 하는 것 . 

 

USB Custom HID 활성화  예 

 

- Custom HID 란 표준적인 HID 인 마우스, 키보드외에 사용자 정의해서 사용할 HID 클래스 활용 가능하게 하는것. 

 

 

 

 

위 과정까지 완료하고 Generate Code 실행 ( STM32CUbeIDE 의 메뉴 : Project - Generate Code 클릭 ) 하면 자동으로 USB 관련 설정코드 생성된다. 아래 붉은 박스. 

 

 

 

PC USB 연결시 인식 상태. 

위 단계까지만 해도 빌드하고 타겟칩에 펌웨어 기록하고 PC 에 USB 연결해보면 USB 인식은 진행된다. 그러나 최종 드라이버 오류 표시가 뜨는데 이는 USB 디스크립터 코드를 추가하지 않았기 때문이다. 디스트립터는 개발자의 필요에 따라 많은 자유도가 주어져 있기 때문에  USB 스펙 숙지한 이후 개발대상의 요구 상황에 맞게 만들어야 한다. HID Descriptor Tool 이용하면 편리. 

 

 

 

USB Custom HID 사용자 파라메타 설정 예 

- 앞의 기본 제공된것을 수정한 예. -아래 녹색 박스 

 

아래 붉은 색 체크 부분이 수정한것. VID 는 STM 사의 것을 그대로 이용.

( 참고 : 개발 중에는 VID 는 65535 보다 작은 숫자 임의로 기록해도 되며 USB 기능이 탑재된 최종 상품 형태로 나갈때는 VID 정식으로 발급 받은것 이용해야함.)  

 

그리고 User Constants 에도 2개 추가 했다. 

 

User Constanct 에 추가한것들은 코드 생성시 main.h 에 #define 문으로 자동 추가된다. 

 

위와 같이 수정된것을 칩에 기록하여 PC 로 USB 연결하면 아래처럼 USB 기기 이름이 변경된 것을 볼 수 있다.   

 

 

 

 

 

 

상위 정리 

 

https://igotit.tistory.com/244 의 STM32

 

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리.

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 총정리 제조사 칩 주요특징 실리콘랩 8bit MCU EFM8 시리즈 32bit EFM32 시리즈 EFM8 싸다. STM STM32 . 최고 항상 만족. Cypress pSoC pSoC6 은 기대해볼만. NORDIC nRF52 블투 무선솔루

igotit.tistory.com

 

 

 


첫 등록 : 2023.07.12

최종 수정 : 

단축 주소 : https://igotit.tistory.com/4703


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5