STM32 강좌

STM32CubeMX - Pinout 기능 사용하기

plainy 3 13,226 2017.04.05 16:06

STM32CubeMX 소개에서 말씀드린 것과 같이 STM32CubeMX는 MicroXplorer라는 툴에서 발전된 프로그램입니다.

MicroXplorer의 주요 기능은 STM32의 핀 배열을 쉽게 하기 위한 Pinout기능이었습니다.

Pinout은 Peripheral에서 사용되는 핀을 확인 시켜 주는 기능과 여러 Peripheral을 사용할 경우 중첩된 핀을 확인해주는 역할을 합니다.

STM32CubeMX에도 이러한 Pinout기능을 제공하여 좀 더 쉽게 하드웨어를 설계할 수 있도록 도와주고 있습니다.

 

STM32CubeMX의 Pinout기능에 대해 알아보도록 하겠습니다.

 

Pinout기능 사용하기

STM32CubeMX를 실행합니다.

초기 화면에서 New Project를 선택합니다.

b48f9c445812557209564d27735fc065_1491375831_532.png

 

 

디바이스 선택

New Project 창이 나타나면 사용하려는 Device를 선택합니다.

본 예제에서는 STM32F429ZITx를 선택하겠습니다.

b48f9c445812557209564d27735fc065_1491375839_6401.png


 

 

Pinout View

선택한 Device가 가지고 있는 Peripheral의 목록과 함께 패키지 모양이 보여집니다.

제가 선택한 STM32F429ZI의 경우 ADC와 CAN, CRC, DAC, DCMI등의 기능이 있으며 144핀 LQFP패키지를 사용하고 있는 것으로 표시되고 있습니다.

b48f9c445812557209564d27735fc065_1491375854_101.png


 

  

Peripheral 설정하여 핀 확인

Peripheral을 설정하여 어떤 핀을 사용하는지 확인해 보도록 하겠습니다.

Ethernet기능을 사용하기 위해 ETH의 설정을 MII로 변경합니다.

MII에서 사용되는 핀이 오른쪽 패키지 모양에 이름과 함께 녹색으로 표시되는 것을 확인할 수 있습니다.

b48f9c445812557209564d27735fc065_1491375868_086.png 


 

 

Peripheral 간의 핀 충돌 확인

ETH를 MII로 사용하면서 여러 개의 핀이 사용된 것을 확인하였습니다.

이때 왼쪽 Peripheral 목록에 약간의 변화가 생겼습니다. 몇 개의 Peripheral은 노란색 느낌표 표시가 생겼으며 또 다른 몇 개의 Peripheral은 빨간색 X표시가 생겼습니다.

 

노란색 느낌표 표시는 Peripheral의 일부 기능을 사용할 수 없음을 나타냅니다.

예를 들어 FMC의 경우 SDRAM의 SDCKE0핀 또는 SDNE0이 ETH Block에서 사용 중인 핀과 충돌하기 때문에 사용할 수 없습니다. 

대신 SDCKE0또는 SDNE0이 아닌 SDCKE1과 SDNE1을 사용할 경우 연결할 수 있습니다.


b48f9c445812557209564d27735fc065_1491375875_8009.png
 

 

빨간색 X표시는 해당 Peripheral을 사용할 수 없을 경우 표시됩니다.

LTDC의 경우 아래와 같이 RGB666, RGB565가 모두 빨간색으로 표시되며 마우스를 올려놓으면 어떤 Peripheral과 출동하는지 알려줍니다.

STM32F429 144핀 Device에서​는 ETH를 MII로 사용할 경우 LCD를 사용할 수 없기 때문에 설정을 변경하거나 핀이 더 많은 Device를 사용하여야 합니다.


b48f9c445812557209564d27735fc065_1491375881_8875.png
 


 

 

Peripheral 핀의 이동이 가능한 경우

STM32의 Peripheral은 한 개의 핀이 아닌 여러 개의 핀에 연결되어 있는 경우가 있습니다.

사용되고 있는 핀이 다른 Peripheral에서 사용되는 경우 STM32CubeMX에서는 핀 충돌을 방지하기 위해 이동이 가능한 경우 다른 핀을 사용하도록 설정합니다.

 

예를 들어 SPI1의 MOSI핀은 PA7, PB5에 연결될 수 있어 원하는 핀으로 설정하여 사용할 수 있습니다.

SPI1을 Full-Duplex Master로 설정하면 아래와 같이 PA5, PA6, PA7이 SPI1으로 할당됩니다.

b48f9c445812557209564d27735fc065_1491375889_9274.png 

 

 

Ethernet을 사용하기 위해 ETH를 MII로 설정하면 PA7에 할당되었던 SPI1_MOSI가 PB5로 이동하며 PA7은 ETH_RX_DV가 할당된 것을 확인할 수 있습니다.


 

b48f9c445812557209564d27735fc065_1491375897_7047.png
 

 

현재 핀 설정 유지

이렇듯 STM32CubeMX는 핀 이동이 가능한 경우 현재 설정된 핀을 이동하여 새로운 Peripheral에 핀을 할당합니다.

그러나 현재 핀 설정을 변경하지 않아야 하는 경우가 생길 수 있습니다.

Keep Current Signals Placement 를 Check하면 현재 핀 설정이 변경되지 않도록 합니다.

Keep Current Signals Placement 를 선택하자 CAN2와 DCMI등이 사용할 수 없게 되었습니다.

현재 설정된 핀을 이동할 경우 CAN2와 DCMI등을 사용할 수 있으나 핀이 이동 되지 않도록 하였기 때문에 사용할 수 없게 된 것입니다.

 

b48f9c445812557209564d27735fc065_1491375906_7302.png


 

 

