STM32 ETH + LwIP (UDP Echo Server)

사용 보드 : F429ZI

프로그램 : CubeIDE

Background

[Youtube 강의]

TCP/IP OSI Layer Model [OSI Layer Model 설명 블로그]

STM32-> UDP Server

PC -> Client

Data 전송 (Data) <-Frame 하여 보낸 후

수신하는 부분에서 Frame 을 해제하여 받음

각 계층마다 어떤 데이터가 붙는지 알 수 있다.

[각 헤더 설명 링크]

DP83848 PHY Transceiver : RJ45 커넥터 (Eth 신호 -> 3.3V Digital 신호)

1Layer인 물리 계층의 전기적 신호를 전달하는 과정을 해줌

<영상의 프로젝트 과정>

ETH -> LwIP stack (third party open source) -> UDP echo server -> User Application

내가 사용하는 보드 F429ZI 는 Ethernet Port가 존재함

UTP (Unshieled Twisted Pair) 케이블 : 절연체로 보호받지 않은 두 줄씩 페어로 묶인 케이블

종류 : Direct Cable(T568B), Cross Cable(T568A)

1. GPIO 설정

.ioc 파일에서

  • Connectivity -> ETH -> RMII

  • Middleware -> LWIP -> Enabled

ethernetif.c 내부

2. 초기화

ethernetif.c -> low_level_init : mac address 초기화

lwip.c -> MX_LWIP_Init : ip 초기화

3. 코드

[Stm32CubeF4 링크]

알집을 풀고나서
Project -> STM32xG_EVAL -> Application -> LwIP -> LwIP_UDP_Echo_Server 예제

자신의 원래 프로젝트에

Inc -> udp_echoserver.h

src -> udp_echoserver.c

다음 파일을 복사하고

#include "udp_echoserver.h"

한다.

lwip.c 에서 가져온 struct netif gnetif; 를 -> lwip.h 에 extern 사용

main 안쪽에

init 한줄 while 문에 코드 두 줄을 입력한다.

  • udp_echoserver_init();
  • ethernetif_input(&gnetif);
  • sys_check_timeouts();

4. Ping Test

window 버튼 + R -> cmd

ping 192.168.0.235 <- 본인이 설정한 stm32 ip 주소

5. UDP Program

[프로그램 사이트 링크]

hercules setup utility

udp_echoserver.h 의 default port는 7번이다.

실행 후 UDP 선택

<작성중>

                        

좋은 웹페이지 즐겨찾기