# 10BASE-T1S PHY RMII 인터페이스 연결 완벽 가이드
10BASE-T1S 순수 PHY를 이더넷 MAC이 내장된 MCU나 MPU와 연결할 때 가장 많이 사용되는 인터페이스가 RMII(Reduced Media Independent Interface)예요. 기존 MII 대비 핀 수가 절반으로 줄어들어 PCB 설계가 간편하고, STM32, NXP i.MX, Renesas RZ 등 주류 MCU/MPU에서 폭넓게 지원해요.
이 글에서는 10BASE-T1S PHY와 MCU를 RMII로 연결하는 방법을 하드웨어 설계부터 드라이버 설정까지 단계별로 정리할게요.
## RMII 인터페이스 기초 개념
### MII vs RMII 비교
MII(Media Independent Interface)는 IEEE 802.3u 표준으로 정의된 이더넷 MAC-PHY 인터페이스예요. 데이터를 4비트(니블) 단위로 전송하며, 25MHz 클럭에서 100Mbps, 2.5MHz에서 10Mbps를 전송해요. 신호 수가 16개 이상으로 다소 많아요.
RMII(Reduced MII)는 IEEE 802.3u의 부속 표준으로, MII의 핀 수를 절반 이하로 줄인 인터페이스예요. 데이터를 2비트 단위로 전송하고, 50MHz 고정 클럭을 사용해요. 10Mbps 이더넷에서는 이 50MHz 클럭 중 실제 데이터 전송은 훨씬 낮은 주파수에 해당해요.
10BASE-T1S 순수 PHY 중 RMII를 지원하는 제품으로는 Microchip LAN8670/LAN8671, NXP TJA1103 등이 있어요.
### RMII 신호 정의
RMII의 주요 신호를 살펴볼게요.
– **REF_CLK (50MHz)**: RMII 기준 클럭. MAC 또는 PHY 중 하나가 생성해 제공해요
– **TX_EN**: 전송 이네이블. MAC이 데이터를 전송할 때 HIGH
– **TXD[1:0]**: 2비트 전송 데이터 (MAC → PHY 방향)
– **CRS_DV**: Carrier Sense와 RX Data Valid를 공유하는 신호. PHY에서 MAC으로 전달
– **RXD[1:0]**: 2비트 수신 데이터 (PHY → MAC 방향)
– **RX_ER**: 수신 오류 신호 (선택적)
– **MDIO**: 관리 데이터 I/O (레지스터 접근)
– **MDC**: MDIO 클럭 (일반적으로 2.5MHz 이하)
핵심 신호는 7~8개로 MII의 절반 수준이에요.
## RMII 클럭 아키텍처
### 클럭 소스 선택: MAC vs PHY
RMII에서 50MHz REF_CLK를 누가 생성하느냐에 따라 두 가지 방식이 있어요.
**MAC에서 클럭 공급(Clock Source = MAC)**: MCU 내부에서 50MHz 클럭을 생성해 PHY에 공급해요. 이 방식이 더 일반적이고 PHY 설계가 단순해져요. MCU의 PLL이 안정적인 50MHz를 생성해야 해요.
**PHY에서 클럭 공급(Clock Source = PHY)**: PHY 내부 PLL이 외부 크리스탈을 기반으로 50MHz를 생성하고 MAC에 공급해요. 이 방식은 MCU의 클럭 설계 부담을 줄여주지만, PHY 데이터시트에서 REFCLKO 핀 지원 여부를 확인해야 해요.
10BASE-T1S 순수 PHY는 대부분 외부 크리스탈(25MHz)이나 클럭 입력을 받아 내부적으로 50MHz를 합성하고, REF_CLK를 MCU에 공급하는 방식을 지원해요.
### 클럭 신호 품질 관리
REF_CLK의 신호 품질은 10BASE-T1S 통신 안정성에 직결돼요. 클럭 지터(Jitter)가 크면 데이터 샘플링 오류가 발생할 수 있어요. PCB 레이아웃에서 REF_CLK 라인은 가능한 짧게 라우팅하고, 다른 고속 신호와 크로스오버를 피해야 해요.
클럭 라인에는 22~33옴의 직렬 댐핑 저항을 배치해 고조파를 억제하는 것이 좋아요. 크리스탈 근처에는 로드 커패시터(일반적으로 15~22pF)를 배치하며, PHY 데이터시트의 권장값을 따르는 것이 중요해요.
## 하드웨어 연결 설계
### 기본 회로 구성
10BASE-T1S PHY(예: LAN8670)와 STM32 MCU를 RMII로 연결하는 기본 회로를 살펴볼게요.
MCU의 RMII 핀(ETH_TX_EN, ETH_TXD0, ETH_TXD1, ETH_CRS_DV, ETH_RXD0, ETH_RXD1, ETH_REF_CLK)을 PHY의 RMII 핀에 직접 연결해요. MDIO와 MDC는 MCU의 이더넷 MAC 관리 인터페이스에 연결해요. PHY의 nRESET 핀은 MCU의 GPIO에 연결해 소프트웨어에서 PHY를 리셋할 수 있게 해요. nINT(인터럽트) 핀도 MCU의 GPIO에 연결하면 PHY 상태 변화를 인터럽트로 감지할 수 있어요.
### 전원 및 바이패스 커패시터
PHY의 전원 공급 회로는 3.3V VDDA(아날로그 전원), 3.3V VDDIO(디지털 I/O 전원)를 각각 별도로 공급하는 것이 좋아요. 아날로그 전원(VDDA)에는 페라이트 비드 + 커패시터로 디지털 노이즈 필터링을 해주세요.
각 전원 핀에는 100nF + 10μF 바이패스 커패시터를 PHY 핀 바로 옆에 배치해요. 고주파 노이즈는 100nF 세라믹으로, 저주파 변동은 10μF으로 처리해요.
### MDI 라인 설계
10BASE-T1S의 단선 버스(MDI+, MDI-)는 100옴 차동 임피던스로 라우팅해요. 두 신호는 항상 동일한 길이와 간격으로 평행하게 라우팅해야 해요. 커넥터 근처에 공통 모드 초크(Common Mode Choke)를 배치하면 EMC 성능이 향상돼요.
단선 버스의 종단 저항(100옴)은 버스의 양쪽 끝에만 배치해요. 중간 노드에는 종단 없이 스텁(Stub) 형태로 연결해요. 스텁 길이는 가능한 짧게(수 cm 이내) 유지하는 것이 신호 품질에 유리해요.
## 드라이버 소프트웨어 설정
### STM32 HAL 기반 설정
STM32CubeIDE를 사용하면 RMII 이더넷 MAC 설정을 GUI로 편리하게 할 수 있어요. CubeMX에서 ETH 주변장치를 선택하고 RMII 모드로 설정해요. 핀 매핑은 MCU의 이더넷 핀 배치를 참고해 자동으로 설정할 수 있어요.
PHY 드라이버는 MDIO를 통해 PHY 레지스터를 읽고 쓰는 함수를 구현해야 해요. STM32 HAL에서는 `HAL_ETH_ReadPHYRegister()`와 `HAL_ETH_WritePHYRegister()` 함수를 제공해요. PHY ID 레지스터를 읽어 올바른 PHY인지 확인한 뒤, PLCA 설정 레지스터를 프로그래밍해요.
### Linux 이더넷 드라이버
임베디드 Linux에서 10BASE-T1S PHY를 RMII로 사용하는 경우, 디바이스 트리(Device Tree)에 PHY 노드를 추가해야 해요. 예를 들어 LAN8670 PHY라면 compatible 속성을 “microchip,lan8670″으로 설정하고 MDIO 주소와 인터럽트를 지정해요.
커널 4.20 이상에서는 10BASE-T1S PHY 드라이버(lan87xx.c)가 내장되어 있어요. PLCA 설정은 ethtool 명령어를 통해 실행 중에도 변경할 수 있어요. 예를 들어 `ethtool –set-plca-cfg eth0 enable on node-id 1 node-cnt 8`와 같이 PLCA 파라미터를 설정할 수 있어요.
## 레이아웃 및 신호 무결성
### RMII 신호 라우팅 원칙
RMII 신호는 50MHz로 동작하므로 신호 무결성에 신경 써야 해요.
TXD[1:0], RXD[1:0]는 MAC과 PHY 사이를 짧게 라우팅해요. 이 신호들은 가능하면 같은 레이어에 라우팅하고, 길이를 맞추는(Length Matching) 것이 좋아요. 길이 불일치가 크면 셋업/홀드 타임 위반이 발생할 수 있어요.
REF_CLK 신호는 특히 주의해서 라우팅해요. 가능한 짧고 직선으로 라우팅하며, 데이터 신호와의 크로스토크를 피하기 위해 일정 간격을 유지해요.
### 스택업과 그라운드 플레인
RMII 신호 품질을 위해 최소 4레이어 PCB를 권장해요. 이더넷 MAC과 PHY 사이의 RMII 신호는 내층 그라운드 플레인 바로 위에 라우팅하면 임피던스가 안정되고 크로스토크가 줄어요. MDI 차동 신호 쌍은 별도의 공간에 라우팅하고 다른 신호와 격리해요.
## 결론
10BASE-T1S PHY RMII 연결은 표준적인 이더넷 MAC-PHY 연결 방식과 크게 다르지 않아요. RMII의 클럭 아키텍처를 이해하고, 신호 무결성을 확보하는 레이아웃을 적용하며, MCU의 이더넷 MAC과 PHY 드라이버를 올바르게 설정하면 안정적인 10BASE-T1S 연결을 구현할 수 있어요.
STM32나 i.MX RT 같은 인기 MCU에는 이미 RMII 이더넷 예제가 풍부하게 제공되어 있어요. 기존 100BASE-TX RMII 레퍼런스 설계를 바탕으로 PHY 부분만 10BASE-T1S로 교체하는 방식으로 접근하면 개발 기간을 크게 단축할 수 있어요.