Hallo allen,
Voor een applicatie heb ik een SPI eeprom nodig. Omdat ik redelijk veel informatie op moet slaan, heb ik besloten om voor een 25c256 te gaan. Vandaag hem ik hem werkende gekregen, gelukkig geen problemen . Het gekke is nu dat ik zojuist de datasheet nogmaals zat te lezen, en dit tegenkwam:
Byte Write
Once the device is in a Write Enable state, the user may
proceed with a write sequence by setting the CS low,
issuing a write instruction via the SI line, followed by the
16-bit address (the three Most Significant Bits are don't
care for 25C256 and four most significant bits are don't
care for 25C128), and then the data to be written.
Het gaat dus om het dik gedrukte stuk. Hieruit maak ik op dat een 16-3=13 bits addres is. Het gekke is dat je dan niet op 32KB uit komt, maar slecht op 8KB!
Omdat de interface toch al mooi werkt, heb eens een test gedaan
Mijn beredenatie:
code:
address 2^15 -1 = 32767 = 111111111111111 = 0x7FFF
address 2^13 -1 = 8191 = 001111111111111 = 0x1FFF
Omdat de laatse volgens de datasheet don't care bits zijn, zou de data die ik naar addres 0x7FFF zou sturen eigenlijk op address 0x1FFF komen te staan, als de datsheet zou kloppen.
Vervolgens heb ik dus 0xAA naar addres 0x7FFF gestuurd, en zowel address 0x7FFF als addres 0x1FFF uitgelezen. Op addres 0x7FFF stond wel 0xAA, maar op 0x1FFF niet. Klopt het dat dit gewoon een fout(je?) in de datsheet is, of klopt er ergens in mijn beredenatie niet?
Benieuwd wie hier wat meer over kan zeggen
Wouter