aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKévin Redon <kredon@sysmocom.de>2018-07-24 09:49:11 +0200
committerKévin Redon <kredon@sysmocom.de>2018-07-24 09:49:18 +0200
commit57b60d23cfc24fc12a0b78c6faf0e80758c15c39 (patch)
tree8f5c60e84e93205950c21664852061390fa271a5
parentb60538888fb4f8b78189214421a17a7a5802c063 (diff)
I2C: add wait time after write to let EEPROM write
The Atmel AT24C02 defines a maximum tWR waiting time after a byte write of 5 ms before a next write. Enforcing this wait time also fixed the failed verification in qmod, where it was reading 0xffff instead of the written value. Change-Id: I42c90b8d0329e425f275067e87d584212a43a90b
-rw-r--r--firmware/libboard/qmod/source/i2c.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/firmware/libboard/qmod/source/i2c.c b/firmware/libboard/qmod/source/i2c.c
index 06c7565..a708704 100644
--- a/firmware/libboard/qmod/source/i2c.c
+++ b/firmware/libboard/qmod/source/i2c.c
@@ -185,6 +185,8 @@ int eeprom_write_byte(uint8_t slave, uint8_t addr, uint8_t byte)
nack = i2c_write_byte(false, true, byte);
if (nack)
goto out_stop;
+ /* Wait tWR time to ensure EEPROM is writing correctly (tWR = 5 ms for AT24C02) */
+ mdelay(5);
out_stop:
i2c_stop_cond();