본문 바로가기

[ST_MICRO]/STM32G

#STM32G-SSM EVM - Arduino 코드로 SPI 테스트

[STM32G-SSM] 보드에서 Arduino 코드로 SPI출력 하면 멈춰 버린다.

  
variant.h 파일에서 핀맵 맞추고 PinMap_SPI_MOSI[0] 에 SPI2가 디폴트가 되도록 수정 했다.

#include <SPI.h>

unsigned char spixfer(unsigned char Data)
{
    return SPI.transfer(Data);
}

int cnt = 0;
void loop() 
{
 Serial.println(cnt++);

  
  digitalWrite(12, HIGH);
  delay(100);
  
  spixfer(0xff);

  digitalWrite(12, LOW);
  delay(100);  
}



SCLK출력은 나오는데(기본 4Mhz) MOSI 출력이 나오지 않는다.
  

STM32CubeMx 에서 생성된 코드를 보니 설정이 다르다.
GPIO_AF0_SPI2 에서  GPIO_AF1_SPI2 로 설정 하니 정상으로 출력이 된다.

#ifdef HAL_SPI_MODULE_ENABLED

WEAK const PinMap PinMap_SPI_MOSI[] =
{
  {PA_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, 
  {PA_2,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},

  //{PA_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},

  {PA_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
  {PB_5,  SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
  {PB_7,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)},
  {NC,    NP,    0}
};
#endif


  

태그