-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Call i2c_set_timeout in i2cSetClock #6537
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Hi @PaulZC ! Thanks for the fix! |
Jason2866
added a commit
to tasmota/arduino-esp32
that referenced
this pull request
Apr 26, 2022
* LittleFs is working with C3 * Delete .skip.esp32c3 * Add support for extra flash images (espressif#6625) This PR adds support for uploading additional flash images (e.g. Adafruit Tiny UF2 bootloader) specified in board manifests. Additionally, the PR switches the PlatformIO CI script to the upstream version of the ESP32 dev-platform (basically reverts changes introduced in espressif#5387 as they are no longer required). * publish.yml: Remove a leftover parenthesis that was making the workflow (espressif#6620) Description of Change Remove a leftover parenthesis that was making the workflow that was making the workflow invalid. Tests scenarios Github Workflow. Related links https://github.com/espressif/arduino-esp32/actions/runs/2213167501 Signed-off-by: Abdelatif Guettouche <[email protected]> * Enable LittleFs sketches for C3 (espressif#6618) * LittleFs is working with C3 * Delete .skip.esp32c3 * Update LittleFS PlatformIO example (espressif#6617) * Added RainMaker support on Arduino IDE for ESP32-C3/S2/S3 (espressif#6598) * Added RainMaker support on Arduino IDE for ESP32-C3/S2/S3 Closes espressif#6573 Note related to the issue espressif#6435 * Touch change to init only selected GPIO. (espressif#6609) * Separated init for touch / channel called by touchRead() * compile error * Fixed touch_V2 + ISR * Allow BluetoothSerial::connect() with specified channel and more options (espressif#6380) * BTAddress const, add bool() * BTAdvertisedDevice: const functions * BluetoothSerial: add: getChannels, add isClosed, add read/peek timeout, add connect with channel# * BluetoothSerial: add sec_mask, role in ::connect * BluetoothSerial add discover and connect with channel number example * DiscoverConnect: add SPP_ENABLED check * DiscoverConnect: disable on esp32s3 * Fixes stream load memory leak in WifiSecureClient for SSL CACert, Certificate, and (espressif#6387) Private Key. Issue presented during any subsequent invocation of loadCACert, loadCertificate, and loadPrivateKey, respectively, after the first invocation. * Call i2c_set_timeout in i2cSetClock (espressif#6537) * Uniform behaviour of WiFiClientSecure and WiFiClient setTimeout() (espressif#6562) * Uniform timeout WiFiClient-WiFiClientSecure * Added missing prototype * Add socket check on setTimeout * enh(log) salvage TAG from ESP_IDF log-statements > (espressif#6567) by converting result log-rows from the 1st line to the 2nd (`NET` is the tag): ``` [ 73419][D][telelogger.cpp:915] telemetry(): state: 33C [ 73419][D][telelogger.cpp:915] telemetry(): [NET] state: 33C ``` Co-authored-by: Me No Dev <[email protected]> * add AirM2M_CORE_ESP32C3 board (espressif#6613) * add AirM2M_CORE_ESP32C3 board * Added Unexpected Maker Reflow Master Pro (UM RMP) board (espressif#6630) Fixed wrong SCK and MISO pins for TinyS2 * Tasmota changes (#24) * Update install-arduino-core-esp32.sh * Update CMakeLists.txt * Update Esp.cpp * Update Updater.cpp Co-authored-by: Valerii Koval <[email protected]> Co-authored-by: Abdelatif Guettouche <[email protected]> Co-authored-by: Pedro Minatel <[email protected]> Co-authored-by: Jan Procházka <[email protected]> Co-authored-by: Christian Ferbar <[email protected]> Co-authored-by: Billy <[email protected]> Co-authored-by: Paul <[email protected]> Co-authored-by: Gonzalo Brusco <[email protected]> Co-authored-by: Kostis Anagnostopoulos <[email protected]> Co-authored-by: Me No Dev <[email protected]> Co-authored-by: Darren Cheng <[email protected]> Co-authored-by: Unexpected Maker <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Using v2.0.2 on a SparkFun ESP32 Thing Plus to communicate with a u-blox ZED-F9P GNSS module via I2C at 400kHz. The u-blox modules are known to clock-stretch.
I was seeing badness on the I2C bus, which looked very similar to the clock stretching issue from #5875 .
The badness appears when using this code to initialize the Wire bus and change the speed to 400kHz:
The badness goes away when using:
This made me suspect
i2cSetClock
and wonder if it needed the same fix as #5910 .I replicated @me-no-dev 's fix #5910 , calling
i2c_set_timeout
from insidei2cSetClock
. Sure enough, the badness goes away.Impact
This PR prevents I2C badness when using speeds other than the default 100kHz to communicate with devices which clock stretch.
Related links
Related to:
and: