Hay un rango correcto de valores, sin embargo, es difícil describir exactamente cuál es ese rango. En general, 10k funciona.
Las salidas digitales tienen una capacidad especificada para generar o hundir corriente. Si su salida puede hundir 5 mA y la salida se conectó a través de un pull-up de 5 V y luego se ajustó a 0, necesitaría un mínimo de resistencia de 1k. Si usa menos de 1k, la salida no podrá absorber suficiente corriente para tirar del pin hasta 0V. Si usa un valor mayor, como 10k, entonces el pin solo tiene que hundir 0.5 mA, que es mucho menor que su clasificación.
Las entradas digitales tienen una corriente de fuga especificada. Esto es algo así como la cantidad de corriente que se necesita para "mantener" un 0 o 1 en una entrada. Si su resistencia pull-up es demasiado grande, entonces no podrá superar la corriente de fuga. Si apenas supera la corriente de fuga, cualquier ruido en el circuito podría ser suficiente para cambiar la entrada.
Cuando se utilizan salidas digitales que pueden hundirse y generar corriente ("controlador de tótem", "controlador de inserción y extracción"), puede sentirse tentado a no utilizar resistencias pull-up o pull-down. Sin embargo, es muy importante que no se permita que las entradas CMOS floten o que puedan extraer una corriente excesiva ... ¡y es muy fácil olvidar que los pines MCU bidireccionales generalmente aparecen como entradas!
I2C y otros protocolos similares utilizan salidas de "drenaje abierto" (o "colector abierto"). En lugar de tener salidas que puedan subir y bajar, y las salidas de drenaje abierto solo pueden bajar. Es por eso que se requiere la resistencia pull-up externa. Ahora hay restricciones adicionales en el rango de resistencias pull-up; El valor pull-up formará un circuito RC con la capacitancia del bus. Un valor demasiado pequeño impedirá una vez más que los controladores de salida consuman suficiente corriente para bajar el pin a 0. Sin embargo, un valor demasiado grande tomará demasiado tiempo para cargar la capacitancia del bus.
Si hay tiempos de configuración / retención que no puede violar, estos lo ayudarán a determinar una constante de tiempo RC. La capacidad del bus está determinada en gran medida por el diseño de la PCB, por lo que puede elegir un valor R que se combine con el C para proporcionar un valor que se encuentre cómodamente dentro del tiempo de configuración / retención para su entrada digital.