7#ifndef _HARDWARE_PSRAM_H
8#define _HARDWARE_PSRAM_H
63#ifndef PARAM_ASSERTIONS_ENABLED_HARDWARE_PSRAM
64#define PARAM_ASSERTIONS_ENABLED_HARDWARE_PSRAM 0
71#ifndef PICO_AUTO_DETECT_PSRAM
72#define PICO_AUTO_DETECT_PSRAM 0
76#ifndef PICO_AUTO_DETECT_PSRAM_SIZE
77#define PICO_AUTO_DETECT_PSRAM_SIZE PICO_AUTO_DETECT_PSRAM
81#ifndef PICO_AUTO_DETECT_PSRAM_CS
82#define PICO_AUTO_DETECT_PSRAM_CS PICO_AUTO_DETECT_PSRAM
83#elif PICO_AUTO_DETECT_PSRAM_CS && !PICO_AUTO_DETECT_PSRAM_SIZE
84#error "PICO_AUTO_DETECT_PSRAM_SIZE must be set to use PICO_AUTO_DETECT_PSRAM_CS"
89#ifndef PICO_AUTO_DETECT_PSRAM_CS_SKIP_DEFAULTS
90#define PICO_AUTO_DETECT_PSRAM_CS_SKIP_DEFAULTS PICO_AUTO_DETECT_PSRAM_CS
94#ifndef PICO_DEFAULT_PSRAM_ID
95#define PICO_DEFAULT_PSRAM_ID 0x5D
99#ifndef PICO_DEFAULT_PSRAM_MAX_FREQ
100#define PICO_DEFAULT_PSRAM_MAX_FREQ (133 * MHZ)
104#ifndef PICO_DEFAULT_PSRAM_MAX_SELECT
105#define PICO_DEFAULT_PSRAM_MAX_SELECT 8000
109#ifndef PICO_DEFAULT_PSRAM_MIN_DESELECT
110#define PICO_DEFAULT_PSRAM_MIN_DESELECT 18
117#ifndef PICO_RUNTIME_INIT_PSRAM
118#define PICO_RUNTIME_INIT_PSRAM "11080"
121#ifndef PICO_RUNTIME_SKIP_INIT_PSRAM
122#define PICO_RUNTIME_SKIP_INIT_PSRAM 0
125#ifndef PICO_RUNTIME_NO_INIT_PSRAM
126#define PICO_RUNTIME_NO_INIT_PSRAM 0
211int psram_set_params(uint32_t divisor, uint32_t rxdelay, uint32_t max_select, uint32_t min_deselect);
248#define psram_or_malloc(group, type, var, size) \
249 static type __uninitialized_psram(group) var##_psram[size]; static type* var; \
251 if (psram_check_address(var##_psram + (size))) { \
252 var = (type*)var##_psram; \
254 var = (type*)malloc((size) * sizeof(type)); \
263#define psram_or_free(var) if (!psram_check_address(var##_psram)) { free(var); }
int psram_reinitialize(void)
Re-initialize PSRAM.
Definition psram.c:289
int psram_set_params(uint32_t divisor, uint32_t rxdelay, uint32_t max_select, uint32_t min_deselect)
Explicitly set PSRAM timing parameters.
Definition psram.c:221
size_t psram_eid_to_size(uint8_t kgd, uint8_t eid)
Convert PSRAM EID to size.
Definition psram.c:25
size_t psram_get_size(void)
Get the size of the PSRAM.
Definition psram.c:315
bool psram_check_address(void *addr)
Check if an address is in available PSRAM.
Definition psram.c:322
bool psram_is_available(void)
Check if PSRAM is available and initialized.
Definition psram.c:311
int psram_configure_params(uint32_t max_psram_freq, uint32_t max_select_ns, uint32_t min_deselect_ns)
Configure PSRAM timing parameters.
Definition psram.c:195
size_t psram_detect_size(void)
Detect PSRAM size.
Definition psram.c:49
size_t psram_detect_cs_and_size(uint8_t *cs_gpios, size_t num)
Detect PSRAM chip select pin and size.
Definition psram.c:70