Skip to content

Conversation

@nemik
Copy link

@nemik nemik commented Dec 3, 2025

Problem

We need lower I2C speeds to support longer cable distances on our Gen3 devices. Right now we are limited to 100 KHz or 400 KHz only.

Solution

This solution adds two more I2C speeds: 20 KHz and 50 KHz and adds support for them to the Nordic HAL.

Steps to Test

Using Wire.setSpeed(20000) and Wire.setSpeed(50000) before calling Wire.begin() and using a logic analyzer to view the I2C clock during communication. This was tested on the new speeds and the existing 100 KHz and 400 KHz speeds and confirmed to work both with working I2C communication and a logic analyzer on the I2C line.

Example App

void setup() {
  Wire.setSpeed(20000);
  Wire.begin();
}

void loop() {

}

References

Links to the Community, Docs, Other Issues, etc..


Completeness

  • User is totes amazing for contributing!
  • Contributor has signed CLA (Info here)
  • Problem and Solution clearly stated
  • Run unit/integration/application tests on device
  • Added documentation
  • Added to CHANGELOG.md after merging (add links to docs and issues)

@technobly
Copy link
Member

Closing in favor of #2893

Thank you for the PR!

@technobly technobly closed this Jan 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants