당신의 상상력을 자유롭게 펼칠 수 있는 STM32 오픈 개발 환경(ODE) ①
상태바
당신의 상상력을 자유롭게 펼칠 수 있는 STM32 오픈 개발 환경(ODE) ①
  • 최태우 기자
  • 승인 2016.05.24 16:03
  • 댓글 0
이 기사를 공유합니다

경제적인 마이크로컨트롤러가 폭넓게 보급되면서 신세대 개발자들이 독창적인 임베디드 애플리케이션을 개발하는데 고무적인 환경이 마련됐다. 테스트와 프로토타입 제작을 빠르게 할 수 있는 플러그인 하드웨어와 소프트웨어 모듈 형태의 손쉬운 툴이 도움이 될 수 있다.

STM32 오픈 개발 환경은 겹쳐 쌓는 보드로 구성된 다양한 모듈형 하드웨어와, 드라이버에서 애플리케이션 레벨에 이르는 모듈형 소프트웨어의 독창적인 결합으로 아이디어를 신속하게 프로토타입으로 제작하도록 하여 최종 설계로의 빠른 전환을 돕는다.

 

STM32 오픈 개발 환경(ODE)이란?
STM32 오픈 개발 환경은 ST가 제공하는 프로토타입 제작 및 개발 환경을 말하며, 주요 기능 블럭을 모두 오픈-소스 형태로 제공하여 임베디드 프로젝트의 편리한 설계를 지원한다.

- 최첨단 상용 제품 기반의 다양한 HW 기능이 매우 저렴한 가격의 STM32 누클레오 개발 보드(STM32 MCU)와 STM32 누클레오 확장 보드(센싱, 커넥티비티, 구동(move), 기능 작동) 형태로 이용 가능 
- STM32Cube 소프트웨어 툴 기반의 STM32 마이크로컨트롤러 소프트웨어 라이브러리와 사용이 간편한 SW 라이브러리 컨피규레이터(STM32CubeMX)
- STM32 누클레오 확장 보드에서 사용할 수 있는 광범위한 디바이스 포트폴리오용 STM32Cube 확장 SW 라이브러리. 모터 드라이버, 블루투스LE 커넥티비티, MEMS 센서, 근접 센서 등 포함
- 기능 팩. STM32 누클레오 보드와 STM32Cube 소프트웨어를 이용하여 제작하는 가장 일반적인 애플리케이션의 기능 예제들
- 각 HW 및 SW 기능 블럭을 위한 방대한 문서
- 활발하게 운영되는 대규모 온라인 엔지니어 커뮤니티

 

STM32 누클레오(Nucleo) 개발 보드 
STM32 누클레오 개발 보드는 STM32 오픈 개발 환경의 기반으로, ARM2 Cortex2-M 32비트 마이크로컨트롤러 코어를 적용한 STM32 마이크로컨트롤러를 사용한다. STM32 오픈 개발 환경에 사용되는 STM32 누클레오 개발 보드는 64핀 버전(그림 1)이며, 현재 STM32 F4 및 STM32 L0 버전은 STM32 누클레오 확장 보드 및 확장 소프트웨어와 완벽하게 호환된다.

서로 다른 STM32 제품군(20종 이상의 STM32 누클레오 개발 보드 이용 가능) 간의 SW 프로젝트 포팅은 STM32Cube HAL API(하드웨어 추상화 계층) 기반의 STM32Cube 라이브러리를 사용하면 매우 간단한 코딩만으로 충분하다. 

STM32 누클레오-64 개발 보드는 다음과 같은 HW 특징이 있다. 

