4-GPIO controlled EEPROM AT93C46
EEPROM_AT93C46.h@1:c846ecbfe067, 2014-05-09 (annotated)
- Committer:
- king33jp
- Date:
- Fri May 09 02:42:11 2014 +0000
- Revision:
- 1:c846ecbfe067
- Parent:
- 0:9cc1d5ebe758
- Child:
- 2:bf02c4f42b15
document make
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
king33jp | 1:c846ecbfe067 | 1 | /** |
king33jp | 0:9cc1d5ebe758 | 2 | * AT93C46A x16 mode(7pin OC mean NC ,maybe) |
king33jp | 0:9cc1d5ebe758 | 3 | * AT93C46E x16 mode(7pin NC) |
king33jp | 0:9cc1d5ebe758 | 4 | * AT93C46D x16 mode(7pin ORG,H=x16,L=x8) |
king33jp | 0:9cc1d5ebe758 | 5 | * Cap=1Kbits 64words @ x16 |
king33jp | 0:9cc1d5ebe758 | 6 | * SB(start bit)=1bit OP-code=2bits Addr=6bits(64word) |
king33jp | 0:9cc1d5ebe758 | 7 | * controll use gpib port(Outoutx3,Inputx1) |
king33jp | 0:9cc1d5ebe758 | 8 | */ |
king33jp | 1:c846ecbfe067 | 9 | #ifndef MBED_EEPROM_AT93C46_H |
king33jp | 1:c846ecbfe067 | 10 | #define MBED_EEPROM_AT93C46_H |
king33jp | 1:c846ecbfe067 | 11 | |
king33jp | 1:c846ecbfe067 | 12 | #include "mbed.h" |
king33jp | 0:9cc1d5ebe758 | 13 | |
king33jp | 1:c846ecbfe067 | 14 | /** define |
king33jp | 0:9cc1d5ebe758 | 15 | * Command code define |
king33jp | 0:9cc1d5ebe758 | 16 | * |
king33jp | 0:9cc1d5ebe758 | 17 | */ |
king33jp | 0:9cc1d5ebe758 | 18 | #define EE_READ 0x80 // 10 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 19 | #define EE_WRITE 0x40 // 01 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 20 | #define EE_EWEN 0x3F // 00 11XXXX(X is DONT CARE) |
king33jp | 0:9cc1d5ebe758 | 21 | #define EE_EWDS 0x00 // 00 00XXXX(X is DONT CARE) |
king33jp | 0:9cc1d5ebe758 | 22 | #define EE_ERASE 0xC0 // 11 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 23 | |
king33jp | 0:9cc1d5ebe758 | 24 | class EEPROM_AT93C46 { |
king33jp | 0:9cc1d5ebe758 | 25 | public: |
king33jp | 0:9cc1d5ebe758 | 26 | |
king33jp | 0:9cc1d5ebe758 | 27 | /** Create a EEPROM_AT93C46 object connected to four pins |
king33jp | 0:9cc1d5ebe758 | 28 | * |
king33jp | 0:9cc1d5ebe758 | 29 | * @param eccs pin connected to CS of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 30 | * @param eeck pin connected to CLK of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 31 | * @param eedi pin connected to DI of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 32 | * @param eedo pin connected to DO of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 33 | */ |
king33jp | 0:9cc1d5ebe758 | 34 | EEPROM_AT93C46(PinName eecs,PinName eeck,PinName eedi,PinName eedo); |
king33jp | 0:9cc1d5ebe758 | 35 | |
king33jp | 0:9cc1d5ebe758 | 36 | /** data=8bit |
king33jp | 0:9cc1d5ebe758 | 37 | * I send to AT93C46 with 9bit data(start bit added ) |
king33jp | 0:9cc1d5ebe758 | 38 | * bit send with wait_us(1),so |
king33jp | 1:c846ecbfe067 | 39 | * @param addr Sending data to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 40 | */ |
king33jp | 0:9cc1d5ebe758 | 41 | void send(char data); |
king33jp | 0:9cc1d5ebe758 | 42 | |
king33jp | 0:9cc1d5ebe758 | 43 | /** Data read ftom AT93C46 |
king33jp | 0:9cc1d5ebe758 | 44 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 45 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 46 | */ |
king33jp | 0:9cc1d5ebe758 | 47 | unsigned short read(char addr); |
king33jp | 0:9cc1d5ebe758 | 48 | |
king33jp | 0:9cc1d5ebe758 | 49 | /** Data read ftom AT93C46 |
king33jp | 0:9cc1d5ebe758 | 50 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 51 | * @param addr address(6bit) |
king33jp | 1:c846ecbfe067 | 52 | * @return data( unsigned short 1 word ) |
king33jp | 0:9cc1d5ebe758 | 53 | */ |
king33jp | 0:9cc1d5ebe758 | 54 | void write_enable(); |
king33jp | 0:9cc1d5ebe758 | 55 | /** Do write-enable to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 56 | * send( OP-code ) |
king33jp | 1:c846ecbfe067 | 57 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 58 | */ |
king33jp | 0:9cc1d5ebe758 | 59 | void write_disable(); |
king33jp | 0:9cc1d5ebe758 | 60 | /** Do write-disable to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 61 | * send( OP-code ) |
king33jp | 1:c846ecbfe067 | 62 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 63 | */ |
king33jp | 0:9cc1d5ebe758 | 64 | void erase(char addr); |
king33jp | 0:9cc1d5ebe758 | 65 | |
king33jp | 0:9cc1d5ebe758 | 66 | /** Data erase to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 67 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 68 | * @param addr address(6bit) |
king33jp | 1:c846ecbfe067 | 69 | * @param data write data(16bit=short) |
king33jp | 0:9cc1d5ebe758 | 70 | */ |
king33jp | 0:9cc1d5ebe758 | 71 | void write(char addr,unsigned short data); |
king33jp | 0:9cc1d5ebe758 | 72 | |
king33jp | 0:9cc1d5ebe758 | 73 | private: |
king33jp | 0:9cc1d5ebe758 | 74 | DigitalOut _eecs; //AT93C46 CS ,active H |
king33jp | 0:9cc1d5ebe758 | 75 | DigitalOut _eeck; //AT93C46 CLK,rise-edge is write,fall-edge is read |
king33jp | 0:9cc1d5ebe758 | 76 | DigitalOut _eedi; //AT93C46 DataIn (mbed is output) |
king33jp | 0:9cc1d5ebe758 | 77 | DigitalIn _eedo; //AT93C46 DataOut(mbed is input) |
king33jp | 0:9cc1d5ebe758 | 78 | }; |
king33jp | 0:9cc1d5ebe758 | 79 | #endif |
king33jp | 0:9cc1d5ebe758 | 80 | |
king33jp | 0:9cc1d5ebe758 | 81 |