Múltiplos masters
Last updated
Last updated
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:
garantir que os relógios dos masters estão sincronizados
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)
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 determinado pelo master com maior e um imposto pelo master com menor