STM32 SPI Slave Mode 테스트
SPI Slave통신에 시간을 많이 까먹었는데... 아무튼 아래와 같이 해결 했다.
Master로 부터 데이터 수신클럭 받고 SPI_I2S_ReceiveData()로 데이터를 받아주어야 했는데... 이부분을 생각 못해서 데이터가 이상하게 출력되었다.
//SPI Master로 부터 클럭이 들어오면 데이터 받고
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
temp = SPI_I2S_ReceiveData(SPI2);
//DebugPrint("SPI2 RX:%02X\r\n", temp);
temp = SPI_I2S_ReceiveData(SPI2);
//DebugPrint("SPI2 RX:%02X\r\n", temp);
//원하는 데이터를 보낸다.
//Send SPI2 data
SPI_I2S_SendData(SPI2, cnt++);
//DebugPrint("DataOut2\r\n");
//Send SPI2 data
SPI_I2S_SendData(SPI2, cnt++);
//DebugPrint("DataOut2\r\n");
Master에서는 그냥
temp = SPI0_WriteReadByte(0x00);
DebugPrint("Encoder=%02x\r\n", temp);
DebugPrint("Encoder=%02x\r\n", temp);
이렇게 하면 데이터 읽어 올 수 있다.
반응형