Dependents:   1W-EEPROM

Committer:
Wimpie
Date:
Tue Jan 17 08:30:45 2012 +0000
Revision:
2:193926923cb0
Parent:
1:7218c076189b
readbyte readword

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wimpie 0:0f7bbfde44b7 1 /*
Wimpie 0:0f7bbfde44b7 2 * OneWireEEPROM. Library for Maxim One-Wire EEPROM.
Wimpie 0:0f7bbfde44b7 3 *
Wimpie 0:0f7bbfde44b7 4 * see http://www.maxim-ic.com
Wimpie 0:0f7bbfde44b7 5 *
Wimpie 0:0f7bbfde44b7 6 * DS2433
Wimpie 0:0f7bbfde44b7 7 * DS28EC20
Wimpie 0:0f7bbfde44b7 8 *
Wimpie 0:0f7bbfde44b7 9 * Copyright (C) <2011> Wim De Roeve <wim312@gmail.com>
Wimpie 0:0f7bbfde44b7 10 *
Wimpie 0:0f7bbfde44b7 11 * Uses the OneWireCRC library. http://mbed.org/users/snatch59/programs/OneWireCRC/gpdz56
Wimpie 0:0f7bbfde44b7 12 *
Wimpie 0:0f7bbfde44b7 13 * OneWire EEPROM is free software: you can redistribute it and/or modify
Wimpie 0:0f7bbfde44b7 14 * it under the terms of the GNU General Public License as published by
Wimpie 0:0f7bbfde44b7 15 * the Free Software Foundation, either version 3 of the License, or
Wimpie 0:0f7bbfde44b7 16 * (at your option) any later version.
Wimpie 0:0f7bbfde44b7 17 *
Wimpie 0:0f7bbfde44b7 18 * OneWireEEPROM is distributed in the hope that it will be useful,
Wimpie 0:0f7bbfde44b7 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Wimpie 0:0f7bbfde44b7 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Wimpie 0:0f7bbfde44b7 21 * GNU General Public License for more details.
Wimpie 0:0f7bbfde44b7 22 *
Wimpie 0:0f7bbfde44b7 23 * You should have received a copy of the GNU General Public License
Wimpie 0:0f7bbfde44b7 24 * If not, see <http://www.gnu.org/licenses/>.
Wimpie 0:0f7bbfde44b7 25 */
Wimpie 0:0f7bbfde44b7 26
Wimpie 0:0f7bbfde44b7 27
Wimpie 0:0f7bbfde44b7 28 #ifndef _OneWireEEPROM_H
Wimpie 0:0f7bbfde44b7 29 #define _OneWireEEPROM_H
Wimpie 0:0f7bbfde44b7 30
Wimpie 0:0f7bbfde44b7 31 #include "OneWireCRC.h"
Wimpie 0:0f7bbfde44b7 32
Wimpie 0:0f7bbfde44b7 33 // OneWire info
Wimpie 0:0f7bbfde44b7 34 #define ADDRESS_SIZE 8
Wimpie 0:0f7bbfde44b7 35 #define ADDRESS_CRC_BYTE 7
Wimpie 0:0f7bbfde44b7 36
Wimpie 0:0f7bbfde44b7 37 // OneWire device-id
Wimpie 0:0f7bbfde44b7 38 #define DS2433EEPROM_ID 0x23
Wimpie 0:0f7bbfde44b7 39 #define DS28EC20EEPROM_ID 0x43
Wimpie 0:0f7bbfde44b7 40
Wimpie 0:0f7bbfde44b7 41 // OneWireEEPROM related
Wimpie 0:0f7bbfde44b7 42 #define WRITESCRATCHPAD 0x0F
Wimpie 0:0f7bbfde44b7 43 #define READSCRATCHPAD 0xAA
Wimpie 0:0f7bbfde44b7 44 #define COPYSCRATCHPAD 0x55
Wimpie 0:0f7bbfde44b7 45 #define READMEMORY 0xF0
Wimpie 0:0f7bbfde44b7 46
Wimpie 2:193926923cb0 47
Wimpie 2:193926923cb0 48
Wimpie 0:0f7bbfde44b7 49 #define PAGESIZE 0x20 // 32 bytes for each page
Wimpie 0:0f7bbfde44b7 50 #define DS2433PAGES 0x10 // 16 pages
Wimpie 0:0f7bbfde44b7 51 #define DS28EC20PAGES 0x50 // 80 pages
Wimpie 0:0f7bbfde44b7 52
Wimpie 0:0f7bbfde44b7 53 /*
Wimpie 0:0f7bbfde44b7 54
Wimpie 0:0f7bbfde44b7 55 DS2433 is a 4096 bit EEPROM
Wimpie 0:0f7bbfde44b7 56 4096 bits (512 bytes) in 16 pages of 256 bits (32 bytes)
Wimpie 0:0f7bbfde44b7 57
Wimpie 0:0f7bbfde44b7 58 ADDRESS 32-BYTE intermediate storage scratchpad
Wimpie 0:0f7bbfde44b7 59 0x0000 to 0x001F 32 byte finale storage EEPROM PAGE 0
Wimpie 0:0f7bbfde44b7 60 0x0020 to 0x003F 32 byte finale storage EEPROM PAGE 1
Wimpie 0:0f7bbfde44b7 61 0x0040 to 0x01DF 32 byte finale storage EEPROM PAGE 2 to PAGE 14
Wimpie 0:0f7bbfde44b7 62 0x01E0 to 0x01FF 32 byte finale storage EEPROM PAGE 15
Wimpie 0:0f7bbfde44b7 63
Wimpie 0:0f7bbfde44b7 64 DS28EC20 is a 20480-bit EEPROM
Wimpie 0:0f7bbfde44b7 65 20480 bits (2560 bytes) in 80 pages of 256 bits (32 bytes)
Wimpie 0:0f7bbfde44b7 66
Wimpie 0:0f7bbfde44b7 67 ADDRESS 32-BYTE intermediate storage scratchpad
Wimpie 0:0f7bbfde44b7 68 0x0000 to 0x001F 32 byte finale storage EEPROM PAGE 0
Wimpie 0:0f7bbfde44b7 69 0x0020 to 0x003F 32 byte finale storage EEPROM PAGE 1
Wimpie 0:0f7bbfde44b7 70 0x0040 to 0x09DF 32 byte finale storage EEPROM PAGE 2 to PAGE 78
Wimpie 0:0f7bbfde44b7 71 0x09E0 to 0x09FF 32 byte finale storage EEPROM PAGE 79
Wimpie 0:0f7bbfde44b7 72
Wimpie 0:0f7bbfde44b7 73 */
Wimpie 0:0f7bbfde44b7 74 enum DSTYPE { DS2433 = 1, DS28EC20 = 2};
Wimpie 0:0f7bbfde44b7 75
Wimpie 0:0f7bbfde44b7 76 class OneWireEEPROM {
Wimpie 0:0f7bbfde44b7 77 public:
Wimpie 1:7218c076189b 78 OneWireEEPROM(PinName pin, bool crcOn, bool useAddr, bool parasitic, DSTYPE ds,uint8_t* ROMaddress);
Wimpie 1:7218c076189b 79 bool Initialize();
Wimpie 0:0f7bbfde44b7 80 //
Wimpie 0:0f7bbfde44b7 81 bool WriteMemory(uint8_t* Source, uint16_t Address, uint8_t Size);
Wimpie 1:7218c076189b 82 bool WriteWord(uint16_t v,uint16_t Address);
Wimpie 1:7218c076189b 83 bool WriteByte(uint8_t b,uint16_t Address);
Wimpie 2:193926923cb0 84
Wimpie 2:193926923cb0 85 uint16_t ReadWord(uint16_t Address);
Wimpie 2:193926923cb0 86 uint8_t ReadByte(uint8_t Address);
Wimpie 0:0f7bbfde44b7 87 //
Wimpie 0:0f7bbfde44b7 88 int ReadMemory(uint8_t* Destination, uint16_t Address, uint16_t Size);
Wimpie 0:0f7bbfde44b7 89 void ShowMemory(int PageFrom, int PageTo);
Wimpie 0:0f7bbfde44b7 90 bool active;
Wimpie 0:0f7bbfde44b7 91
Wimpie 1:7218c076189b 92
Wimpie 0:0f7bbfde44b7 93
Wimpie 0:0f7bbfde44b7 94 protected:
Wimpie 0:0f7bbfde44b7 95
Wimpie 0:0f7bbfde44b7 96 OneWireCRC oneWire;
Wimpie 0:0f7bbfde44b7 97
Wimpie 0:0f7bbfde44b7 98 bool _useParasiticPower;
Wimpie 0:0f7bbfde44b7 99 bool _useCRC;
Wimpie 0:0f7bbfde44b7 100 bool _useAddress;
Wimpie 0:0f7bbfde44b7 101 int _memsize;
Wimpie 0:0f7bbfde44b7 102 int _pages;
Wimpie 0:0f7bbfde44b7 103 int _eeprom_id;
Wimpie 0:0f7bbfde44b7 104
Wimpie 1:7218c076189b 105 BYTE _ROMCode[8];
Wimpie 0:0f7bbfde44b7 106
Wimpie 0:0f7bbfde44b7 107 void ResetAndAddress();
Wimpie 0:0f7bbfde44b7 108
Wimpie 0:0f7bbfde44b7 109 };
Wimpie 0:0f7bbfde44b7 110
Wimpie 0:0f7bbfde44b7 111
Wimpie 0:0f7bbfde44b7 112 #endif