아하
생활

생활꿀팁

이타치처럼탈주
이타치처럼탈주

Nucleo와 Arduino 간 SPI 통신 구현은 어떻게 하나요?

Nucleo는 STM32Cube IDE를 통해 Slave로 설정하고
Arduino는 sketch를 통해 Master로 설정했습니다.

먼저 아래는 Arduino로 구현한 코드입니다.

void setup(void) {
SPI.begin();
digitalWrite(SS, HIGH);
SPI.setClockDivider(SPICLOCKDIV16);
SPI.setDataMode(SPI_MODE1);
Serial.begin(9600);
}

void loop(void) {
digitalWrite(SS, LOW);
byte A = SPI.transfer(0x08);
delay(5);
digitalWrite(SS, HIGH);
Serial.println(A);
delay(1000);
}

아래는 Nucleo 코드입니다.

uint8t m[] = {0x06};
HAL
_SPI_Receive_IT(&hspi1,(uint8t*)m,(uint16_t)sizeof(m));
HALSPITransmitIT(&hspi1, (uint8t*)m, (uint16_t)sizeof(m));

간단하게 Slave인 Nucleo에게 0x08 값을 송신해주고
Nucleo는 SPI 통신의 특징으로 인해 0x06을 Arduino에게 보내주려고 하는 코드입니다.

그런데 이렇게 작성할 시 Arduino는 자꾸 8값만 출력하게 되는데
혹시 어떤 부분이 잘못 됬는지, 어떻게 고쳐야하는지 알 수 있을까요?

+추가 질문
Slave인 Nucleo는 Receive 함수를 사용하지 않고 Transmit 함수만 써도 둘 사이에 데이터를 주고 받을 수 있나요?

1개의 답변이 있어요!