AR93C56A EEPROM IC support for mbed platform.

Committer:
akhilpanayam
Date:
Mon Jul 20 08:25:30 2015 +0000
Revision:
1:37c4eb41af9c
Parent:
0:34cce085d32e
* Removed comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akhilpanayam 0:34cce085d32e 1 #include "AT93C56A.h"
akhilpanayam 0:34cce085d32e 2 #include "mbed.h"
akhilpanayam 0:34cce085d32e 3
akhilpanayam 0:34cce085d32e 4 AT93C56A::AT93C56A(PinName eecs,PinName eeck,PinName eedi,PinName eedo): _eecs(eecs),_eeck(eeck),_eedi(eedi),_eedo(eedo){
akhilpanayam 0:34cce085d32e 5 _eecs=0; // Active High State
akhilpanayam 0:34cce085d32e 6 _eeck=0;
akhilpanayam 0:34cce085d32e 7 };
akhilpanayam 0:34cce085d32e 8
akhilpanayam 0:34cce085d32e 9 void AT93C56A::vSend(unsigned short usCommand)
akhilpanayam 0:34cce085d32e 10 {
akhilpanayam 0:34cce085d32e 11 signed char i=10;
akhilpanayam 0:34cce085d32e 12 _eedi=1; //SB
akhilpanayam 0:34cce085d32e 13 _eecs=1; // Chip Select High
akhilpanayam 0:34cce085d32e 14 wait_us(1); // SB Clock Generation
akhilpanayam 0:34cce085d32e 15 _eeck=1;
akhilpanayam 0:34cce085d32e 16 wait_us(1);
akhilpanayam 0:34cce085d32e 17 _eeck=0;
akhilpanayam 0:34cce085d32e 18 while(i>=0)
akhilpanayam 0:34cce085d32e 19 {
akhilpanayam 0:34cce085d32e 20 _eedi = (usCommand>>i)&0x01;
akhilpanayam 0:34cce085d32e 21 i--;
akhilpanayam 0:34cce085d32e 22 wait_us(1);
akhilpanayam 0:34cce085d32e 23 _eeck=1;
akhilpanayam 0:34cce085d32e 24 wait_us(1);
akhilpanayam 0:34cce085d32e 25 _eeck=0;
akhilpanayam 0:34cce085d32e 26 }
akhilpanayam 0:34cce085d32e 27 }
akhilpanayam 0:34cce085d32e 28 void AT93C56A::vWriteEnable()
akhilpanayam 0:34cce085d32e 29 {
akhilpanayam 0:34cce085d32e 30 vSend(EE_EWEN);
akhilpanayam 0:34cce085d32e 31 wait_us(1);
akhilpanayam 0:34cce085d32e 32 _eecs=0; //Chip Select Low
akhilpanayam 0:34cce085d32e 33 }
akhilpanayam 0:34cce085d32e 34 void AT93C56A::vWriteDisable()
akhilpanayam 0:34cce085d32e 35 {
akhilpanayam 0:34cce085d32e 36 vSend(EE_EWDS);
akhilpanayam 0:34cce085d32e 37 wait_us(1);
akhilpanayam 0:34cce085d32e 38 _eecs=0; //Chip Select Low
akhilpanayam 0:34cce085d32e 39 }
akhilpanayam 0:34cce085d32e 40 void AT93C56A::vErase(unsigned short usAddr)
akhilpanayam 0:34cce085d32e 41 {
akhilpanayam 0:34cce085d32e 42 vSend(EE_ERASE|usAddr);
akhilpanayam 0:34cce085d32e 43 wait_us(1);
akhilpanayam 0:34cce085d32e 44 _eecs=0;
akhilpanayam 0:34cce085d32e 45 /** wait busy flag clear */
akhilpanayam 0:34cce085d32e 46 wait_us(1); // tcs > 250ns @2.7V
akhilpanayam 0:34cce085d32e 47 _eecs=1;
akhilpanayam 0:34cce085d32e 48 wait_us(1); // tsv < 250ns @2.7V
akhilpanayam 0:34cce085d32e 49 while(_eedo==0); // 0.1ms < twp < 10ms
akhilpanayam 0:34cce085d32e 50 _eecs=0;
akhilpanayam 0:34cce085d32e 51 }
akhilpanayam 0:34cce085d32e 52 void AT93C56A::vWrite(unsigned short usAddr, unsigned char ucData)
akhilpanayam 0:34cce085d32e 53 {
akhilpanayam 0:34cce085d32e 54 signed char i=7;
akhilpanayam 0:34cce085d32e 55 vSend(EE_WRITE|usAddr);
akhilpanayam 0:34cce085d32e 56 for(i=7;i>=0;i--)
akhilpanayam 0:34cce085d32e 57 {
akhilpanayam 0:34cce085d32e 58 _eedi = (int)( (ucData>>i)&0x0001 );
akhilpanayam 0:34cce085d32e 59 wait_us(1);
akhilpanayam 0:34cce085d32e 60 _eeck=1;
akhilpanayam 0:34cce085d32e 61 wait_us(1);
akhilpanayam 0:34cce085d32e 62 _eeck=0;
akhilpanayam 0:34cce085d32e 63 }
akhilpanayam 0:34cce085d32e 64 _eecs=0;
akhilpanayam 0:34cce085d32e 65 /** wait busy flag clear */
akhilpanayam 0:34cce085d32e 66 wait_us(1); // tcs > 250ns @2.7V
akhilpanayam 0:34cce085d32e 67 _eecs=1;
akhilpanayam 0:34cce085d32e 68 wait_us(1); // tsv < 250ns @2.7V
akhilpanayam 0:34cce085d32e 69 while(_eedo==0); // 0.1ms < twp < 10ms
akhilpanayam 0:34cce085d32e 70 _eecs=0;
akhilpanayam 0:34cce085d32e 71 }
akhilpanayam 0:34cce085d32e 72 unsigned char AT93C56A::ucRead(unsigned short usAddr)
akhilpanayam 0:34cce085d32e 73 {
akhilpanayam 0:34cce085d32e 74 unsigned char data=0;
akhilpanayam 0:34cce085d32e 75 signed char i=7;
akhilpanayam 0:34cce085d32e 76
akhilpanayam 0:34cce085d32e 77 vSend(EE_READ|usAddr);
akhilpanayam 0:34cce085d32e 78 wait_us(1);
akhilpanayam 0:34cce085d32e 79
akhilpanayam 0:34cce085d32e 80 for(i=7;i>=0;i--)
akhilpanayam 0:34cce085d32e 81 {
akhilpanayam 0:34cce085d32e 82 _eeck=1;
akhilpanayam 0:34cce085d32e 83 wait_us(1);
akhilpanayam 0:34cce085d32e 84 _eeck=0;
akhilpanayam 0:34cce085d32e 85 data = data | (_eedo<<i);
akhilpanayam 0:34cce085d32e 86 wait_us(1);
akhilpanayam 0:34cce085d32e 87 }
akhilpanayam 0:34cce085d32e 88 _eecs=0;
akhilpanayam 0:34cce085d32e 89
akhilpanayam 0:34cce085d32e 90 return data;
akhilpanayam 0:34cce085d32e 91 }