Hotboards_eeprom.cpp - Driver to control serial (spi) eeprom memories, The memories are compatibles amount the manufactures Microchip, Atmel and ST, and of course you can control Hotboards eeprom boards (http://hotboards.org)

Dependents:   Hotboards_eeprom_write_byte Hotboards_eeprom_write_array

Hotboards_eeprom.h

Committer:
Hotboards
Date:
2016-01-29
Revision:
0:38fad00cc45b

File content as of revision 0:38fad00cc45b:

/*
  Hotboards_eeprom.h - Driver to control serial (spi) eeprom memories, The memories are
  compatibles amount the manufactures Microchip, Atmel and ST, and of course you can control
  Hotboards eeprom board (http://hotboards.org)
  Created by Diego Perez, January 16, 2016.
  Released into the public domain.
  
  Density:   1Kbit   | 2Kbit   | 4Kbit   | 8Kbit   | 16Kbit  | 32Kbit  | 64Kbit  | 128Kbit | 256Kbit | 512Kbit | 1 Mbit
  Part:      25xx010 | 25xx020 | 25xx040 | 25xx080 | 25xx160 | 25xx320 | 25xx640 | 25xx128 | 25xx256 | 25xx512 | 25xx1024
  Page/Byte: 16      | 16      | 16      | 16(32)  | 16(32)  | 32      | 32      | 64      | 64      | 128     | 256
  Addr/Bits: 7       | 8       | 9       | 16      | 16      | 16      | 16      | 16      | 16      | 16 
*/

#ifndef Hotboards_eeprom_h
#define Hotboards_eeprom_h

#include "mbed.h"

//EEPROM size in kilobits. EEPROM part numbers are usually designated in k-bits.
typedef enum
{
    HT_EEPROM25xx_1Kb = 0,
    HT_EEPROM25xx_2Kb,
    HT_EEPROM25xx_4Kb,
    HT_EEPROM25xx_8Kb,
    HT_EEPROM25xx_16Kb,
    HT_EEPROM25xx_32Kb,
    HT_EEPROM25xx_64Kb,
    HT_EEPROM25xx_128Kb,
    HT_EEPROM25xx_256Kb,
    HT_EEPROM25xx_512Kb,
    HT_EEPROM25xx_1Mb   
}_eEEPROM;

class Hotboards_eeprom
{
    public :
        Hotboards_eeprom( SPI &spi, PinName cs, uint8_t type );
        void init( void );
        void write( uint32_t address, uint8_t data );
        void write( uint32_t address, uint8_t *data, uint16_t size );
        uint8_t read( uint32_t address );
        void read( uint32_t address, uint8_t *data, uint16_t size );
    
    protected :
        void sendAddress( uint8_t cmd, uint32_t address );
        void writePage( uint32_t address, uint8_t *data, uint16_t size );
    
        SPI _spi;    
        DigitalOut _cs_pin;
        uint8_t _type;
        uint16_t _page;
        uint32_t _density;
};

#endif