Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
| doc:tec:lab:bus_i2c:0_arbitraje:inicio [2026/03/28 18:34] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | doc:tec:lab:bus_i2c:0_arbitraje:inicio [2026/03/28 18:37] (actual) – ↷ Enlaces adaptados debido a una operación de mover fepg | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== [Bus I2C] Arbitraje ====== | ||
| + | * Este proceso solo se da en los sistemas multimasters. Si varios masters intentan tomar el control del bus a la vez, un reloj resultante sincronizado va a permitir un arbitraje que dará el control a un solo master pues no puede haber más de uno a la vez gobernando el bus. | ||
| + | |||
| + | * Un master puede iniciar una transmisión solo si el bus esta libre. Dos o mas master pueden generar una condición de Inicio en el bus al mismo tiempo lo que da como resultado una condición de Inicio general en Bus. | ||
| + | |||
| + | * El sistema de arbitraje actúa sobre la línea de datos '' | ||
| + | |||
| + | * El proceso podría ser el siguiente: | ||
| + | * Cada Master debe comprobar si el bit de datos que transmite junto a su pulso de reloj, coincide con el nivel lógico en la línea de datos '' | ||
| + | * a) Si el byte transmitido era el de dirección, **seguirá escuchando** al otro master por si dicha dirección es la suya y debe colocarse como slave. Si un master pierde la prioridad durante el direccionamiento (envío byte 1º tras START) debe pasar inmediatamente a slave receptor, pues puede ser él quien esté siendo direccionado. | ||
| + | * b) Si el byte transmitido era de datos deberá liberar (desbloquear) las líneas del bus ('' | ||
| + | * En ambos casos se ve que la transferencia de información no es retardada por el arbitraje, ya que los datos transferidos inicialmente por el master ganador no se pierden ni hay que repetirlos. Un master que pierde el arbitraje puede generar pulsos de reloj hasta el fin de byte en el cual él pierde el arbitraje. | ||
| + | |||
| + | * Como se ve, el proceso de arbitraje continúa hasta que se dé la circunstancia de control del bus por uno de los master. Especial atención debe ponerse si durante una transferencia de datos el procedimiento de arbitraje está todavía en proceso justo en el momento en el que se envía al bus una condición de Stop. Es posible que esta situación pueda ocurrir, en este caso el master afectado debe mandar códigos de Inicio o Stop. | ||
| + | |||
| + | * En la figura adjunta se ve el arbitraje entre dos master, aunque pueden estar involucrados más. En el momento en que hay una diferencia entre el nivel interno de la línea de datos del master '' | ||
| + | \\ | ||
| + | {{ doc: | ||
| + | \\ | ||
| + | * En el momento que un master toma el control, solo este master toma las decisiones y genera los códigos de dirección, no existen master centrales, ni existen órdenes prioritarias en el bus. | ||
| + | \\ | ||