Library to drive the Microchip 23K256 SRAM over SPI.

Dependencies:   mbed

Committer:
romilly
Date:
Sat Aug 14 20:15:08 2010 +0000
Revision:
0:318f4f480b1b
Child:
1:28eb43851e6e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
romilly 0:318f4f480b1b 1 #include "mbed.h"
romilly 0:318f4f480b1b 2
romilly 0:318f4f480b1b 3 DigitalOut ncs(p14);
romilly 0:318f4f480b1b 4
romilly 0:318f4f480b1b 5 SPI spi(p5,p6,p7);
romilly 0:318f4f480b1b 6
romilly 0:318f4f480b1b 7 void on() {
romilly 0:318f4f480b1b 8 ncs = 0;
romilly 0:318f4f480b1b 9 }
romilly 0:318f4f480b1b 10
romilly 0:318f4f480b1b 11 void off() {
romilly 0:318f4f480b1b 12 ncs = 1;
romilly 0:318f4f480b1b 13 }
romilly 0:318f4f480b1b 14
romilly 0:318f4f480b1b 15 void write(int address, char byte) {
romilly 0:318f4f480b1b 16 on();
romilly 0:318f4f480b1b 17 spi.write(0x02); // write data
romilly 0:318f4f480b1b 18 spi.write(address >> 8);
romilly 0:318f4f480b1b 19 spi.write(address & 0xFF);
romilly 0:318f4f480b1b 20 spi.write(byte);
romilly 0:318f4f480b1b 21 off();
romilly 0:318f4f480b1b 22 }
romilly 0:318f4f480b1b 23
romilly 0:318f4f480b1b 24
romilly 0:318f4f480b1b 25 void write(int address, char * buffer, int count) {
romilly 0:318f4f480b1b 26 on();
romilly 0:318f4f480b1b 27 spi.write(0x01); // write status
romilly 0:318f4f480b1b 28 spi.write(0x40); // sequential mode
romilly 0:318f4f480b1b 29 off();
romilly 0:318f4f480b1b 30 on();
romilly 0:318f4f480b1b 31 spi.write(0x02);
romilly 0:318f4f480b1b 32 spi.write(address >> 8);
romilly 0:318f4f480b1b 33 spi.write(address & 0xFF);
romilly 0:318f4f480b1b 34 for (int i = 0; i < count; i++) {
romilly 0:318f4f480b1b 35 spi.write(buffer[i]);
romilly 0:318f4f480b1b 36 }
romilly 0:318f4f480b1b 37 off();
romilly 0:318f4f480b1b 38 on();
romilly 0:318f4f480b1b 39 spi.write(0x01); // write status
romilly 0:318f4f480b1b 40 spi.write(0x0); // byte mode
romilly 0:318f4f480b1b 41 off();
romilly 0:318f4f480b1b 42 }
romilly 0:318f4f480b1b 43
romilly 0:318f4f480b1b 44
romilly 0:318f4f480b1b 45 char read(int address) {
romilly 0:318f4f480b1b 46 on();
romilly 0:318f4f480b1b 47 spi.write(0x03);
romilly 0:318f4f480b1b 48 spi.write(address >> 8);
romilly 0:318f4f480b1b 49 spi.write(address & 0xFF);
romilly 0:318f4f480b1b 50 int result = spi.write(0);
romilly 0:318f4f480b1b 51 off();
romilly 0:318f4f480b1b 52 return (char) result;
romilly 0:318f4f480b1b 53 }
romilly 0:318f4f480b1b 54
romilly 0:318f4f480b1b 55 int main() {
romilly 0:318f4f480b1b 56 off();
romilly 0:318f4f480b1b 57 char buff[50];
romilly 0:318f4f480b1b 58 write(0, 'h');
romilly 0:318f4f480b1b 59 write(1, 'i');
romilly 0:318f4f480b1b 60 write(2, '!');
romilly 0:318f4f480b1b 61 write(3, '\0');
romilly 0:318f4f480b1b 62 for (int address = 0; address < 4; address++) {
romilly 0:318f4f480b1b 63 buff[address] = read(address);
romilly 0:318f4f480b1b 64 }
romilly 0:318f4f480b1b 65 printf("mem = %s\r\n", buff);
romilly 0:318f4f480b1b 66 write(0, "Hello world!",12);
romilly 0:318f4f480b1b 67 for (int address = 0; address < 12; address++) {
romilly 0:318f4f480b1b 68 buff[address] = read(address);
romilly 0:318f4f480b1b 69 }
romilly 0:318f4f480b1b 70 buff[12]='\0';
romilly 0:318f4f480b1b 71 printf("now = %s\r\n", buff);
romilly 0:318f4f480b1b 72 }