mille feuille
/
milBase_slaveLPC824RevE_I2CROM
mille-feuille board base MCU program
EEPROM24LC01.cpp@0:9dc31a0e43ac, 2022-09-06 (annotated)
- Committer:
- Info
- Date:
- Tue Sep 06 04:42:04 2022 +0000
- Revision:
- 0:9dc31a0e43ac
open
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Info | 0:9dc31a0e43ac | 1 | /* |
Info | 0:9dc31a0e43ac | 2 | *************************************************************************** |
Info | 0:9dc31a0e43ac | 3 | * File Name : EEPROM24LC01.cpp |
Info | 0:9dc31a0e43ac | 4 | * |
Info | 0:9dc31a0e43ac | 5 | * Revision : 1.0 |
Info | 0:9dc31a0e43ac | 6 | * Notes : |
Info | 0:9dc31a0e43ac | 7 | * Target Board : mbed LPC824 |
Info | 0:9dc31a0e43ac | 8 | * |
Info | 0:9dc31a0e43ac | 9 | * Revision History: |
Info | 0:9dc31a0e43ac | 10 | *************************************************************************** |
Info | 0:9dc31a0e43ac | 11 | */ |
Info | 0:9dc31a0e43ac | 12 | #include "EEPROM24LC01.h" |
Info | 0:9dc31a0e43ac | 13 | #include "mbed.h" |
Info | 0:9dc31a0e43ac | 14 | |
Info | 0:9dc31a0e43ac | 15 | EEPROM24LC01::EEPROM24LC01(I2C *i2c, const int address): |
Info | 0:9dc31a0e43ac | 16 | _i2c_address(address<<1), _i2c(i2c) |
Info | 0:9dc31a0e43ac | 17 | { |
Info | 0:9dc31a0e43ac | 18 | } |
Info | 0:9dc31a0e43ac | 19 | |
Info | 0:9dc31a0e43ac | 20 | int EEPROM24LC01::byte8_write(char *data) |
Info | 0:9dc31a0e43ac | 21 | { |
Info | 0:9dc31a0e43ac | 22 | int res; |
Info | 0:9dc31a0e43ac | 23 | char buf[9]; |
Info | 0:9dc31a0e43ac | 24 | int i = 0; |
Info | 0:9dc31a0e43ac | 25 | |
Info | 0:9dc31a0e43ac | 26 | buf[0] = 0; // Address |
Info | 0:9dc31a0e43ac | 27 | |
Info | 0:9dc31a0e43ac | 28 | for(i=0;i<8;++i){ |
Info | 0:9dc31a0e43ac | 29 | buf[i+1] = data[i]; |
Info | 0:9dc31a0e43ac | 30 | } |
Info | 0:9dc31a0e43ac | 31 | /* buf[1] = data[0]; |
Info | 0:9dc31a0e43ac | 32 | buf[2] = data[1]; |
Info | 0:9dc31a0e43ac | 33 | buf[3] = data[2]; |
Info | 0:9dc31a0e43ac | 34 | buf[4] = data[3]; |
Info | 0:9dc31a0e43ac | 35 | buf[5] = data[4]; |
Info | 0:9dc31a0e43ac | 36 | buf[6] = data[5]; |
Info | 0:9dc31a0e43ac | 37 | buf[7] = data[6]; |
Info | 0:9dc31a0e43ac | 38 | buf[8] = data[7]; |
Info | 0:9dc31a0e43ac | 39 | */ |
Info | 0:9dc31a0e43ac | 40 | res = _i2c->write(_i2c_address, buf, sizeof(buf), false); |
Info | 0:9dc31a0e43ac | 41 | |
Info | 0:9dc31a0e43ac | 42 | wait_ms(5); // 5mS |
Info | 0:9dc31a0e43ac | 43 | |
Info | 0:9dc31a0e43ac | 44 | return res; |
Info | 0:9dc31a0e43ac | 45 | } |
Info | 0:9dc31a0e43ac | 46 | |
Info | 0:9dc31a0e43ac | 47 | |
Info | 0:9dc31a0e43ac | 48 | int EEPROM24LC01::readAll( char *data, int size ) |
Info | 0:9dc31a0e43ac | 49 | { |
Info | 0:9dc31a0e43ac | 50 | int res; |
Info | 0:9dc31a0e43ac | 51 | char buf[1]; |
Info | 0:9dc31a0e43ac | 52 | |
Info | 0:9dc31a0e43ac | 53 | buf[0] = 0; // Read Address High byte set |
Info | 0:9dc31a0e43ac | 54 | res = _i2c->write(_i2c_address, buf, sizeof(buf), true); |
Info | 0:9dc31a0e43ac | 55 | if(res == 0){ |
Info | 0:9dc31a0e43ac | 56 | res = _i2c->read(_i2c_address, (char *)data, size, false); |
Info | 0:9dc31a0e43ac | 57 | } |
Info | 0:9dc31a0e43ac | 58 | return res; |
Info | 0:9dc31a0e43ac | 59 | } |