4-GPIO controlled EEPROM AT93C46
EEPROM_AT93C46.h@2:bf02c4f42b15, 2014-05-09 (annotated)
- Committer:
- king33jp
- Date:
- Fri May 09 04:35:09 2014 +0000
- Revision:
- 2:bf02c4f42b15
- Parent:
- 1:c846ecbfe067
hoge
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
king33jp | 2:bf02c4f42b15 | 1 | /** AT93C46 |
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 | 2:bf02c4f42b15 | 8 | * |
king33jp | 0:9cc1d5ebe758 | 9 | */ |
king33jp | 1:c846ecbfe067 | 10 | #ifndef MBED_EEPROM_AT93C46_H |
king33jp | 1:c846ecbfe067 | 11 | #define MBED_EEPROM_AT93C46_H |
king33jp | 1:c846ecbfe067 | 12 | |
king33jp | 1:c846ecbfe067 | 13 | #include "mbed.h" |
king33jp | 0:9cc1d5ebe758 | 14 | |
king33jp | 1:c846ecbfe067 | 15 | /** define |
king33jp | 0:9cc1d5ebe758 | 16 | * Command code define |
king33jp | 0:9cc1d5ebe758 | 17 | * |
king33jp | 0:9cc1d5ebe758 | 18 | */ |
king33jp | 0:9cc1d5ebe758 | 19 | #define EE_READ 0x80 // 10 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 20 | #define EE_WRITE 0x40 // 01 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 21 | #define EE_EWEN 0x3F // 00 11XXXX(X is DONT CARE) |
king33jp | 0:9cc1d5ebe758 | 22 | #define EE_EWDS 0x00 // 00 00XXXX(X is DONT CARE) |
king33jp | 0:9cc1d5ebe758 | 23 | #define EE_ERASE 0xC0 // 11 xxxxxx(A5-A0) |
king33jp | 0:9cc1d5ebe758 | 24 | |
king33jp | 2:bf02c4f42b15 | 25 | /** EEPROM controll class |
king33jp | 2:bf02c4f42b15 | 26 | * |
king33jp | 2:bf02c4f42b15 | 27 | * Example: |
king33jp | 2:bf02c4f42b15 | 28 | * @code |
king33jp | 2:bf02c4f42b15 | 29 | * // AT93C46 GPIO use |
king33jp | 2:bf02c4f42b15 | 30 | |
king33jp | 2:bf02c4f42b15 | 31 | #include "mbed.h" |
king33jp | 2:bf02c4f42b15 | 32 | #include "EEPROM_AT93C46.h" |
king33jp | 2:bf02c4f42b15 | 33 | |
king33jp | 2:bf02c4f42b15 | 34 | EEPROM_AT93C46 eeprom(PTE20,PTE21,PTE22,PTE23); |
king33jp | 2:bf02c4f42b15 | 35 | |
king33jp | 2:bf02c4f42b15 | 36 | int main() { |
king33jp | 2:bf02c4f42b15 | 37 | |
king33jp | 2:bf02c4f42b15 | 38 | eeprom.write_enable(); |
king33jp | 2:bf02c4f42b15 | 39 | eeprom.erase(0); |
king33jp | 2:bf02c4f42b15 | 40 | eeprom.write(0,0xABCD); |
king33jp | 2:bf02c4f42b15 | 41 | eeprom.write_disable(); |
king33jp | 2:bf02c4f42b15 | 42 | for(char jj=0;jj<64++){ |
king33jp | 2:bf02c4f42b15 | 43 | printf("%04X(%d,",eeprom.read(jj),jj); |
king33jp | 2:bf02c4f42b15 | 44 | } |
king33jp | 2:bf02c4f42b15 | 45 | } |
king33jp | 2:bf02c4f42b15 | 46 | * @endcode |
king33jp | 2:bf02c4f42b15 | 47 | */ |
king33jp | 0:9cc1d5ebe758 | 48 | class EEPROM_AT93C46 { |
king33jp | 0:9cc1d5ebe758 | 49 | public: |
king33jp | 0:9cc1d5ebe758 | 50 | |
king33jp | 0:9cc1d5ebe758 | 51 | /** Create a EEPROM_AT93C46 object connected to four pins |
king33jp | 0:9cc1d5ebe758 | 52 | * |
king33jp | 0:9cc1d5ebe758 | 53 | * @param eccs pin connected to CS of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 54 | * @param eeck pin connected to CLK of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 55 | * @param eedi pin connected to DI of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 56 | * @param eedo pin connected to DO of AT93C46 |
king33jp | 0:9cc1d5ebe758 | 57 | */ |
king33jp | 0:9cc1d5ebe758 | 58 | EEPROM_AT93C46(PinName eecs,PinName eeck,PinName eedi,PinName eedo); |
king33jp | 0:9cc1d5ebe758 | 59 | |
king33jp | 0:9cc1d5ebe758 | 60 | /** data=8bit |
king33jp | 0:9cc1d5ebe758 | 61 | * I send to AT93C46 with 9bit data(start bit added ) |
king33jp | 0:9cc1d5ebe758 | 62 | * bit send with wait_us(1),so |
king33jp | 1:c846ecbfe067 | 63 | * @param addr Sending data to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 64 | */ |
king33jp | 0:9cc1d5ebe758 | 65 | void send(char data); |
king33jp | 0:9cc1d5ebe758 | 66 | |
king33jp | 0:9cc1d5ebe758 | 67 | /** Data read ftom AT93C46 |
king33jp | 0:9cc1d5ebe758 | 68 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 69 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 70 | */ |
king33jp | 0:9cc1d5ebe758 | 71 | unsigned short read(char addr); |
king33jp | 0:9cc1d5ebe758 | 72 | |
king33jp | 0:9cc1d5ebe758 | 73 | /** Data read ftom AT93C46 |
king33jp | 0:9cc1d5ebe758 | 74 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 75 | * @param addr address(6bit) |
king33jp | 1:c846ecbfe067 | 76 | * @return data( unsigned short 1 word ) |
king33jp | 0:9cc1d5ebe758 | 77 | */ |
king33jp | 0:9cc1d5ebe758 | 78 | void write_enable(); |
king33jp | 0:9cc1d5ebe758 | 79 | /** Do write-enable to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 80 | * send( OP-code ) |
king33jp | 1:c846ecbfe067 | 81 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 82 | */ |
king33jp | 0:9cc1d5ebe758 | 83 | void write_disable(); |
king33jp | 0:9cc1d5ebe758 | 84 | /** Do write-disable to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 85 | * send( OP-code ) |
king33jp | 1:c846ecbfe067 | 86 | * @param addr address(6bit) |
king33jp | 0:9cc1d5ebe758 | 87 | */ |
king33jp | 0:9cc1d5ebe758 | 88 | void erase(char addr); |
king33jp | 0:9cc1d5ebe758 | 89 | |
king33jp | 0:9cc1d5ebe758 | 90 | /** Data erase to AT93C46 |
king33jp | 0:9cc1d5ebe758 | 91 | * send( OP-code|addr ) |
king33jp | 1:c846ecbfe067 | 92 | * @param addr address(6bit) |
king33jp | 1:c846ecbfe067 | 93 | * @param data write data(16bit=short) |
king33jp | 0:9cc1d5ebe758 | 94 | */ |
king33jp | 0:9cc1d5ebe758 | 95 | void write(char addr,unsigned short data); |
king33jp | 0:9cc1d5ebe758 | 96 | |
king33jp | 0:9cc1d5ebe758 | 97 | private: |
king33jp | 0:9cc1d5ebe758 | 98 | DigitalOut _eecs; //AT93C46 CS ,active H |
king33jp | 0:9cc1d5ebe758 | 99 | DigitalOut _eeck; //AT93C46 CLK,rise-edge is write,fall-edge is read |
king33jp | 0:9cc1d5ebe758 | 100 | DigitalOut _eedi; //AT93C46 DataIn (mbed is output) |
king33jp | 0:9cc1d5ebe758 | 101 | DigitalIn _eedo; //AT93C46 DataOut(mbed is input) |
king33jp | 0:9cc1d5ebe758 | 102 | }; |
king33jp | 0:9cc1d5ebe758 | 103 | #endif |
king33jp | 0:9cc1d5ebe758 | 104 | |
king33jp | 0:9cc1d5ebe758 | 105 |