4-GPIO controlled EEPROM AT93C46

Committer:
king33jp
Date:
Fri May 09 04:35:09 2014 +0000
Revision:
2:bf02c4f42b15
Parent:
1:c846ecbfe067
hoge

Who changed what in which revision?

UserRevisionLine numberNew 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