STM32F439에 내장된 이더넷을 연결할 수 있는 MAC가 포함되어 있고 Ethernet Phy 칩만 연결하면 쉽게 이더넷을 연결 할수 있다.
이번에는 STM32CubeMx를 이용하여 아주 간단하게 LwIP TCP / IP 스택을 올려서 테스트 해보았다.
STM32F439 EVM 보드는 이더넷 Phy 칩을 연결하면 STM32F4의 이더넷을 테스트 할 수 있다.
이더넷 Phy는 칩을 직접 납땜하거나 Ethernet Phy 모듈을 연결 할 수 있다.
Ethernet Phy 모듈은 핀맵을 표준화 해서 다양한 종류의 Ehternet Phy 칩을 테스트 할 수 있다.
STM32CubeMx 를 이용하여 이더넷 인터페이스를 설정한다.
Ethernet PHY는 RMII 모드로 연결되어 있기 때문에 모드를 RMII로 선택해 준다.
Middleware 탭에서 LWIP 설정을 해 준다. 디폴트 옵션을 사용하면 된다.
클럭은 보드에 맞게 설정해 준다.
STM32F439 LWIP 를 이용한 TCP/IP 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 *//* 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_USART1_UART_Init();sprintf(buf, "STM32 ETHERNET TEST: Clk=%d\r\n", HAL_RCC_GetHCLKFreq()/1000);HAL_UART_Transmit(&huart1, buf, strlen(buf), 10);MX_LWIP_Init();while((gnetif.ip_addr.addr) == 0){MX_LWIP_Process();}/* USER CODE BEGIN 2 */print_ip_settings(&gnetif.ip_addr.addr, &gnetif.netmask.addr, &gnetif.gw.addr);/* USER CODE END 2 *///User_notification(&gnetif);tcp_echoserver_init();/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){ethernetif_input(&gnetif);/* Handle timeouts */sys_check_timeouts();}/* USER CODE END 3 */}
STM32F439 Ehernet TCP/IP 전송 속도 테스결과
32Mbps 로 측정되며 STM32F439 + W5300 이더넷 전송 속도 테스트결과와 비교하면 3배 정도 느린것 같다.
하지만 초당 4Mbyte 이면 나쁘지 않은것 같다.
반응형