Agora eu sei que, para ter um endereço I2C reservado para você, você precisa pagar algum dinheiro ao pessoal do I2C. Mas eu não quero fazer isso.
Estou pedindo conselhos sobre o endereço que devo escolher para meus escravos e MCUs principais no meu projeto. Também haverá uma EEPROM no quadro. Portanto, evitarei usar o endereço da EEPROM. Eu pretendo que o mestre se conecte a uma ampla gama de sensores, incluindo giroscópios e acelerômetros, e talvez dispositivos de memória adicionais. Existem blocos de endereços dos quais devo ficar longe? Eu estava pensando em usar apenas 0x00 para o mestre e 0x01 para o escravo, porque esses parecem ser raramente usados.
Outra pergunta: seria uma má idéia misturar dispositivos de 10 bits e dispositivos de 7 bits no mesmo barramento? Eu estava considerando a possibilidade de meus MCUs se comunicarem com o endereçamento de 10 bits, mas apenas usando endereços de 7 bits para sensores.
Respostas:
Primeiro, não use 0x00 e 0x01, eles são reservados! A Tabela 3 da Especificação do barramento I2C lista os endereços reservados (e os motivos):
Você também deve ficar longe de 0x00 porque isso não tem transições de borda e pode ser uma condição de erro (e é difícil depurar).
Fora isso, eu diria "Basta configurá-lo". Se você quiser conectar uma ampla variedade de sensores, poderá pagar ao NXP por um endereço ou fornecer endereços ajustáveis. As modificações de software devem ser óbvias se você deseja distribuir o código fonte. Uma opção de hardware para alternar um ou dois bits do endereço selecionado (jumpers de solda nos pinos digitais) é barata e fácil, ou uma rede de resistores com jumpers conectados a um pino A / D pode oferecer controle total no hardware.
fonte
Escolha um dispositivo que você não usará positivamente em seu design e use o endereço I2C. Por exemplo, se você não precisar de um RTC, poderá usar 0xA2 e 0xA3, que são usados pelo NXP PCF8563 (e provavelmente outros RTCs).
fonte
Aqui está uma lista de endereços alocados em 1999: http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF
Eles não divulgam uma lista completa com este raciocínio:
Em http://www.nxp.com/products/interface_control/i2c/faq/
Agora, se tudo for interno ao seu projeto, não há motivo para que você não possa simplesmente selecionar qualquer endereço que desejar, desde que não entre em conflito com o que planeja conectar.
fonte
Como Kellenjb diz, você não terá uma lista completa de endereços de dispositivos escravos.
No entanto, existem vários endereços reservados que você não pode usar (0x00, por exemplo, é o endereço de chamada geral).
A lista está aqui
A mistura de endereços de 10 e 7 bits é boa, desde que os escravos de 7 bits obedeçam ao padrão I2C e ignorem os endereços de 10 bits.
fonte