A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

I²C Bus Inter Integrated Circuits Bus

Apresentações semelhantes


Apresentação em tema: "I²C Bus Inter Integrated Circuits Bus"— Transcrição da apresentação:

1 I²C Bus Inter Integrated Circuits Bus
Guilherme Castilhos, Jeferson Oliveira Programação de Periféricos PUCRS I²C Bus Inter Integrated Circuits Bus

2 Tópicos Discutidos Introdução ao I²C Arbitragem Licenciamento
Convenções Elétricas Convenções do Protocolo Modos de Operação Transferência Endereçamento Operações de Escrita e Leitura Finalizando a Transmissão Multi-Master Sincronização de Clock Arbitragem Clock Stretching Velocidades Tecnologias Derivadas Aplicações I²C no Linux Ferramentas de Desenvolvimento - Phillips Conclusões Referências

3 Introdução ao I²C O I²C é de fato um padrão mundial, atualmente é implementado em mais de 1000 diferentes CIs fabricados por mais de 50 companhias. Além disso, a versatilidade do I²C é usada em várias arquiteturas de controle como System Management Bus (SMBus), Power Management Bus (PMBus), Intelligent Plataform Management Intarface (IPMI) e Advanced Telecom Computing Architecture (ATCA). I2C-bus specification and user manual 19 June 2007

4 Introdução ao I²C I²C significa Inter-Integrated Circuit
Foi desenvolvido pela Phillips na década de 80 Define convenções elétricas e protocolo para comunicação O objetivo era criar um meio de comunicação simples entre componentes de uma mesma placa de circuito impresso Hoje em dia vemos o I²C sendo usado, principalmente, para conectar periféricos em placas-mãe, sistemas embarcados e celulares. Não necessariamente na mesma placa, mas também conectando componentes ligados por cabos.

5 Licenciamento Desde 1º de outubro de 2006, nenhuma taxa de licenciamento é cobrada para implementar o protocolo I²C Mas ainda é cobrada uma taxa de 2500 euros para se obter um I²C slave address (dados de agosto de 2007) Procedimentos para obter um I²C slave address Formulário de solicitação de um I²C slave address

6 Convenções Elétricas I²C usa apenas dois sinais (fios) dreno-aberto, bidirecionais, com resistores de pull-up SDA – Serial Data SCL – Serial Clock Os componentes apenas “puxam” os sinais para o nível baixo ou deixam o sinal flutuando em Vdd (nível alto) Os resistores de pull-up Rp garantem o nível lógico correto, mantendo os sinais em Vdd quando nenhum componente está colocando o sinal em nível baixo Tensões típicas: 3.3V e 5V Exemplo com um mestre (microcontrolador) e três nodos escravos (ADC, DAC e microcontrolador), com resistores de pull-up Rp Exemplo de comportamento dos sinais SDA (verde) e SCL (vermelho) em um barramento I²C

7 Convenções Elétricas O número máximo de nodos no barramento é obviamente limitado pelo espaço de endereçamen-to, mas também pela capacitância total do barramento, de 400 pF A relação entre o resistor de pull-up e a capacitância do fio afetam o comporta-mento temporal dos sinais SDA e SCL A imagem mostra um circuito equivalente de uma conexão I²C entre dois periféricos (mestre e escravo), mostrando todos os fatores que são relevantes para o I²C. Vcc I²C supply voltage, typically ranging from 3.3V to 5.5V GND Common ground SDA Serial data (I²C data line) SCL Serial clock (I²C clock line) Rp Pull-up resistance (a.k.a. I²C termination) Rs Serial resistance Cp Wire capacitance Cc Cross channel capacitance Descrição dos itens da figura acima.

8 Conveções do Protocolo
Por definição o protocolo I²C funciona utilizando um barramento com os sinais de clock (SCL) e de dados (SDA) e um espaço de endereçamento de 7 bits, com 16 endereços reservados, sendo assim apenas 112 nodos podem se comunicar no mesmo barramento Master – nodo que controla o clock Slave – nodo que não tem controle sobre o sinal de clock O barramento é multi-master, ou seja, vários mestres podem estar presentes Um master pode operar como slave e vice-versa Exemplo com um mestre (microcontrolador) e três nodos escravos (ADC, DAC e microcontrolador)

