아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
와일드한바다매245
와일드한바다매24521.06.02

STM 보드 간 SPI 통신관련 질문입니다

1개의 보드로 내부 핀(2개의 SPI)을 사용하여 원하는 동작을 하는데 성공하여

코드를 분리하여 2개의 보드로 Master, Slave로 나눠서 작동을 시켰으나 Slave쪽에서 계속 쓰레기값을 수신합니다.

신호를 보내지 않았음에도 Slave에서는 계속 이상한 신호를 수신하는데 원인을 알 수 있을까요?

코드는 매우 다양히 짜봤지만 근본적으로 문제는 똑같은거 같아 가장 간단한 코드로 첨부합니다

///////////Master//////////

uint8_t tx;

MXGPIOInit();

MXDMAInit();

MXUSART2UART_Init();

MXSPI2Init();

HAL_UART_Receive_IT(&huart2, &tx, 1);

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

HAL_SPI_Transmit_DMA(&hspi2, &tx, 1);

HAL_UART_Receive_IT(&huart2, &tx, 1);

}

/////////Slave////////////

(mian.c)

uint8_t rx;

HALSPI_Receive_IT(&hspi3, &rx, 1);

(stm32f4xx_it.c)

void SPI3_IRQHandler(void)

{

HAL_SPI_IRQHandler(&hspi3);

HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Port);

}

----------------------------------------------------------------

간단히 마스터에서 신호를 보내고 슬레이브에서 신호를 받으면 인터럽트가 발생하여 LED가 토글되도록 짰는데

마스터에서 신호를 보내지 않았음에도 불구하고 슬레이브 LED가 계속 깜빡이네요

혹시 원인을 아시나요?

55글자 더 채워주세요.
답변의 개수1개의 답변이 있어요!
  • 간단히 마스터에서 신호를 보내고 슬레이브에서 신호를 받으면 인터럽트가 발생하여 LED가 토글되도록 짰는데

    마스터에서 신호를 보내지 않았음에도 불구하고 슬레이브 LED가 계속 깜빡이네요

    혹시 원인을 아시나요?

    ===> 소스를 살펴보니

    슬레이브 쪽에서는 포트 init 하는 명령어가 없네요

    슬레이브도 동일하게 포트 초기화해줘야 합니다

    그리고 선배열은 어떻게 된건지 알수없으나 마스터 GND 는 슬레이브 GND 와 꼭 연결되어 있어야

    합니다,그래야 마스터,슬레이브가 신호 동기화가 됩니다