In the Qwiic OpenLog Hookup Guide there is a note, "The Qwiic OpenLog utilizes clock stretching, which some I2C master devices like ESP32 can't handle. To avoid this, you may have to only send/read bytes one at a time to receive proper data."
I have attempted several methods to send bytes to one at a time but without any success. I also am not able to find an example of how to do this.
Your workbench
What development board or microcontroller are you using?
ESP32 Dev Kit V1.
Are there any additional details that may help us help you?
The Qwiic OpenLog is connected to the ESP32 module as follows:
OpenLog -> ESP32
SCL -> SCL (GPIO22)
SDA -> SDA (GPIO21)
3V3 -> 3.3V
GND -> GND
The OpenLog is also wired to 2 sensors, a SparkFun Micro Temperature Sensor - STTS22H (Qwiic) and a SparkFun Spectral UV Sensor - AS7331 (Qwiic) using 2 x 50mm Qwiic Cables.
I'm reasonably confident that the wiring is correct as I am able to read the values from the sensors and display them in the serial monitor.
Steps to reproduce
Tell us how to reproduce this issue. Please post stripped down example code demonstrating your issue.
The following code shows the test that I attempted. Each section, A, B, C, D & E was run separately. However no log files were generated on the SD card.
I also ran the same code on a Arduino Mega 2560 and a log file was generated containing letters A, B, C and D but not E. The same FAT formatted SD card was used for both boards.
include "Wire.h"
include "SparkFun_Qwiic_OpenLog_Arduino_Library.h"
//Section A
myLog.write('A');
Serial.println("A");
//Section A
//Section B
myLog.writeString("B");
Serial.println("B");
//Section B
//Section C
myLog.print('C');
Serial.println("C");
//Section C
//Section D
myLog.println("D");
Serial.println("D");
//Section D
//Section E
Wire.beginTransmission(0x2A);
Wire.write('E');
Serial.println(Wire.endTransmission());
//Section E
delay(1000);
myLog.syncFile();
myLog.clearWriteError();
delay(1000);
}
Expected behavior
Tell us what should happen
Ideally the OpenLog should work with the ESP32 using the same code as the Arduino Mega 2560 (ie with the Log.println() function) but if this is not possible due to problems with clock stretching then it should work with functions that write one byte at a time (presumably Log.write() or Log.writeString()).
Actual behavior
Tell us what happens instead.
No log files are produced at all (not even empty files).
Subject of the issue
In the Qwiic OpenLog Hookup Guide there is a note, "The Qwiic OpenLog utilizes clock stretching, which some I2C master devices like ESP32 can't handle. To avoid this, you may have to only send/read bytes one at a time to receive proper data."
I have attempted several methods to send bytes to one at a time but without any success. I also am not able to find an example of how to do this.
Your workbench
What development board or microcontroller are you using? ESP32 Dev Kit V1.
Are there any additional details that may help us help you? The Qwiic OpenLog is connected to the ESP32 module as follows: OpenLog -> ESP32 SCL -> SCL (GPIO22) SDA -> SDA (GPIO21) 3V3 -> 3.3V GND -> GND
The OpenLog is also wired to 2 sensors, a SparkFun Micro Temperature Sensor - STTS22H (Qwiic) and a SparkFun Spectral UV Sensor - AS7331 (Qwiic) using 2 x 50mm Qwiic Cables.
I'm reasonably confident that the wiring is correct as I am able to read the values from the sensors and display them in the serial monitor.
Steps to reproduce
Tell us how to reproduce this issue. Please post stripped down example code demonstrating your issue. The following code shows the test that I attempted. Each section, A, B, C, D & E was run separately. However no log files were generated on the SD card.
I also ran the same code on a Arduino Mega 2560 and a log file was generated containing letters A, B, C and D but not E. The same FAT formatted SD card was used for both boards.
include "Wire.h"
include "SparkFun_Qwiic_OpenLog_Arduino_Library.h"
include "Arduino.h"
OpenLog myLog;
void setup() { Wire.begin(); //Initialize I2C myLog.begin(); Serial.begin(9600); }
void loop() {
}
Expected behavior
Tell us what should happen Ideally the OpenLog should work with the ESP32 using the same code as the Arduino Mega 2560 (ie with the Log.println() function) but if this is not possible due to problems with clock stretching then it should work with functions that write one byte at a time (presumably Log.write() or Log.writeString()).
Actual behavior
Tell us what happens instead. No log files are produced at all (not even empty files).