본문 바로가기

[ST_MICRO]/STM32F7

[STM32F7 EVM] STM32F767 SPI 테스트 - W5500 TCP/IP 전송 속도 테스트

 

[NET_EV_SM EVM]보드와 W5500 EVM 보드를 이용하여 Ethernet (TCP/IP) 테스트를 진행 했다

[STM32F7 EVM]보드에는 SSM 모듈 표준 핀맵이 적용되어 있기 때문에 W5500 EVM과 같은 모듈을 연결하여 쉽게 테스트 가능하다.

 

 

 

W5500은 SPI통신을 사용하므로 STM32CubeMx를 이용하여 SPI 항목을 설정해 준다. 

 

 

W5500 드라이버 API를 사용하기 위해 SPI Read/Write 함수를 포팅해 주면 기존 코드를 그대로 사용할 수 있다.

#define SPIx_TIMEOUT_MAX		((uint32_t)0x1000)

unsigned char SPI1_WriteReadByte(unsigned char Data)
{
	uint8_t receivedbyte = 0;

	/* Send a Byte through the SPI peripheral */
	HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) &Data, (uint8_t*) &receivedbyte, 1, SPIx_TIMEOUT_MAX);
	
	return receivedbyte;
}

unsigned char SPI1_WriteBuf(unsigned char *pDataBuf, unsigned int Size)
{
	uint8_t receivedbyte = 0;

	HAL_SPI_Transmit(&hspi1, pDataBuf, Size, SPIx_TIMEOUT_MAX);

	return receivedbyte;
}

unsigned char SPI1_ReadBuf(unsigned char *pDataBuf, unsigned int Size)
{
	uint8_t receivedbyte = 0;

	HAL_SPI_Receive(&hspi1, pDataBuf, Size, SPIx_TIMEOUT_MAX);

	return receivedbyte;
}

 

 

STM32CubeMx 에 SPI Read/Write함수 포팅후 TCP loopback 예제 함수를 호출하여 전송율을 테스트 해 볼수 있다.

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
 // SCB_EnableICache();
  //SCB_EnableDCache();

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_SPI1_Init();
  MX_USART1_UART_Init();


  /* USER CODE BEGIN 2 */
  //W5500 초기화 함수
  W5500_Init();
  Display_Net_Info();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
	    ProcessTCPS();
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

 

 

STM32F7에서 W5500 을 이용하여 TCP/IP 전송율 테스트를 해 보면 5.24Mbps 정도가 측정된다.