Toyomasa Watarai
/
Hello-FM25W256
Hello program for the FM25W256 library
Diff: main.cpp
- Revision:
- 0:3efb18460968
- Child:
- 1:be908b1aafe6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Mar 04 13:48:22 2016 +0000 @@ -0,0 +1,94 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); +SPI fram(dp2, dp1, dp6); +DigitalOut _cs(dp18); + +#define CMD_WREN 0x06 +#define CMD_WRDI 0x04 +#define CMD_RDSR 0x05 +#define CMD_WRSR 0x01 +#define CMD_READ 0x03 +#define CMD_WRITE 0x02 + +void write_byte(uint16_t address, uint8_t data) +{ + _cs = 0; + fram.write(CMD_WREN); + _cs = 1; + + _cs = 0; + fram.write(CMD_WRITE); + fram.write(address >> 8); + fram.write(address & 0xFF); + fram.write(data & 0xFF); + _cs = 1; +} + +uint8_t read_byte(uint16_t address) +{ + uint8_t data; + + _cs = 0; + fram.write(CMD_READ); + fram.write(address >> 8); + fram.write(address & 0xFF); + data = fram.write(0); + _cs = 1; + + return data; +} + +void read_bytes(uint16_t address, uint8_t *buf, uint16_t size) +{ + _cs = 0; + fram.write(CMD_READ); + fram.write(address >> 8); + fram.write(address & 0xFF); + while (size--) { + *buf++ = fram.write(0); + } + _cs = 1; +} + + +void read_test() +{ + uint16_t adrs = 0; + for(int i=0; i<16; i++) { + pc.printf("0x%04X : ", i * 16); + for(int j=0; j<16; j++) { + //pc.printf("%02X ", fram.write(0)); + pc.printf("%02X ", read_byte(adrs++)); + } + pc.printf("\n"); + } +} + +void write_test() +{ + for(int i=0; i<256; i++) { + write_byte(i, i); + } +} + +int main() +{ + fram.format(8, 0); + fram.frequency(20000000); + _cs = 1; + + pc.printf("\nFM25W256 test program - write test? (y/n) "); + if (pc.getc() == 'y') { + write_test(); + } + + pc.printf("\nFM25W256 test program - read test? (y/n) "); + if (pc.getc() == 'y') { + pc.printf("\n"); + read_test(); + } + + while(1) { + } +}