Existe uma taxa de clock mínima especificada pelo I2C? Eu sei que a taxa de clock mais usada é 100kHz e existe um modo "rápido" de 400kHz suportado por alguns dispositivos, e um modo mais rápido ainda suportado por outros dispositivos (acho que 1MHz?). Como o sinal SCK é gerado pelo mestre, presumo que alguém possa operar a uma velocidade muito mais lenta do que qualquer um deles - existe um limite inferior na prática? Até que ponto os dispositivos escravos se preocupam com a taxa de clock (por exemplo, é comum que eles tenham tempos de espera curtos)? A razão pela qual estou perguntando é que estou pensando se poderia executar o I2C a uma distância maior (por exemplo, 20 pés) para programar EEPROMs do I2C de maneira confiável em uma configuração do testador de produção. Suponho que não funcione de forma confiável nessa distância nas taxas de dados padrão.
fonte
Respostas:
Não, não há frequência mínima, a frequência mínima do relógio é 0 ou DC. Veja a especificação , página 48.
Mas você terá que prestar atenção aos tempos de subida e descida. Esses são 1000 ns e 300 ns no máximo, resp. E um cabo mais longo, com alguma capacitância, influenciará as bordas, independentemente da frequência.
É essa capacitância, juntamente com as resistências de pull-up, que determinarão o tempo de subida. O tempo de queda não é um problema, porque o FET que puxa a linha para baixo tem uma resistência muito baixa e, em seguida, a constante de tempo de queda também será muito baixa. Então ficamos com o tempo de subida. Para obter um tempo de subida de 1000 ns em um cabo de 200 pF, os resistores pull-up não devem ser maiores que 2,2 kΩ. (tempo de subida para 90% do valor final.)
O gráfico mostra a resistência máxima à tração (em Ω) versus a capacitância do cabo (em pF) para obter arestas de 1000 ns. Observe que os dispositivos I2C não precisam afundar mais de 3 mA; portanto, a 3,3 V a capacitância do barramento não deve ser maior que cerca de 395 pF; caso contrário, a resistência à tração teria que ser menor que 1100 and e permitir mais que os 3 mA. Essas são as linhas tracejadas esverdeadas. Para operação de 5 V, a capacidade permitida é de até 260 pF, para um valor de 1667 Ω (as linhas tracejadas roxas).
fonte
Eu executei o I2C em cerca de 100Hz sem nenhum problema. Como o @stevenvh disse, apenas se preocupe com a velocidade máxima e a capacitância da linha.
fonte
Você deve resolver os problemas de comprimento de linha com uma seleção cuidadosa de drivers e correspondência de impedância.
Outra opção, supondo que o longo prazo faça parte da configuração e não do produto, pode ser usar algo que lide bem com a distância, como o RS422 (ou praticamente falando até o RS232) para conversar com um microcontrolador colocado no conector do chicote de teste, que então conversaria i2c a uma curta distância do alvo.
Ou você provavelmente poderia fazer isso sem a inteligência, usando uma pranchinha que unia um protocolo de sinalização diferencial com receptores de disparo Schmidt de e para a sinalização i2c no alvo.
Suas corridas provavelmente não são longas o suficiente para que os tempos de propagação do sinal (problemas ausentes na instalação) exijam taxas de clock particularmente lentas para evitar a troca de ônibus enquanto os dados antigos ainda estão em andamento.
Obviamente, você desejará fazer uma verificação de readback dos dados que você acabou de programar.
Apenas para fins de comparação, os monitores VGA IIRC possuem uma leitura de ID i2c (ou é semelhante a i2c), que provavelmente ainda funcionará se você adicionar um cabo de extensão de 1,8 m ao cabo padrão de 1,5 a 3 pés.
fonte