MCUME/MCUME_pico2/psram/psram_t.h

61 wiersze
1.3 KiB
C++

/*
PSRAM driver for IPS6404
*/
#ifndef _PSRAM_T_H_
#define _PSRAM_T_H_
#ifdef __cplusplus
#include "pico.h"
#include "pico/stdlib.h"
//#define PSCACHE 1
//#define PAGE_SIZE 16 //32 //2048 //1024
//#define MAX_PAGES 8
#define PAGE_SIZE 4 //16 //32 //2048 //1024
#define MAX_PAGES 8
struct Page {
uint8_t page[PAGE_SIZE];
uint32_t pageid;
int8_t next;
int8_t prev;
};
class PSRAM_T
{
public:
PSRAM_T(uint8_t _CS, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12);
void begin(void);
void reset(void);
void spi_mode(void);
void qspi_mode(void);
void pswrite(uint32_t addr, uint8_t val);
uint8_t psread(uint32_t addr);
uint16_t psread_w(uint32_t addr);
void pswrite_w(uint32_t addr, uint16_t val);
private:
static uint8_t psram_read(uint32_t addr);
static uint16_t psram_read_w(uint32_t addr);
static void psram_read_n(uint32_t addr, uint8_t * val, int n);
static void psram_write(uint32_t addr, uint8_t val);
static void psram_write_w(uint32_t addr, uint16_t val);
//static void psram_write_n(uint32_t addr, uint8_t * val, int n);
protected:
static uint8_t _cs, _miso, _mosi, _sclk;
static Page pages[MAX_PAGES];
static uint8_t nbPages;
static int8_t top;
static int8_t last;
};
#endif
#endif