Hoa Kỳpolpo/rp2040-psram
A header-only C library to allow access to SPI PSRAM via PIO on the RP2040 microcontroller.
Thành tựu nổi bật
Những danh hiệu mới nhất của dự án
#1 Repository Của Tháng
#2 Repository Của Tháng
#6 Repository Của Tháng
🧠 Thư viện PIO SPI cho PSRAM trên RP2040 — tốc độ 140MHz mà hardware SPI không làm được
Thư viện header-only cho RP2040, truy cập SPI PSRAM qua PIO thay vì hardware SPI, đạt 140MHz hiệu quả.
polpo/rp2040-psram là thư viện C header-only cho phép truy cập chip PSRAM ngoài qua giao tiếp SPI trên vi điều khiển RP2040 (dùng trên Raspberry Pi Pico). Do yêu cầu timing nghiêm ngặt của PSRAM — dữ liệu phải lấy mẫu tại cạnh xuống của clock và cần thêm một chu kỳ clock "đệm" — phần cứng SPI của RP2040 không thể hoạt động ổn định ở tốc độ cao. Tác giả đã xây dựng lại giao thức SPI bằng PIO (Programmable I/O) của RP2040, tối ưu riêng cho hành vi của các chip PSRAM.
✨ Điểm nổi bật
- PIO thay vì hardware SPI: Triển khai giao thức SPI tùy chỉnh qua PIO để đáp ứng yêu cầu sampling cạnh xuống và chu kỳ đệm mà hardware SPI không hỗ trợ được.
- DMA-driven: Sử dụng DMA để xử lý TX/RX FIFO, giải phóng CPU khỏi việc phục vụ từng byte.
- Tốc độ 140MHz hiệu quả: Đạt clock SPI 140MHz khi RP2040 chạy ở 280MHz — vượt xa khả năng của hardware SPI.
- Hàm tối ưu theo kích thước: Cung cấp hàm chuyên dụng cho ghi dữ liệu 8, 16, 32 bit với tốc độ tối đa.
__force_inlinetrên mọi hàm: Đảm bảo tốc độ thực thi cao nhất bằng cách ép inline.- Chip select qua PIO: CS được điều khiển trực tiếp bởi PIO, không phụ thuộc phần cứng SPI.
- Đã test trên nhiều chip: APS6404L, LY68L6400, IPS6404, ESP-PSRAM64H — tất cả đều ổn định ở 140MHz.
💡 Vì sao đáng chú ý
Phần cứng SPI trên RP2040 không thể đáp ứng yêu cầu timing đặc thù của PSRAM (cạnh xuống + chu kỳ đệm). Thay vì chấp nhận tốc độ thấp hơn, tác giả dùng PIO — một trong những tính năng mạnh nhất của RP2040 — để tự triển khai giao thức SPI đúng theo đặc tính chip nhớ. Kết quả là tốc độ gấp đôi so với hardware SPI, với DMA giúp CPU hoàn toàn rảnh rỗi.
Dự án cũng có ví dụ thực tế kiểm tra đọc/ghi 8MB dữ liệu với nhiều kích thước truy cập (8, 16, 32, 128 bit), và đã được sử dụng trong dự án PicoGUS để mô phỏng 1MB sample RAM của Gravis Ultrasound. Yêu cầu CS và SCK phải nằm trên hai GPIO liên tiếp là hạn chế cần lưu ý khi tích hợp.
#PSRAM #RP2040 #RaspberryPiPico #PIO #SPI #TiniX
Dự án tương tự
Khám phá các dự án và mô hình AI khác có sự tương đồng.
Arduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips
Emulation of ISA sound cards and CD-ROM on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS, Panasonic CD-ROM) with USB mouse/joystick support
Switch to different gamepad modes using a gamepad as input. Re-use old gamepads that don't support USB connections or make compatibles with certain platform.
USB keyboard to PS/2 / AT / XT interface converter using a Raspberry Pi Pico
Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board. 📡
Arduino library for easy, interrupt driven speech, MP3, AAC, and WAV playback on the Raspberry Pi Pico RP2040, Pico 2 RP2350, and ESP32
Multi-Platform Gamepad Firmware for Raspberry Pi Pico and other RP2040 boards
NES Emulator with SD card and menu support for the Raspberry PI Pico, Pico 2 and other RP2040/RP2350 based microcontrollers. Play your games from SD card on a HDMI display.