RepositoryCUSUnited States
PO

polpo/rp2040-psram

A header-only C library to allow access to SPI PSRAM via PIO on the RP2040 microcontroller.

193stars
17forks
12issues
2views

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ủ đề: psram

#1 Repository Của Tháng

2
TINIX TRENDING·Chủ đề: spi

#2 Repository Của Tháng

6
TINIX TRENDING·Chủ đề: raspberry-pi-pico

#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_inline trê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

Similar Projects

Discover other similar projects and AI models.

RepositoryC
Bodmer/TFT_eSPI

Arduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips

5.0k
Apr 3, 2026
RepositoryC
polpo/picogus

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

803
Oct 2, 2026
RepositoryC
tuupola/hagl

Hardware Agnostic Graphics Library for embedded

474
Oct 12, 2026
RepositoryC
Loc15/PicoGamepadConverter

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.

182
Jul 13, 2026
RepositoryC
No0ne/ps2pico

USB keyboard to PS/2 / AT / XT interface converter using a Raspberry Pi Pico

177
Jul 20, 2025
RepositoryC
ArmDeveloperEcosystem/lorawan-library-for-pico

Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board. 📡

167
Mar 17, 2025
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
RepositoryC++
OpenStickCommunity/GP2040-CE

Multi-Platform Gamepad Firmware for Raspberry Pi Pico and other RP2040 boards

2.6k
Oct 26, 2026
RepositoryC++
PicoPlus-devel/pico-infonesPlus

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.

536
Oct 23, 2026