임베디드 시스템을 위한 SW 구조설계 1.2

2023. 4. 8. 19:42[Harman] 세미콘(semiconductor) 아카데미-반도체설계/임베디드 시스템을 위한 SW 구조설계

728x90

ST사의 STM32F411RE보드를 이용하여 공부를 진행하였다.

 


개발환경에서 가장 중요한 것은 타겟과 에뮬레이터이다.

  • 에뮬레이터

에뮬레이터는 보드 없이 호스트 PC상에서 타깃 바이너리 파일을 수행할 수 있는 프로그램을 말한다.

에뮬레이터를 이용하면 실제 보드 없이 가상 임베디드 시스템을 구성하여 어플리케이션을 테스트 할 수 있다.

 

개발은 무조건 사용되는 MCU의 데이터시트를 참고하며 진행해야한다.

STM32F411RE MCU 데이터시트 / NUCLEO-F411RE 회로도
STM32F411RE MCU 데이터시트

ST사 홈페이지에서 현재 우리가 사용하는 보드(NUCLEO-F411RE)의 회로도와 MCU(STM32F411RE)의 데이터시트를 다운로드받을 수 있다.

 

MCU(STM32F411RE)의 데이터시트를 보면 인터럽트 기능을 가진 81개의 I/O 포트, 13개의 통신 포트(3개의 I2C포트, 3개의 USART포트, 5개의 SPI/I2S포트) 등의 현재 사용하는 MCU의 기본 성능들이 어떻게 되어있는지 확인할 수 있다.

 

또한 이 MCU에서 사용되는 각종 포트들에 관련된 데이터 시트는 Reference Manuals의 메뉴얼을 보면 알 수 있다.

Reference Manuals
메모리 및 버스 아키텍쳐 / GPIO registers / Interrupts

Reference Manuals의 파일을 살펴보면 우리가 사용하는 MCU의 메모리부터 GPIO, 인터럽트, DMA, peripheral등의 레지스터들이 어떻게 동작하는 지 설명이 되어있다. 그래서 개발할때는 레지스터와 관련된 내용이 적혀있는 이런 메뉴얼을 보며 개발하는 것이 좋다.

 

CAN 통신 프로토콜, EMC, ESD등과 관련된 데이터 시트들

데이터시트는 Reference Manuals 한개만 있는 것이 아닌, 각종 통신, 버스 등 여러 데이터 시트들이 존재한다. 

 


  • 환경설정

NUCLEO-F411RE 보드를 사용하기 위해서는 이 보드에 맞는 통합 개발 환경(IDE) 프로그램을 다운로드 해야한다.

통합 개발 환경(IDE)이란 프로그래머가 소프트웨어 코드를 효율적으로 개발하도록 돕는 소프트웨어 애플리케이션으로 해당보드 IDE는 ST 홈페이지에서 다운로드할 수 있다.

 

STM32CubeIDE
STM32CubeIDE 첫화면
Board Selector를 선택한다

우리가 가지고 있는 보드인 NUCLEO-F411RE보드를 사용해야 하니 Board Selector를 선택한 후 사용 보드를 입력하여 프로젝트를 만든다.

프로젝트 첫 실행화면

해당 화면에서 이제 STM32보드 개발을 시작할 수 있다. 

 

현재 우리가 사용하는 포트의 GPIO는 System core에서 확인해보면 PA5와 PA13이 있는 것을 확인할 수 있다.

PA5 = D13 / D13 = LD2 LED와 연결되어 있다. 
PC13핀은 B1 PUSHBUTTON과 연결되어 있다.

  • GPIO(General Purpose Input / Output)\

GPIO registers / Reference Manuals 파일에서 볼 수 있다.

레지스터데이터를 저장하는 공간으로, GPIO, 각종 Peripheral, band(전송속도) 등 MCU기능의 전부분에 존재한다. 

 

GPIO는 입력, 출력을 하는 핀으로, 일반적인 목적으로 입출력 하는 MODER가 16개 존재한다.

GPIO_MODER

GPIO_MODER는 한 블럭 당 2비트에 해당하며, 총 4개의 기능을 표현할 수 있다. 

MODER 표현 기능

00 입력
01 출력
10 Altenate function mode (USART, I2C, SPI등 통신관련 모드)
11 아날로그 모드 (ADC, DAC등에 해당하는 모드)

 

GPIO는 한 PORT에 16개의 MODER가 존재하며, 한개의 MODER는 2비트로 16*2 = 32비트, 한개 GPIO A ~ H까지 구성되어 있다. 그러나 현재 우리가 사용하는 보드는 GPIO A ~ C 까지의 포트만 존재한다. 

PORT A, B, C만 존재


STMCubeIDE = https://www.st.com/en/development-tools/stm32cubeide.html

 

STM32CubeIDE - STMicroelectronics

STM32CubeIDE - Integrated Development Environment for STM32, STM32CubeIDE-RPM, STM32CubeIDE-Lnx, STM32CubeIDE-Win, STM32CubeIDE-DEB, STM32CubeIDE-Mac, STMicroelectronics

www.st.com

Reference Manuals = https://www.st.com/en/microcontrollers-microprocessors/stm32f411re.html#documentation

 

STM32F411RE - STMicroelectronics

STM32F411RE - High-performance access line, Arm Cortex-M4 core with DSP and FPU, 512 Kbytes of Flash memory, 100 MHz CPU, ART Accelerator, STM32F411RET6TR, STM32F411RET7, STM32F411RET6, STMicroelectronics

www.st.com

NUCLEO-F411RE 회로도 = https://www.st.com/en/evaluation-tools/nucleo-f411re.html#cad-resources

 

NUCLEO-F411RE - STMicroelectronics

NUCLEO-F411RE - STM32 Nucleo-64 development board with STM32F411RE MCU, supports Arduino and ST morpho connectivity, NUCLEO-F411RE, STMicroelectronics

www.st.com