- LQFP-64 패키지로 제공되는 STM32 MCU
- 38핀 모르포(morpho) 커넥터 2개로 STM32의 모든 핀 액세스 가능
- 아두이노 커넥터 4개(아두이노 호환 확장 보드를 바르게 삽입할 수 있도록 비대칭 형태로 위치)
- 미니 USB 포트가 있는 ST링크/V2-1 디버거/프로그래머 툴이 통합돼 보드를 PC에 직접 연결해 디버깅 및 프로그래밍을 수행할 수 있으므로 추가적인 디버거 툴 불필요. USB에 가상 COM 포트 및 대용량 스토리지 인터페이스도 지원(ARM mbed 호환)
- 푸시버튼 2개(MCU 리셋 신호 및 개발자용)
- LED 3개(5V 전원, 개발자용, ST링크 디버거 상태 표시)

또한 다음과 같은 보드 전원을 다양한 옵션에서 선택할 수 있다.

- USB 커넥터에서 5V 
- 외부 전원에서 5V
- 외부 전원 VIN(7-12V)

STM32 누클레오 개발 보드에 있는 5V는 아두이노나 모르포 커넥터에 연결된 확장 보드에 전력을 공급하는 데에도 사용할 수 있으며, 보드에 있는 전압 레귤레이터는 STM32 전원 용으로 3.3V를 생성한다.

STM32 누클레오 개발 보드는 수많은 용도로 이용할 수 있으며 온보드 프로그래밍/디버깅 툴이 있어 비싼 툴 없이 개발을 바로 시작해야하는 설계자들에게 커다란 매력으로 작용할 것이다. 

 

STM32Cube 기반 임베디드 소프트웨어 및 툴 이용
사용자가 자신의 니즈에 가장 부합하는 STM32 누클레오 개발 보드를 선택하고 난 다음 단계는 소프트웨어 라이브러리를 다운로드하여 STM32의 기술적 특성과 주변장치에 익숙해지는 것이다. 

이를 시작하는 가장 빠르고 쉬운 방법은 SW 라이브러리 컨피규레이터 STM32CubeMX(www.st.com/stm32cubemx)를 다운로드하는 것이다. 
이 GUI 툴에서 사용자는 자신이 사용하는 STM32 누클레오 개발 보드를 직접 선택할 수 있으며(그림 2), 선택 후에는 컨피규레이터가 보드의 HW 연결에 따라 STM32 주변장치를 자동으로 구성한다(LED, 푸시버튼, UART 핀 할당 등). 그 다음 단계에서는 UART 동기/비동기 모드, 보오레이트(baud-rate), 패리티(parity) 및 정지 비트 설정처럼 각각의 주변장치를 보다 자세하게 구성할 수 있다.

그림 1. STM32 누클레오-64 개발 보드

마지막 단계에서는 STM32CubeMX가 생성된 코드 라인으로 원하는 툴 체인(IAR, Keil, Eclipse 등)과 호환되는 소프트웨어 프로젝트를 완벽하게 생성하고, 앞서 GUI에서 선택한 모든 하드웨어와 주변장치를 사용자가 원하는 디버거/프로그래머 툴세트와 호환되게 구성한다.

이러한 GUI 툴을 이용하면 사용자는 아무것도 없이 프로젝트를 시작해도 몇 분만에 필요한 모든 구성을 만들고 즉시 자신의 SW 프로젝트를 main.c 파일에 집중적으로 직접 쓰기 시작할 수 있다.

생성된 코드는 STM32Cube 임베디드 소프트웨어 맨 위에 놓이며 STM32Cube 계층은 다음과 같이 2개의 메인 계층으로 구성된다(그림 3).

- 하드웨어 추상화 계층: MCU 사용 방법을 자세히 알지 못해도 미들웨어 계층과 같은 빌트온(built-upon) 계층에서 기능을 구현하게 해준다.
- 미들웨어: 일치하는 미들웨어 컴포넌트 세트(RTOS, USB, TCP/IP 등)

이러한 모듈형 방식 덕분에 프로젝트 개발 중 언제라도 SW 모듈을 추가하거나 큰 수고를 들이지 않고도 전체 프로젝트를 다른 STM32 제품군에 포팅하는 것이 쉽다. 

 

그림 2. STM32CubeMX: 보드 선택부터 주변장치 구성까지 몇 단계 만에 마칠 수 있다.

