아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
이타치처럼탈주
이타치처럼탈주19.06.14

Nucleo와 Arduino 간에 SPI 통신이 잘 이루어지나요?

현재 Nucleo-F401re와 Arduino Uno 보드 간에 SPI 통신이 이루어지는 작업을 진행중입니다.

Uno를 Master Nucleo를 Slave로 설정하려고 하는데...

오랜 시간의 구글링에도 둘 사이의 SPI 통신에 대한 내용이 나오질 않고 있습니다...

여러 코드를 구현한 결과 일단 Nucleo에서 Uno로 데이터가 송신은 되는거 같은데, 자꾸 쓰레기 값만 나오게 됩니다.

제 생각에 이 이유는 Uno에서 Nucleo로 먼저 데이터를 송신하지 않았기 때문에 발생한거 같은데...

Nucleo에서 데이터를 받는 방법을 도무지 모르겠습니다;;

아래 코드는 STM32CubeIDE를 통해 작성한 SPI 데이터 수신 확인을 위한 코드 입니다.

uint8_t m[] = {};

HAL_SPI_Receive_IT(&hspi1,(uint8t*)m,(uint16_t)sizeof(m));

printf("Received Data : %x or %x\n", m, (uint8t*)SPI1->DR);

HAL_SPI_Receive_IT 함수가 문제인것 같은데

만약 문제라면 어떻게 고쳐야 하는지 궁금합니다.

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 제가 퇴근 중이라 정확하게 설명 드리기는 어렵지만

    위의 코드에서 HALSPIReceive_IT에서 m에 값이 써지면 다시 말해서 수신 이벤트가 발생하면 ISR로 들어갑니다. callback함수에 그 이후에 처리할 기능을 넣으셔야 합니다.

    IDE에서 프로젝트 검색으로 callback을 찾으시던가 아니면 프로젝트를 cube에서 생성하셨으면 IT(interrupt)관련 c파일에서 관련 callback 함수를 확인 할 수 있습니다.

    위에서 언급된 수신값 출력하는 printf문이 callback 함수에 들어가야겠지요..

    아니면 polling으로 먼저 검증해 보시기 바립니다.

    두서없이 써서 죄송하네요..