23K256 SRAM Issues [solved]

I’ve spent the better part of 2 days attempting to get SPI 23K256 RAM chips to communicate with an arduino. I’ve tried 3 arduino boards (168, 328 & uno), two 23K256 chips, wired them with and without voltage dividers and logic level shifters.

I’ve tried several SPI and SPISRAM libraries found on the internet.

I’ve also read countless reports of others having similar issues and come to the conclusion these chips hate me. I view anyone claiming they've made this work skeptically.

At this point I'm contemplating sacrificing animals to the God of Peripheral Interfaces. For the sake of stray neighborhood cats, any advice would be appreciated.

You did

At this point I'm contemplating sacrificing

you more then likely supplied them with sacrificing 5 volts

Part Number VCC Range Page Size Temp. Ranges Packages
23K256 2.7-3.6V 32 Byte I, E P, SN, ST
23A256 1.5-1.95V 32 Byte I P, SN, ST

I powered the chips off the arduino 3v3 pin and ran CS, SI and SCK thru a spark fun Logic Level Shifter (and also ran them thru an adafruit nxp0108 breakout board). I tired using 1k8/3k3 R voltage dividers too and with and without a pullup on CS. I get data out of the chip, but its gibberish. Thx.

Did you pull the HOLD pin high?

BTW, you might be interested to know there is now an SPI SRAM chip with
larger store size, which runs at 5V or 3.3V, and comes in DIP8 besides SOIC8.
I'm using this chip, and it's much more convenient than SOIC8 and 3.3V.

Although this may not be a factor, the other thing is, if you use a pin other
than Arduino D10 for CS, you still have to set D10 = output, else the SPI
peripheral will revert to slave mode.

Is that a "feature" a bug or just a gotcha? would seem to me to be more valuable If the cs pin could be set rather than accommodated for. This topic has raised it's head many times under different seeming subjects only for this to be the "Fix"..

Bob

I think we're on to something here. Let me release this cat and try an experiment. I'll report back...

For anyone struggling with this, here is how I solved it:

Used the following components and wire routing:
(1) Arduino Uno
(2) Microchip 23K256
(3) SparkFun Logic Level Converter (BOB08745)
(4) 10K Resistor

Arduino--Logic Conv--23K256
D13------TXH/TXL-----SCK
D12------------------MISO
D11------TXH/TXL-----MOSI
D10------------------CS
3V3------LV
5V-------HV
GND------HV GND------VSS
3V3------------------HOLD
3V3------[10KR]------CS

Please note, no cats were harmed during the entirety of this experiment.

OP, so what was your original problem?

DE, the D10 must be configured to output when not used as CS, is clearly a gotcha.

oric_dan:
OP, so what was your original problem?

It appears it was the HOLD pin. Thank you. Thank you. Thank you.