9 Modos de Operação Existem quatro modos de operação distintos:
Master Transmit – O nodo está controlando o clock e enviando dados para um slave Master Receive – O nodo está controlando o clock e recebendo dados de um slave Slave Transmit – O nodo não está controlando o clock e está enviando dados para um master Slave Receive – O nodo não está controlando o clock e está recebendo dados de um master Exemplo com um mestre (microcontrolador) e três nodos escravos (ADC, DAC e microcontrolador)

10 Diagrama de tempo de uma transferência de dados.
Visão geral de uma transferência: Inicia com o START bit (S) quando o SDA é baixado enquanto o SCL está alto. Então, SDA prepara o bit transferido enquanto o SCL está baixo (azul) e o dado é recebido quando SCL levanta (verde). Quando a transferência está completa, um STOP bit (P) é enviado deixando o SDA ser levantado enquanto SCL fica constantemente alto. Diagrama de tempo de uma transferência de dados.

11 Primeiro byte depois do procedimento de START
Endereçamento O master inicia enviando um START bit seguido de 7 bits de endereço do slave com que ele deseja se comunicar, depois é enviado um bit que indica se o master deseja escrever ou ler do slave, caso o slave exista no barramento vai responder com um bit de acknowledge (A) O endereço do slave é enviado do bit mais significativo ao menos significativo Primeiro byte depois do procedimento de START

12 Endereçamento Endereços reservados
[1] The general call address is used for several functions including software reset. [2] No device is allowed to acknowledge at the reception of the START byte. [3] The CBUS address has been reserved to enable the inter-mixing of CBUS compatible and I2C-bus compatible devices in the same system. I2C-bus compatible devices are not allowed to respond on reception of this address. [4] The address reserved for a different bus format is included to enable I2C and other protocols to be mixed. Only I2C-bus compatible devices that can work with such formats and protocols are allowed to respond to this address.

13 Endereçamento General Call – – Endereça todos componentes do barramento. Se o componente não precisa da informação fornecida ele devolve um NACK. Todos outros componentes devolvem um ACK e passam a se comportar como slaves receivers. O segundo byte contém um comando (por exemplo, (06H) Software Reset) (00H) não é permitido como segundo byte.

14 Endereçamento Start Byte – É usado quando existe uma diferença de velocidade entre um microcontrolador relativamente lento (que não tem uma interface I²C on-chip e portanto tem que controlar o barramento via software) e um componente rápido hardware rápido. Neste caso a transferência é precedida por um procedimento de START mais longo que o normal.

15 Operação de Escrita Após o procedimento de START e do endereçamento
Se o master deseja escrever no slave então ele envia os bytes e a cada byte recebido o slave responde enviando um bit de ACK. Neste caso o master está em modo master transmit e o slave está no modo slave receive Bit de R/W em nível lógico 1 operação de leitura do slave, nível lógico 0 operação de escrita no slave.

16 Operação de Leitura Após o procedimento de START e do endereçamento
Se o master deseja ler do slave então ele recebe bytes do slave e depois de cada byte recebido ele responde enviando um bit de ACK, exceto depois do último byte Bit de R/W em nível lógico 1 operação de leitura do slave, nível lógico 0 operação de escrita no slave.

17 Finalizando a Transmissão
O master então termina a transmissão com um STOP bit Ou pode mandar um novo START bit, se ele quiser manter o controle do barramento para outra transferência Bit de R/W em nível lógico 1 operação de leitura do slave, nível lógico 0 operação de escrita no slave.

18 Multi-Master Pode existir mais de um master ao mesmo tempo no I²C
Dois ou mais masters podem começar uma transmissão ao mesmo tempo. Para não haver conflitos, eles precisam de métodos para tomar a decisão de qual tomará o controle do barramento e completará a transmissão Isso é feito com a Sincronização do Clock e a Arbitragem Quando há apenas um master, esses métodos não são necessários

19 Sincronização do Clock
O sincronismo do clock é obtido por meio de uma conexão AND entre os clocks de todos os dispositivos e a linha SCL A transição de High para Low na linha SCL força os dispositivos a iniciar uma contagem de seu período Low de clock Estando o clock de algum desses dispositivos em Low, a linha SCL permanecerá neste estado até haver a transição de Low para High do último dispositivo Os dispositivos com o período de clock menor que os outros, entram em um estado de espera High durante este tempo Quando todos concluírem a contagem dos períodos Low, a linha SCL será levada para High, e portanto liberada Neste instante, não haverá mais diferenças entre os clocks e o estado da linha SCL. O primeiro dispositivo que for pra Low levará a linha SCL para Low, e todos estarão com seus clocks sincronizados

