본문 바로가기

[ST_MICRO]/STM32G

#STM32G0-SSM - STM32G0를 이용한 Arduino 만들기

STM32G 시리즈도 Arduino 환경에서 개발 가능하다.

Ardunio를 사용하면 기존 라이브러리를 그대로 사용할 수 있어서 간단히 테스트 하기에는 편리 한것 같다.

 

우선 전체 환경 설정은 variants 폴더의 DISCO_G0316 를 기준으로 제작했다.

핀맵은 STM32G0-SSM EVM보드를 기준으로 수정했고 보드 메니저에서 STM32G_SSM 로 표기 되도록 했다.

 

 

 

STM32G Arduino 기본 핀맵

const PinName digitalPin[] = {
  PA_0, //0 SCLK
  PA_1, //1 I2S_CK
  PA_2, //2 I2S_SD
  PA_5, //3
  PA_6, //4 I2S_MCK
  PA_7, //5
  PA_11, //6 SCL
  PA_12, //7 SDA

  PA_3, //8  MISO
  PA_4, //9  MOSI
  PC_14, //10 SS

  PB_0, //11
  PC_15, //12 LED
  PB_5, //13
  PB_6, //14 TXD

  PB_7, //15 RXD
  PB_8,
  PB_9,
  PC_14,
  PF_2
};

 

 

 

Serial이 정상 출력 되지 않는다.

CubeIDE 에서 핀맵 설정할 때  TX를 PB3으로 설정 해서 PB3으로 알고 있었는데...

 

 

 

STM32CubeIDE 에서 생성된 코드를 보니 TX가 PB6으로 설정되어 있다.

void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
{
  if(huart->Instance==USART1)
  {
    /* Peripheral clock disable */
    __HAL_RCC_USART1_CLK_DISABLE();

    /**USART1 GPIO Configuration   
    PB7     ------> USART1_RX
    PB6     ------> USART1_TX
    */
    HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7|GPIO_PIN_6);
  }
}

 

 

variant.h 파일에서 아래와 같이 설정 해 주니 정상 동작 한다.

// Default pin used for 'Serial' instance
// Mandatory for Firmata

#define PIN_SERIAL_RX           PB7
#define PIN_SERIAL_TX           PB6