STM32 누클레오 확장 보드 
STM32 누클레오-64 개발 보드는 STM32 누클레오 확장 보드를 부착할 수 있도록 다음과 같이 두 종류의 커넥터를 제공한다.

- 아두이노 커넥터: 아두이노 표준과 호환된다(총 32핀).
- 모르포 커넥터: STM32 MCU의 모든 핀에 완전한 액세스를 제공한다(76핀).

STM32 누클레오 확장 보드는 레고를 조립하는 방식으로 다양한 기능을 더해 온전한  시스템을 구성할 수 있다. 현재 ST 웹사이트(www.st.com/x-nucleo)를 통해 20여 종 이상의 다양한 보드를 선택 할 수 있고, 이 보드들은 다음과 같이 5가지 기능으로 분류할 수 있다(그림 4).

- 감지(sense): MEMS 9축, 압력/주변환경/근접 센서, MEMS 마이크
- 연결: 블루투스LE, 와이파이, NFC 태그, Sub-GHz RF 무선
- 움직임/작동: DC, 스테퍼, 3상 DC 브러시리스 모터 드라이버
- 입/출력: I/O 모듈(공장 자동화 및 산업용 용도)
- 신호 컨디셔닝: 연산 증폭기

STM32 누클레오 방식은 아두이노나 라즈베리파이 등의 솔루션과 유사하므로 빠르고 쉽게 프로토타입을 제작할 수 있다. 이 툴들은 확장 보드를 쌓는(stacking) 방식으로 시스템에 기능을 추가한다.

MCU 주변장치의 용도에 따라 쌓는 것에 한계가 있을 수 있지만 이 또한 UART와 같은 느린 직렬 버스 대신 I2C 및 SPI 버스를 이용하여 선호하는 디바이스에 연결하면 동일한 버스에 연결되는 디바이스 수를 늘릴 수 있기 때문에 문제가 없다. 

뿐만 아니라 아두이노 커넥터의 비대칭적 위치 구성은 STM32 누클레오 확장 보드를 잘못 장착되지 않게 해주므로 전원 전압을 잘못 연결하여 생기는 손상의 위험을 줄여준다. 확장 보드는 STM32 누클레오 개발 보드로부터 3.3V 전원을 공급받으며 개발 보드에서는 LDO가 보드에 공급되는 5V로부터 3.3V를 생성한다.

이 경우 점퍼(JP5)를 이용해 USB 커넥터에 공급되는 5V 또는 외부 E5V를 쓸지 선택할 수 있다. 모터 드라이버나 I/O 보드처럼 고전압이 필요한 확장 보드의 경우에는 추가 커넥터로 부하를 구동하는 데 필요한 고전압 Vbus(최대 45V)를 외부 전원에서 끌어온다.

그림 3. STM32 Cube 라이브러리 레이어.

대부분의 확장 보드는 안전을 위해 저전력 애플리케이션용으로 설계되었으며, 50V 미만 전압은 전원 전압 극성을 반대로 연결하거나 단락 회로 조건에서 보드에 미치는 위험을 제한하므로 초보자와 학생에게 적합하다.

별도의 고전압 및 고전력 모터 제어 확장 보드에 연결할 수 있는 확장 보드는 한 종류가 나와 있으며, 모터 제어 전문가만 이용하기를 권한다. 파란색인 다른 모든 STM32 누클레오 확장 보드와 달리 이 보드는 녹색으로 되어 있다. 

이 고전압 모터 제어 보드는 고전압 및 고전력 확장 보드와 저전압 보드를 결합해 커넥티비티 기능을 모터 제어 애플리케이션에 손쉽게 추가할 수 있게 한다. 예를 들면 RF를 이용하여 고전압 모터를 원격 구동하거나 블루투스LE 나 와이파이를 이용해 원격으로 모터 구동 정보를 얻고 오류 데이터를 기록할 수 있다.

 

글 : 마테오 마라비타 / ST 역량센터
자료제공: ST마이크로일렉트로닉스 <www.st.com>