20 Sincronização do Clock
Neste instante, não haverá mais diferenças entre os clocks e o estado da linha SCL O primeiro dispositivo que for pra Low levará a linha SCL para Low, e todos estarão com seus clocks sincronizados

21 Arbitragem A arbitragem é um procedimento de decisão que acontece na linha SDA da seguinte forma: Se um master está transmitindo um nível High, enquanto outro está transmitindo um nível Low, o estágio de saída de dados deste master será desativado, porque o nível da barra não corresponde ao seu próprio nível. O procedimento de decisão continua por muitos bits. O primeiro estágio é a comparação dos bits de endereço; se os masters estiverem cada um tentando endereçar o mesmo dispositivo, o processo de decisão continuará com a comparação dos bits de dados. A figura acima mostra a arbitragem envolvendo dois masters. No momento em que existe diferença entre o nível dos dados do MASTER e o nível atual da linha SDA, a saída de dados é desativada

22 Clock Stretching Numa comunicação I²C, o master que determina a velocidade do clock. No entanto, há situações em que o slave não é capaz de cooperar com o velocidade do clock fornecida pelo master, e precisa diminuir um pouco a velocidade. Isto é feito por um mecanismo chamado Clock Stretching. Alguns masters, que se encontram no interior de alguns ASICs não suportam Clock Stretching. Muitas vezes estes dispositivos são marcados como "two-wire interface" e não I²C.

23 Velocidades Originalmente o I²C era limitado a 100kbit/s. Com o tempo foram feitas várias modificações na especificação e agora temos 4 velocidades de operação, que são: Standard-mode (Sm) - com um bit rate de até 100 kbit/s Fast-mode (Fm) - com um bit rate de até 400 kbit/s Fast-mode Plus (Fm+) - com um bit rate de até 1 Mbit/s High-speed mode (Hs-mode) - com um bit rate de até 3.4 Mbit/s

24 Tecnologias Derivadas
O I²C é usado como protocolo de comunicação para várias arquiteturas de sistema Essas arquiteturas adicionaram comandos e extensões específicas de aplicação na especificação base do I²C Em geral componentes simplesmente I²C podem ser usados em qualquer uma dessas arquiteturas Arquiteturas: CBUS compatibility SMBus - System Management Bus PMBus - Power Management Bus IPMI - Intelligent Plataform Management Intarface ATCA - Advanced Telecom Computing Architecture

25 Aplicações I²C é apropriado para periféricos onde a simplicidade e baixo custo de fabricação são mais importantes que a velocidade. Aplicações comuns do I²C são: Leitura de dados de configuração de EEPROMS em memórias DDR2 SDRAM e outras placas de PC Gerenciamento de sistemas de suporte para placas PCI, através de uma conexão SMBus 2.0 Acesso a chips NVRAM que mantém configurações de usuários Acesso a ADs e DAs de baixa velocidade

26 Aplicações Mudança no balanço de contraste, saturação e cor em monitores (Display Data Channel) Mudança de volume de som em caixas de som inteligentes Controle de displays OLED/LCD, como em celulares Leitura de monitores de hardware e sensores de diagnóstico, como termostato de processador e velocidade de uma ventoinha Leitura de Real Time Clocks (RTC) Ligar e desligar o fornecimento de energia de componentes de um sistema

27 Aplicações

28 I²C no Linux No Linux o I²C é manipulado com um módulo específico do kernel Detalhes de como implementar um I²C client podem ser encontrados na documentação específica do kernel e em: /usr/include/linux/i2c.h

29 Ferramentas de Desenvolvimento

30 Ferramentas de Desenvolvimento

31 Conclusões Um particular ponto forte do I²C é o fato de um microcontrolador controlar uma rede de componentes com apenas dois pinos de I/O e software Periféricos podem ser removidos e adicionados do barramento I²C enquanto o sistema está em atividade, o que o torna ideal para aplicações que necessitam de hot swapping de componentes Baixo consumo de energia Baixo custo Limitações: Velocidade Gerenciamento de endereços

32 Referências [1] The I²C-Bus Specification – Version 2.1 – January 2000
[2] I²C-Bus Specification and User Manual – Rev. 03 – June 2007 [3] [4] [5]


Carregar ppt "I²C Bus Inter Integrated Circuits Bus"

Apresentações semelhantes


Anúncios Google