00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <avr/io.h>
00019 #include <avr/interrupt.h>
00020
00021 #include "spi.h"
00022 #include "spieeprom.h"
00023
00024
00025 void spieepromInit(void)
00026 {
00027
00028
00029
00030 }
00031
00032 u08 spieepromReadByte(u32 memAddr)
00033 {
00034 u08 data;
00035
00036
00037 spiTransferByte(SPIEEPROM_CMD_READ);
00038
00039 spiTransferByte(memAddr>>8);
00040 spiTransferByte(memAddr&0x00FF);
00041
00042 data = spiTransferByte(0xFF);
00043
00044 return data;
00045
00046 }
00047
00048 void spieepromWriteByte(u32 memAddr, u08 data)
00049 {
00050
00051 while(spieepromReadStatus() & SPIEEPROM_STATUS_WIP);
00052
00053
00054
00055 spiTransferByte(SPIEEPROM_CMD_WRITE);
00056
00057 spiTransferByte(memAddr>>8);
00058 spiTransferByte(memAddr&0x00FF);
00059
00060 spiTransferByte(data);
00061
00062 }
00063
00064 void spieepromWriteEnable(void)
00065 {
00066
00067
00068 spiTransferByte(SPIEEPROM_CMD_WREN);
00069
00070 }
00071
00072 void spieepromWriteDisable(void)
00073 {
00074
00075
00076 spiTransferByte(SPIEEPROM_CMD_WRDI);
00077
00078 }
00079
00080 u08 spieepromReadStatus(void)
00081 {
00082 u08 status;
00083
00084
00085 spiTransferByte(SPIEEPROM_CMD_RDSR);
00086
00087 status = spiTransferByte(0xFF);
00088
00089 return status;
00090 }