Friday, June 28, 2024

Connect Raspberry Pi Pico to PSRAM with a library #PiDay @Raspberry_Pi

rp2040-psram is a header-only C library to allow access to SPI PSRAM via PIO on the RP2040 microcontroller as used on the Raspberry Pi Pico.

Due to the timing requirements of these PSRAM devices, reading data from them at high speed (>84MHz) requires the following clock behavior:

  • Read data needs to be sampled on the clock falling edge.
  • An extra “fudge factor” clock cycle is required before reading data.

Author Ian Scott says:

I could not get the hardware SPI interface on the RP2040 to work at high speed with this behavior, so I created a PIO SPI implementation specifically tailored to the behavior of the PSRAM chips and optimized for the highest speed possible:

  • A read or write command is given, followed by an optional read of data.
  • Chip select is driven by PIO.
  • DMA is used so CPU cycles are not used to service the PIO TX and RX FIFOs.<
  • Special optimized functions are provided for writing 8, 16, and 32 bit data as fast as possible.
  • All functions are tagged with __force_inline for the fastest speed possible.

The library is licensed under a permissive MIT License.

See more on GitHub.

No comments:

Post a Comment