이동 가능한 핀 확인

해당 핀이 이동 가능 한 위치를 확인하기 위해서는 Ctrl키를 누른 후 핀을 클릭하면 됩니다.

이동할 수 있는 다른 핀이 있다면 이동 가능한 핀이 파란색으로 표시됩니다.

해당 핀을 다른 핀으로 이동해서 사용할 수 없다면 아무런 표시도 되지 않습니다.

LTDC의 LTDC_B2핀을 Ctrl키를 누른 후 클릭하면 아래와 같이 PG10이 파란색으로 표시됩니다.

PD6을 사용하고 있는 LTDC_B2핀을 PG10으로 이동할 수 있음을 나타냅니다.

 

b48f9c445812557209564d27735fc065_1491375913_9772.png


 

 

수동으로 핀 설정

STM32CubeMX에서 자동으로 할당된 핀을 다른 용도로 쓰기 위해 핀을 다른 핀으로 변경하여 설정할 수 있습니다.

이동할 수 있는 핀을 확인하여 해당 핀을 클릭한 후 기능을 선택하면 해당 핀만 이동하게 됩니다.

STM32CubeMX에서 PD6에 할당된 LTDC_B2를 PG10으로 이동한 화면입니다.

수동으로 설정한 핀은 아래와 같이 핀이 꽂아지기 때문에 사용자가 변경한 핀이라는 것을 알 수 있습니다.


b48f9c445812557209564d27735fc065_1491375922_3475.png 


 

 

GPIO 핀 설정

Peripheral을 모두 설정하였다면 GPIO를 설정하여야 합니다.

GPIO의 설정 역시 핀을 클릭하여 GPIO Input 또는 GPIO Output, GPIO Analog를 선택하면 됩니다.

많은 GPIO를 설정할 경우 Menu의 Set unused GPIOs를 사용하면 많은 GPIO를 한꺼번에 설정할 수 있습니다.

핀을 클릭한 후 GPIO_Input 또는 GPIO_Output, GPIO_Analog를 선택하면 해당 핀을 GPIO로 설정할 수 있습니다.


b48f9c445812557209564d27735fc065_1491375931_29.png 

 

 

 

여러개의 GPIO를 설정해야 할 경우 Menu의 Set unused GPIOs를 사용하면 빠르게 설정할 수 있습니다.

Pinout메뉴의 Set unused GPIOs를 누르면 아래와 같이 GPIO를 설정할 수 있는 창이 나타납니다.

설정할 GPIO의 개수와 GPIO Type을 선택하면 비어있는 핀에 GPIO가 순서대로 설정됩니다.

b48f9c445812557209564d27735fc065_1491375939_8289.png 


 

 

 

Set unused GPIOs를 통해 GPIO를 설정하면 아래와 같이 비어있는 순서대로 GPIO가 설정됩니다.


b48f9c445812557209564d27735fc065_1491375946_867.png 


 

 

 

핀 검색

사용하는 STM32 Device가 100핀 또는 144핀 이상이라면​ 패키지 화면에서 원하는 핀을 찾기가 쉽지 않습니다.

핀을 검색하기 위해서는 Tool bar의 Find창에 핀 이름을 입력하면 됩니다. 사용자가 핀 이름을 설정한 경우에도 검색할 수 있습니다.

검색된 핀은 검은색으로 반짝이기 때문에 쉽게 찾을 수 있습니다.

b48f9c445812557209564d27735fc065_1491375959_0148.png
 

 

핀 이름 설정

각 핀에 사용자가 원하는 이름을 설정할 수 있습니다.

이름을 설정하려는 핀에서 마우스 오른쪽 버튼을 클릭한 후 Enter User Label을 클릭한 후 이름을 설정할 수 있습니다.

이렇게 설정된 이름은 검색을 통해서도 찾을 수 있습니다.

b48f9c445812557209564d27735fc065_1491375984_5431.png
 

 

Report기능

Report기능을 사용하면 설정된 Pin정보를 TXT파일과 PDF파일, CSV파일로 저장할 수 있습니다.

Menu의 Generate Report를 클릭하면 현재 설정 값을 TXT파일과 PDF로 저장합니다.

또는 Menu의 Generate CSV pinout text file를 클릭하면 엑셀에서 사용할 수 있는 CSV파일로 저장할 수 있습니다.

 

 b48f9c445812557209564d27735fc065_1491375991_9369.png 

 

 

Pinout 기능은 설명한 것과 같이 여러 Peripheral 사용 시 흔히 발생되는 핀 충돌을 알려주고 자동으로 다른 핀을 사용할 수 있도록 합니다.

따라서 사용자는 STM32CubeMX만으로 편리하게 회로 설계에 필요한 핀 설정을 마칠 수 있습니다.

Comments

학생 2018.04.06 15:24
궁금한것이 있습니다.
Generate Code 생성 (혹으 톱니바퀴 클릭) 하면 설정 IDE(IAR,Keil 등)로 소스파일이 생성되는데
생성후 도중에 필요기능이있어 CUBEMX에서 핀 설정을 다시해주고 생성하면 덮어쓰기로 다시 생성됩니다
기존 프로젝트에 수정기능만 반영되게  생성은 못하나요?
빠닥 2018.04.06 17:25
아는 내용이라 답변드릴게요 말씀하신것 처럼하려면 Cube에서 말하는 규칙만 지켜주면되는데 코드에 있는
 /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
등과 같은 주석 안에 코드를 작성하셔야 합니다.
필요한 부분에 거의 User code영역이 있으니 크게는 불편은 없습니다.
학생 2018.04.09 10:19
좋은 정보 감사합니다 ~^^
Category
Facebook Twitter GooglePlus KakaoStory NaverBand