Fujitsu MB85RCxx I2C FRAM test program

Dependencies:   mbed MB85RCxx_I2C

Connectivity

MB82RCxx pinmbed LPC1114FN28 pinmbed LPC1768 pinArudino form factor
1 (A0)22 (GND)1 (GND)GND
2 (A1)22 (GND)1 (GND)GND
3 (A2)22 (GND)1 (GND)GND
4 (VSS)22 (GND)1 (GND)GND
5 (SDA)2 (dp5)9 (p9)D14
6 (SCL)6 (dp27)10 (p10)D15
7 (WP)22 (GND)1 (GND)GND
8 (VDD)21 (VDD)40 (VOUT)3V3

Note

SDA and SCL must be pulled-up by 2.2k-ohm registers.

main.cpp

Committer:
MACRUM
Date:
2017-04-22
Revision:
3:eb1c38ce9b0b
Parent:
1:e15a9be72b69

File content as of revision 3:eb1c38ce9b0b:

#include "mbed.h"
#include "MB85RCxx_I2C.h"

DigitalOut myled(LED1);
Serial pc(USBTX, USBRX);

#if defined(TARGET_LPC1768)
MB85RCxx_I2C fram(p9, p10);
#elif defined(TARGET_LPC1114)
MB85RCxx_I2C fram(dp5, dp27);
#else
MB85RCxx_I2C fram(D14, D15);
#endif

int main() {
    char buf[16];
    uint32_t address;

    pc.baud(115200);
    pc.printf("\nFujitsu MB85RCxxx FRAM test program\n\n");
    
    fram.read_device_id(buf);
        
    pc.printf("read device ID = 0x%x 0x%x 0x%x\n\n", buf[0], buf[1], buf[2]);

    fram.fill(0, 0, 256);

    for (int i = 0; i < 16; i++) {
        buf[i] = i;
    }
    fram.write(0, buf, 16);

    for (address = 0; address < 0x80; address += 16) {
        fram.read(address, buf, 16);
        pc.printf("%08X : ", address);
        for (int i = 0; i < 16; i++) {
            pc.printf("%02X ", buf[i]);    
        }
        pc.printf("\n");
    }

    pc.printf("\n");
    for (address = 0; address < 0x100; address++) {
        fram.write(address, (uint8_t)address);
    }
    for (address = 0; address < 0x100; address += 16) {
        fram.read(address, buf, 16);
        pc.printf("%08X : ", address);
        for (int i = 0; i < 16; i++) {
            pc.printf("%02X ", buf[i]);    
        }
        pc.printf("\n");
    }
    
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}