i2c высокоскоростные и подтягивающие резисторы

Привет, ребята, я хочу спросить о двух вещах. во-первых, я подключаюсь, а arduino uno подключается к USB-хосту и передает данные координат мыши на 10 arduino leonardo. я использую стандартную скорость 100 нормальный режим мои провода все около 10 см в длину

  1. Мне нужно ускорить связь в быстром режиме как это сделать? а строчку кода куда поставить в коде и в ведущем или в ведомом?

  2. а как насчет подтягивающих резисторов? Есть ли в Arduino Uno встроенные подтягивающие резисторы? нужно ли отключать его и ставить собственные подтягивающие резисторы? я использую библиотеку проводов

, 👍0


1 ответ


Лучший ответ:

3

мне нужно ускорить связь в быстром режиме, как это сделать

Wire.setClock(400000);

и строку кода, куда ее поместить в коде

Сразу после Wire.begin() в setup(). Wire.begin() устанавливает скорость на 100 000, после чего вам нужно переопределить это значение, чтобы установить его на 400 000 (или любую другую скорость, с которой вы хотите работать).

а в ведущем или ведомом?

В мастере, так как именно мастер генерирует часы.

как насчет подтягивающих резисторов? включает ли arduino uno встроенные подтягивающие резисторы?

Да, но они слишком высоки для надежной работы I2C. Вы должны добавить свои собственные резисторы в районе 1 кОм.

необходимо ли отключить его и поставить собственные подтягивающие резисторы?

Нет, ваши просто будут параллельны им, что приведет к небольшому снижению общего сопротивления.

,

так что мне нужно в общей сложности 2,2 кОм? это достаточно хорошо? поэтому я проверю в таблице данных внутренний и вычислю, что он будет в сумме 2,2?, @mohamed shalaby

Каждому из SCL и SDA требуется подтягивание в диапазоне от 1 кОм до 4,7 кОм. Я использую 1кОм. Это 1 кОм *каждый*, а не два последовательных резистора по 1 кОм. Внутренние подтягивания настолько велики, что их можно игнорировать., @Majenko

даже если у меня будет 10 рабов arduino leonardo, я поставлю a1kohm на каждый scl и sda?, @mohamed shalaby

Есть только 1 scl и 1 sda., @Majenko

да, я знаю это, я имею в виду, что внешний резистор зависит от количества ведомых устройств и расстояния между ними и начальным числом часов, поэтому, если есть 10 ведомых устройств Леонардо по 50 кОм каждый внутренний резистор, так что число огромно, @mohamed shalaby

С 11 устройствами, каждое из которых имеет внутренние подтяжки 30–50 кОм, общее сопротивление без добавления каких-либо внешних подтягивающих устройств будет примерно между 2,2 кОм и 4,7 кОм. В этом случае вы можете обойтись без добавления каких-либо внешних подтягиваний., @Majenko