xxxajk
Well-known member
I have some ISSI PSRAM that is perfectly compatible with Teensy4.1 when the ISSI ID is checked, and you can even mix the two.
The ISSI PSRAM part number I tested is IS66WVR8M8FALL-104NLI and the ID for it is 0x5D9D. (Yes this is a 1.9v part, but works)
I ran all sorts of tests, none fail. Just works. The only thing "missing" in the commands is something that the SOC doesn't use, setting page sizes. As a bonus it provides a new command to go into a super deep sleep/power down mode that retains the contents, which could help with battery powered projects.
There is also a (yet untested) a possibility of using 16MB and the smaller 4MB chips, but I have not tested this yet. This could be accomplished by returning bits 45,46,47 which indicate the memory size.
010 == 32Mb (4MB)
011 == 64Mb (8MB)
100 == 128Mb (16MB)
the other 13 bit patterns are "reserved", i.e. shouldn't ever appear.
I patched like so:
The ISSI PSRAM part number I tested is IS66WVR8M8FALL-104NLI and the ID for it is 0x5D9D. (Yes this is a 1.9v part, but works)
I ran all sorts of tests, none fail. Just works. The only thing "missing" in the commands is something that the SOC doesn't use, setting page sizes. As a bonus it provides a new command to go into a super deep sleep/power down mode that retains the contents, which could help with battery powered projects.
There is also a (yet untested) a possibility of using 16MB and the smaller 4MB chips, but I have not tested this yet. This could be accomplished by returning bits 45,46,47 which indicate the memory size.
010 == 32Mb (4MB)
011 == 64Mb (8MB)
100 == 128Mb (16MB)
the other 13 bit patterns are "reserved", i.e. shouldn't ever appear.
I patched like so:
C:
uint32_t rid = flexspi2_psram_id(0);
if (rid == 0x5D0D || rid == 0x5D9D) {
// first PSRAM chip is present, look for a second PSRAM chip
...
rid = flexspi2_psram_id(0);
if (rid == 0x5D0D || rid == 0x5D9D) {
flexspi2_command(4, 0x800000);
// Two PSRAM chips are present, 16 MByte
...
Last edited: