4-GPIO controlled EEPROM AT93C46
Diff: EEPROM_AT93C46.h
- Revision:
- 0:9cc1d5ebe758
- Child:
- 1:c846ecbfe067
diff -r 000000000000 -r 9cc1d5ebe758 EEPROM_AT93C46.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EEPROM_AT93C46.h Fri May 09 02:17:12 2014 +0000 @@ -0,0 +1,80 @@ +#ifndef MBED_EEPROM_AT93C46_H +#define MBED_EEPROM_AT93C46_H + +#include "mbed.h" +/** @file + * AT93C46A x16 mode(7pin OC mean NC ,maybe) + * AT93C46E x16 mode(7pin NC) + * AT93C46D x16 mode(7pin ORG,H=x16,L=x8) + * Cap=1Kbits 64words @ x16 + * SB(start bit)=1bit OP-code=2bits Addr=6bits(64word) + * controll use gpib port(Outoutx3,Inputx1) + */ + +/** @def + * Command code define + * + */ +#define EE_READ 0x80 // 10 xxxxxx(A5-A0) +#define EE_WRITE 0x40 // 01 xxxxxx(A5-A0) +#define EE_EWEN 0x3F // 00 11XXXX(X is DONT CARE) +#define EE_EWDS 0x00 // 00 00XXXX(X is DONT CARE) +#define EE_ERASE 0xC0 // 11 xxxxxx(A5-A0) + +class EEPROM_AT93C46 { + public: + + /** Create a EEPROM_AT93C46 object connected to four pins + * + * @param eccs pin connected to CS of AT93C46 + * @param eeck pin connected to CLK of AT93C46 + * @param eedi pin connected to DI of AT93C46 + * @param eedo pin connected to DO of AT93C46 + */ + EEPROM_AT93C46(PinName eecs,PinName eeck,PinName eedi,PinName eedo); + +/** data=8bit + * I send to AT93C46 with 9bit data(start bit added ) + * bit send with wait_us(1),so + * @param Sending data to AT93C46 + */ + void send(char data); + +/** Data read ftom AT93C46 + * send( OP-code|addr ) + * @param address(6bit) + */ + unsigned short read(char addr); + +/** Data read ftom AT93C46 + * send( OP-code|addr ) + * @param address(6bit) + * @ret data( unsigned short 1 word ) + */ + void write_enable(); +/** Do write-enable to AT93C46 + * send( OP-code ) + * @param address(6bit) + */ + void write_disable(); +/** Do write-disable to AT93C46 + * send( OP-code ) + * @param address(6bit) + */ + void erase(char addr); + +/** Data erase to AT93C46 + * send( OP-code|addr ) + * @param address(6bit) , write data(16bit=short) + */ + void write(char addr,unsigned short data); + + private: + DigitalOut _eecs; //AT93C46 CS ,active H + DigitalOut _eeck; //AT93C46 CLK,rise-edge is write,fall-edge is read + DigitalOut _eedi; //AT93C46 DataIn (mbed is output) + DigitalIn _eedo; //AT93C46 DataOut(mbed is input) +}; +#endif + +