Существует правильный диапазон значений, однако трудно точно описать, что это за диапазон. Вообще 10к работает.
Цифровые выходы имеют заданную возможность источника или поглощения тока. Если ваш выход мог опуститься до 5 мА, а выход был подключен через напряжение до 5 В, а затем настроен на 0, вам потребуется сопротивление не менее 1 кОм. Если вы используете менее 1 кОм, выход не сможет потреблять достаточный ток, чтобы полностью вытащить контакт до 0 В. Если вы используете большее значение, например, 10 кОм, то для вывода требуется только 0,5 мА, что намного меньше его номинального значения.
Цифровые входы имеют указанный ток утечки. Это похоже на величину тока, которая требуется для «поддержания» 0 или 1 на входе. Если ваш подтягивающий резистор слишком велик, он не сможет преодолеть ток утечки. Если он едва преодолевает ток утечки, тогда любого шума в цепи может быть достаточно для изменения входа.
При использовании цифровых выходов, которые могут поглощать и источником тока («драйвер полюсного тотема», «двухтактный драйвер»), у вас может возникнуть соблазн не использовать подтягивающие или понижающие резисторы. Тем не менее, очень важно, чтобы входы CMOS не были допущены или они могли вытягивать чрезмерный ток ... и очень легко забыть, что двунаправленные выводы MCU обычно выступают в качестве входов!
I2C и другие подобные протоколы используют выходы «открытый сток» (или «открытый коллектор»). Вместо того, чтобы иметь выходы, которые могут тянуть вверх и вниз, а выходы с открытым стоком могут только тянуть вниз. Вот почему внешний подтягивающий резистор не требуется. В настоящее время существуют дополнительные ограничения на диапазон подтягивающих резисторов; значение подтягивания сформирует RC-цепь с емкостью шины. Слишком маленькое значение еще раз не позволит выходным драйверам понизить ток, достаточный для полного вытягивания контакта до 0. Однако слишком большое значение займет слишком много времени для зарядки емкости шины.
Если есть время настройки / удержания, которое вы не можете нарушать, это поможет вам определить постоянную времени RC. Емкость шины в значительной степени определяется компоновкой печатной платы, поэтому вы можете выбрать значение R, которое в сочетании с C обеспечивает значение, комфортно соответствующее времени установки / удержания для вашего цифрового входа.