Sei sulla pagina 1di 7

Centro de Tecnologia Microgenios - Todos os direitos reservados

Clique aqui para Imprimir o doc umento

Comunicação I2C
1.0 memória 24Cxx
1.1 Pinagem:
1.2 Endereçamento
1.3 Gravação
1.4 Leitura
1.5 Programa de Gravação I2C.
1.6 Programa de Leitura I2C.

Memória 24Cxx

A série 24Cxx EEPROM de baixo custo, baixo consumo e


tamanho reduzido (oito pinos) é excelente para aplicação em
desenvolvimentos compactos. Utiliza tecnologia I2C (permite
leitura/escrita com duas vias SDA e SCL).

A figura mostra a pinagem da memória 24CXX .

Tipos de memória serial EEPROM: 24C01, 24C02, 24C04,


24C08, 24C16, 24C32, 24C64, 24C128, 24C256, 24C512 fabricado por: ATMEL,
STM, etc.

Modelo Pinagem Capacidade


24C01 8 pinos 1Kbits
24C02 8 pinos 2Kbits
24C04 8 pinos 4Kbits
24C08 8 pinos 8Kbits
24C16 8 pinos 16Kbits
24C64 8 pinos 64Kbits

Pinagem:

Endereçamento

Os pinos A0, A1 e A2 definem o endereço físico da 24CXX no barramento I2C, que


permite ligar até oito memórias dessas no barramento.
Para podermos ler ou escrever dados nessas memórias, é necessário sabermos seu endereço no
barramento I2C. O endereço é definido da seguinte maneira:

O endereço é formado por 1 byte subdividido em três partes:

 1010 - esse endereço é fixo para esse tipo de memória serial.


 A2, A1, A0 - endereço da memória no barramento programado no
hardware.
 R/W - bit que define se vamos ler ou escrever na 24CXX. Para ler
colocamos o valor 1 em R/W. E para escrever colocamos o valor 0
em R/W.

Gravação

Diagrama de gravação de dados:


Para gravarmos dados (byte) na EEPROM 24CXX, temos de seguir estes processos:

1) Envio do bit de início da comunicação - START .


2) Envio do byte com o endereço físico da memória 24CXX no
barramento I2C, sendo o bit LSB desse byte (R/W) em nível 0 (escrita),
pois vamos escrever na memória.
1) Envio do endereço na EEPROM em que o dado será gravado.
2) Envio dos dados (byte).
3) Envio do bit de finalização de comunicação - STOP.

No processo de escrita, os bits de reconhecimento de dados ACK são gerados pelo


receptor (memória).

Leitura

Diagrama de leitura de dados.

1) Envio do bit de início da comunicação - START.


2) Envio do byte com o endereço físico da memória 24CXX no
barramento I2C, sendo o bit LSB desse byte (R/W) em nível 0 (escrita).
3) Envio do endereço na EEPROM em que será lido o dado.
4) Envio novamente do bit de início da comunicação - START.
5) Envio novamente do byte com o endereço físico da memória 24CXX no
barramento I2C, sendo o bit LSB desse byte (R/W) agora em nível 1
(leitura), pois vamos ler dados da memória.
6) Leitura dos dados na memória. A cada byte lido o mestre envia uma
confirmação de recebimento de dado ACK no barramento.
7) Ao término da leitura, o master informa que não quer mais ler dados
através do bit NOACK, e finaliza a leitura pelo bit stop.

No processo de leitura, os bits de reconhecimento de dados ACK são gerados pelo


mestre (receptor).

Receita de Bolo
É muito fácil de gravar dados em um memória da série 24Cxx em programas feitos
com auxilio do mikroC. Acompanhe essa receita de bolo:Invertemos o diagrama de
gravação de dados na qual mostra todas as etapas para gravar a memória 24Cxx, e
colocamos para cada estado do diagrama a linha de programa correspondente em
BASIC.

Programa de Gravação I2C.

Teremos então como exemplo de programa:

I2C_Init(100000); // frequencia de clock do barramento I2C


(CONSULTAR DATASHEET DO CHIP PARA SABER SUA FREQUENCIA)
//esta função só precisa ser inicializada
somente 1 unica vez no programa
I2C_Start(); // start no barramento i2c
I2C_Wr(0xA0); // endereço da memória no hardware do kit
(w = 0)
I2C_Wr(0x00); // endereço da eerprom onde será salvo o
dado
I2C_Wr(variavel_A); // grava a variável A no endereço 00 da
memória serial
I2C_Wr(variavel_B); // grava a variável B no endereço 01 da
memória serial
I2C_Wr(variavel_C); // grava a variável C no endereço 02 da
memória serial
I2C_Wr(variavel_D); // grava a variável D no endereço 03 da
memória serial
I2C_Stop(); // condição de stop na comunicação i2c

Este diagrama de comunicação I2C é padrão e utilizados em muitos dispositivos


I2C. Apesar de estarmos se tratando do processo de gravação para a serie de
memória 24Cxx, este bloco de comandos são válidos para quase todos outros
componentes I2C.Por exemplo: conversores A/D e D/A I2C, como o PCF8591N;
RTC - PCF8583N, DS1307, entre outros.

Programa de Leitura I2C.

O processo de leitura de já em um pouco mais trabalhoso e confuso para muitos


programadores que utilizam o assembly ou o C. Em BASIC o processo é muito fácil
de ser programado, acomanhe:
Teremos então como exemplo de programa:

I2C_Start(); // start no barramento i2c


I2C_Wr(0xA0); // endereço da memória no hardware (w = 0)
I2C_Wr(0x00); // endereço da eeprom onde será lido o byte
I2C_Repeated_Start(); // re-start no barramento
I2C_Wr(0xA1); // endereço da memória no hardware do kit
(w = 1)
variavel_A = I2C_Rd(ack); // salva o valor armazenado no endereço
00h da memória na variável A
variavel_B = I2C_Rd(ack); // salva o valor armazenado no endereço
01h da memória na variável B
variavel_C = I2C_Rd(ack); // salva o valor armazenado no endereço
02h da memória na variável C
variavel_D = I2C_Rd(0); // salva o valor armazenado no endereço
03h da memória na variável D: (NO acknowledge)
I2C_Stop(); // finaliza a comunicação i2c

Acompanhe passo a passo o diagrama de leitura e escrita de


dispositivos no barramento I2C. Para programar outros tipos
de componentes, basta verificar o diagrama de leitura e
escrita no datasheet fornecido pelo fabricante.

Voltar para o topo da pagina

Centro de Tecnologia Microgenios - Curso de Microcontroladores PIC - Programação


em C
Microgenios © 1998 - 2007. Todos os direitos reservados. É proibido cópia parcial ou
integral desse material sem prévio aviso. Maiores informações:
suporte@microgenios.com.br

Potrebbero piacerti anche