RepositoryC
ST

steve-m/Pico-100BASE-TX

Bit-banged 100 MBit/s Fast Ethernet transmitter and UDP framer for Raspberry Pi RP2040/RP2350

296stars
14forks
0issues
1views

Thành tựu nổi bật

Những danh hiệu mới nhất của dự án

1
TINIX TRENDING·Chủ đề: rpi-pico

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: rp2350

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: bitbanging

#1 Repository Của Tháng

🔌 Bit-bang Ethernet 100 MBit/s trên RP2040/RP2350

Thư viện biến hai GPIO thông thường thành cổng Ethernet Fast 100 MBit/s bằng PIO — không cần chip Ethernet chuyên dụng.

Pico-100BASE-TX là thư viện cho phép RP2040 và RP2350 truyền dữ liệu ở tốc độ ~11 MB/s qua kết nối 100BASE-TX Fast Ethernet, sử dụng PIO (Programmable I/O) để bit-bang toàn bộ giao thức. Đây là phiên bản nâng cấp từ Pico-10BASE-T (chỉ 10 MBit/s, TX-only).

✨ Điểm nổi bật

  • 100BASE-TX qua PIO: Sử dụng hai GPIO và PIO để tạo tín hiệu Ethernet 125 MHz symbol rate — không cần PHY chip ngoài.
  • MLT-3 encoding: Ba mức điện áp (-1, 0, +1) được mã hóa trên cặp xoắn thông qua hai GPIO xuất lần lượt 0b01, 0b00, 0b10.
  • Scrambling với LFSR: Bộ lọc nhiễu dùng Linear Feedback Shift Register 11 bit (taps x^11 + x^9 + 1), lặp sau 2047 bit, dùng lookup table chiếm ~10 KB RAM.
  • 4B5B line code: Mỗi nibble 4 bit được mã thành 5 bit, với các ký hiệu đặc biệt J, K, T, R để đánh dấu start/end frame và idle.
  • DMA CRC32: Tính Ethernet FCS (Frame Check Sequence) bằng DMA CRC sniffer, UDP checksum cũng dùng DMA ở chế độ sum mode.
  • Idle stream qua DMA: Pre-inversion scrambling cho phép gửi liên tục idle symbols qua DMA mà không tốn CPU — chỉ dùng CPU khi thực sự cần truyền frame.
  • UDP framing: Dữ liệu đầu ra được đóng gói thành các datagram UDP, đọc từ ringbuffer.

💡 Vì sao đáng chú ý

Việc triển khai 100BASE-TX bằng phần mềm là bài toán rất khó — MLT-3 encoding, scrambling, 4B5B line code ở 125 MHz symbol rate đòi hỏi timing chính xác tuyệt đối. PIO trên RP2040/RP2350 giải quyết được điều này bằng hardware-level bit-banging, giải phóng CPU cho tác vụ khác. Thư viện này biến một chiếc Pico giá vài đô la thành một node Ethernet thật sự, mở ra khả năng thu thập dữ liệu thời gian thực (ADC, audio) và truyền đi qua mạng mà không cần bộ phận Ethernet đắt tiền.

Điểm thú vị là cách tiếp cận "DMA-first" — khi gửi dữ liệu liên tục (ví dụ streaming ADC), CPU gần như không tham gia. Thư viện kèm theo ba ví dụ thực tế: counter (counter 16-bit), internal_adc (ADC nội bộ), và pcm1802_audio (stream audio 75 kHz từ board PCM1802).


#RP2040 #RP2350 #Ethernet #Bitbanging #PIO #OpenSource #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryC
jblanked/Picoware

Open-source custom firmware for PicoCalc, Cardputer ADV, Flipper Zero, POOM, and other ESP32/Raspberry Pi Pico devices

358
Oct 25, 2026
RepositoryC
xrip/pico-286

RP2040/RP2350 286 PC emulator for MURMULATOR dev board

321
Aug 21, 2026
RepositoryC
grblHAL/RP2040

grblHAL driver for RP2040/RP2350 (Pi Pico, Pi Pico2 etc)

174
Oct 15, 2026
RepositoryC
vshymanskyy/wasm2mpy

Compile WebAssembly to native MicroPython modules

155
Aug 5, 2026
RepositoryC
earlephilhower/BackgroundAudio

Arduino library for easy, interrupt driven speech, MP3, AAC, and WAV playback on the Raspberry Pi Pico RP2040, Pico 2 RP2350, and ESP32

151
Oct 8, 2026
RepositoryForth
tabemann/zeptoforth

A not-so-small Forth for Cortex-M

357
Oct 27, 2026
RepositoryC++
elehobica/RPi_Pico_WAV_Player

Hi-Res WAV player for Raspberry Pi Pico / Pico 2

226
Aug 26, 2026
RepositoryC
skywind3000/kcp

:zap: KCP - A Fast and Reliable ARQ Protocol

16.9k
Jun 23, 2026
RepositoryC
cesanta/mongoose

Embedded web server, with TCP/IP network stack, MQTT and Websocket

13.1k
Oct 27, 2026