Múltiplos masters

Dois (ou mais) masters podem iniciar uma transmissão num barramento livre (isto é, após um STOP) ao mesmo tempo

Tem de estar previsto um método para decidir qual dos masters toma o controlo do barramento e completa a transmissão – arbitragem de acesso ao barramento

O master que perde o processo de arbitragem retira-se e só tenta novo acesso ao barramento na próxima situação de "barramento livre"

Na gestão do acesso ao barramento é necessário:

  1. garantir que os relógios dos masters estão sincronizados

  2. um processo que defina qual o master que ganha o acesso ao barramento, i.e., que controla a linha SDA (arbitragem)

A sincronização de relógios e a arbitragem são baseados na técnica bit dominante/bit recessivo:

  • Nível lógico "0" – bit dominante

  • Nível lógico "1" – bit recessivo (é anulado por um bit dominante)

Sincronização de relógio

Quando a linha SCL passa de '1' -> '0' todos os masters colocam a '0' os seus relógios

Os masters mantêm o seu relógio a '0' até o seu tempo a '0' ter chegado ao fim

Quando um master termina a contagem do tempo a '0' do seu relógio liberta a linha SCL (permite que esta passe a '1')

Se SCL se mantém a '0' comuta para um estado de "wait", ficando a aguardar que a linha SCL passe a '1'

Logo que SCL passe a '1' inicia a contagem do tempo a '1' do seu relógio

O primeiro master a terminar o seu tempo a '1' força a linha SCL a '0'

O sinal SCL fica sincronizado com um tflowt_{flow}determinado pelo master com maior tflowt_{flow} e um thight_{high} imposto pelo master com menor thight_{high}

Last updated