Qual é a taxa de variação do I2C?


10

Estou configurando I 2 C em um PIC18 usando as funções internas do compilador C18, conforme descrito na seção 2.4 da documentação :

void OpenI2C2( unsigned char sync_mode,
    unsigned char slew );

Não tenho certeza do que devo fazer slew. Eu posso escolher entre duas opções, definidas em i2c.h:

  • SLEW_OFF: Taxa de rotação desativada para o modo 100 kHz
  • SLEW_ON: Taxa de rotação ativada para o modo 400 kHz

Na folha de dados do registro 15-1, página 257, as duas opções são explicadas um pouco mais detalhadamente:

  • 1 = Controle da taxa de rotação desativado no modo de velocidade padrão (100 kHz e 1 MHz)
  • 0 = Controle de taxa de rotação ativado para o modo de alta velocidade (400 kHz)

Eu não entendo isso - eu tenho algumas perguntas:

  1. O que é taxa de variação?

  2. Para mim, as duas opções não fazem sentido - e se eu quiser desativar a taxa de giro para 400kHz e habilitá-la para 100kHz? Por que é isso?

  3. Quando devo escolher SLEW_OFFe quando SLEW_ON?

pic  c  i2c  software  c18 

Respostas:


8

A taxa de variação é a rapidez com que o sinal muda de baixo para alto ou vice-versa. Ao limitar essa transição abrupta, você pode reduzir o toque das reflexões do sinal e limitar a interferência entre as linhas do sinal.

A maneira como funciona, porém, é que, a 100kHz, as taxas de sinal são tão lentas que a taxa de rotação realmente não importa; a 400kHz, você poderá consertar um circuito problemático limitando-o; mas quando você chega a 1 MHz, você realmente precisa de toda a velocidade de transição possível e, portanto, basta fazer uma boa correspondência de sinal e direcionar suas linhas com mais cuidado.

O bit em questão nada mais faz do que ativar ou desativar o recurso. O resto é simplesmente um conselho. As velocidades estão entre parênteses, pois é apenas uma sugestão.


Obrigado! Parece ser uma boa opção - por que eu não usaria o controle de taxa de variação?

2
@CamilStaps - Meu entendimento, parece que você pode ter lido mal a resposta. Ter transições nítidas (SLEW_ON) causa ruído e toque extra na EMI. Ter transições lentas (SLEW_OFF) reduz o EMI, mas reduz a frequência máxima de uso do link. É uma troca.
Tim

@gbarry: Ah, então, com o controle da taxa de giro desligado, o sinal fica o mais próximo possível das ondas quadradas que o uC consegue. Com o controle da taxa de giro na onda, as transições alto / baixo são mais inclinadas (= menos verticais) do que seriam?
precisa saber é o seguinte

11
Isso está correto, embora eu não tenha certeza de quão dramático é no PIC (devo verificar). Nota histórica: As especificações do RS232 tinham uma limitação de taxa reduzida, então alguém saiu com um chip de driver que tinha bons sinais de saída em declive-y. E então todos nós começamos a usar mais e mais rápido bps taxas por isso não poderia usar esse chip ...
gbarry

11
Três anos depois, e eu tive a mesma pergunta, mas na verdade eu a medi. Para referência futura, em um PIC16F1454 com pull-ups de 4,7k e um único escravo no barramento, o tempo de queda é de 2,9 ns sem limitação de taxa de giro (possivelmente limitada pela minha sonda de 150 MHz) e 151 ns com limite de velocidade de giro. Não afeta o tempo de subida.
pipe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.