AR93C56A EEPROM IC support for mbed platform.
AT93C56A.cpp
- Committer:
- akhilpanayam
- Date:
- 2015-07-20
- Revision:
- 1:37c4eb41af9c
- Parent:
- 0:34cce085d32e
File content as of revision 1:37c4eb41af9c:
#include "AT93C56A.h" #include "mbed.h" AT93C56A::AT93C56A(PinName eecs,PinName eeck,PinName eedi,PinName eedo): _eecs(eecs),_eeck(eeck),_eedi(eedi),_eedo(eedo){ _eecs=0; // Active High State _eeck=0; }; void AT93C56A::vSend(unsigned short usCommand) { signed char i=10; _eedi=1; //SB _eecs=1; // Chip Select High wait_us(1); // SB Clock Generation _eeck=1; wait_us(1); _eeck=0; while(i>=0) { _eedi = (usCommand>>i)&0x01; i--; wait_us(1); _eeck=1; wait_us(1); _eeck=0; } } void AT93C56A::vWriteEnable() { vSend(EE_EWEN); wait_us(1); _eecs=0; //Chip Select Low } void AT93C56A::vWriteDisable() { vSend(EE_EWDS); wait_us(1); _eecs=0; //Chip Select Low } void AT93C56A::vErase(unsigned short usAddr) { vSend(EE_ERASE|usAddr); wait_us(1); _eecs=0; /** wait busy flag clear */ wait_us(1); // tcs > 250ns @2.7V _eecs=1; wait_us(1); // tsv < 250ns @2.7V while(_eedo==0); // 0.1ms < twp < 10ms _eecs=0; } void AT93C56A::vWrite(unsigned short usAddr, unsigned char ucData) { signed char i=7; vSend(EE_WRITE|usAddr); for(i=7;i>=0;i--) { _eedi = (int)( (ucData>>i)&0x0001 ); wait_us(1); _eeck=1; wait_us(1); _eeck=0; } _eecs=0; /** wait busy flag clear */ wait_us(1); // tcs > 250ns @2.7V _eecs=1; wait_us(1); // tsv < 250ns @2.7V while(_eedo==0); // 0.1ms < twp < 10ms _eecs=0; } unsigned char AT93C56A::ucRead(unsigned short usAddr) { unsigned char data=0; signed char i=7; vSend(EE_READ|usAddr); wait_us(1); for(i=7;i>=0;i--) { _eeck=1; wait_us(1); _eeck=0; data = data | (_eedo<<i); wait_us(1); } _eecs=0; return data; }