0.8.1 FRAM_I2C

This commit is contained in:
Rob Tillaart 2024-07-19 12:51:11 +02:00
parent 109407ab7e
commit f5bd30eeef
7 changed files with 33 additions and 20 deletions

View File

@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [0.8.1] - 2024-07-19
- Fix #56, performance sketch
- minor edits
## [0.8.0] - 2024-01-15
- Fix #51 - bug in FRAM32::_readBlock()
- improve fram32 example to test both low and high addresses
@ -18,7 +22,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- update readme.md
- minor edits examples
## [0.7.0] - 2023-10-30
- refactor / simplify begin() =>
- User has to call Wire.begin() explicitly.

View File

@ -1,7 +1,7 @@
//
// FILE: FRAM.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.8.0
// VERSION: 0.8.1
// DATE: 2018-01-24
// PURPOSE: Arduino library for I2C FRAM
// URL: https://github.com/RobTillaart/FRAM_I2C

View File

@ -2,7 +2,7 @@
//
// FILE: FRAM.h
// AUTHOR: Rob Tillaart
// VERSION: 0.8.0
// VERSION: 0.8.1
// DATE: 2018-01-24
// PURPOSE: Arduino library for I2C FRAM
// URL: https://github.com/RobTillaart/FRAM_I2C
@ -12,7 +12,7 @@
#include "Wire.h"
#define FRAM_LIB_VERSION (F("0.8.0"))
#define FRAM_LIB_VERSION (F("0.8.1"))
#define FRAM_OK 0

View File

@ -39,7 +39,7 @@ supports 10^5 write cycles (https://docs.arduino.cc/learn/built-in-libraries/eep
That is a factor of 10 million more write cycles.
#### Fujitsu
### Fujitsu
Types of FRAM tested with this library:
@ -60,7 +60,7 @@ one calls **setSizeBytes(16 \* 1024)** or **setSizeBytes(8 \* 1024)** to set the
For the FRAM9 and FRAM11 the size problem is solved (hard coded) in their class.
#### Ramtron / Cypress / Infineon
### Ramtron / Cypress / Infineon
Types of FRAM tested with this library:
@ -71,7 +71,20 @@ Types of FRAM tested with this library:
| FM24V10 | 128 KB | Y | | FRAM32 | #49 |
#### Notes
### Codes on the chip - Fujitsu
The datasheet - MB85RC04_DS501_00057_1v0_E-2329111.pdf - page 20 - provides meaning
to the markings on the FRAM devices.
The meaning of Environment code is unclear.
```
RC04: Product name
E11900: E1 (Environment code) + 1900 (Year and Week code)
300: 3 (Factory code) + 00(Trace code)
```
### Notes
- Not all types of FRAM are tested. Please let me know if you have verified one that is not in the list.
- If there is no deviceID **getSize()** will not work correctly.
@ -84,7 +97,7 @@ Not tested: expect the **MB85RC1MT** can be addressed with 2 instances of **FRAM
too with adjacent addresses.
#### Related
### Related
- https://github.com/RobTillaart/I2C_EEPROM (eeprom)
- https://github.com/RobTillaart/I2C_24LC1025 (eeprom)
@ -286,9 +299,6 @@ Indicative power usage in uA in three modi (if supported).
| FM24C256-G | 32 KB | 100 uA | | | See #45
_TODO: fill the table_
## FRAM_RINGBUFFER
Since version 0.4.2 a separate class **FRAM_RINGBUFFER** is added to this repo.
@ -346,9 +356,8 @@ Use **getSizeBytes()** to get 512.
- **MB85RC128A** only (hard code fall back?).
- **getSize()** scanning FRAM like EEPROM library?
- investigate a faster strategy for **readUntil()**
- search for separator per block (e.g. 16 bytes) read.
- Investigate **getManufacturerID()** and **getProductID()** for FRAM9/11.
- need hardware + data sheets.
- readUntil() calls read() which reads per 24 bytes.
- search for separator per block (e.g. 24 bytes) in read (copy code).
#### Could

View File

@ -56,27 +56,28 @@ void loop()
void testReadWriteLarge()
{
int size = 600 * sizeof(int);
for (int i = 0; i < 600; i++) ar[i] = i;
start = micros();
fram.write(1000, (uint8_t*)ar, 1200);
fram.write(1000, (uint8_t*)ar, size);
stop = micros();
Serial.print("WRITE 1200 bytes TIME: \t");
Serial.print(stop - start);
Serial.print(" us ==> \t");
Serial.print((stop - start) / 1200.0, 2);
Serial.print((stop - start) / (1.0 * size), 2);
Serial.println(" us/byte.");
delay(100);
for (int i = 0; i < 600; i++) ar[i] = 0;
start = micros();
fram.read(1000, (uint8_t*)ar, 1200);
fram.read(1000, (uint8_t*)ar, size);
stop = micros();
Serial.print("READ 1200 bytes TIME: \t");
Serial.print(stop - start);
Serial.print(" us ==> \t");
Serial.print((stop - start) / 1200.0, 2);
Serial.print((stop - start) / (1.0 * size), 2);
Serial.println(" us/byte.");
delay(100);

View File

@ -15,7 +15,7 @@
"type": "git",
"url": "https://github.com/RobTillaart/FRAM_I2C.git"
},
"version": "0.8.0",
"version": "0.8.1",
"license": "MIT",
"frameworks": "*",
"platforms": "*",

View File

@ -1,5 +1,5 @@
name=FRAM_I2C
version=0.8.0
version=0.8.1
author=Rob Tillaart <rob.tillaart@gmail.com>
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
sentence=Arduino library for I2C FRAM for persistent storage.