I2C Tiva TM4C129

53 views
Skip to first unread message

Allef Pablo Araujo

unread,
Sep 12, 2017, 8:27:12 AM9/12/17
to Texas Instruments Info para Designers e Projetistas
Olá, estou tentando fazer funcionar um exemplo simples que lê o Device ID do sensor de temperatura si7005, através da interface I2C5, porém não estou tendo sucesso.
Eu tenho resistores de pull-up externos nas minhas linhas SCL e SDA e consigo medir os sinais no osciloscópio.
O código está em anexo, será que alguém consegue me apontar onde está o erro?
hello.c

Eder Andrade

unread,
Sep 12, 2017, 9:39:27 AM9/12/17
to allef...@gmail.com, Texas Instruments Info para Designers e Projetistas

Confira se o clock do I2C5 está habilitado.

 

Enviado do Email para Windows 10

--

--

Você recebeu esta mensagem porque está inscrito no Grupo Google "Texas Instruments Info para Designers e Projetistas".

Para postar uma mensagem neste grupo, mande um email para texa...@googlegroups.com

Para deixar o grupo, mande um email para texas-sc+u...@googlegroups.com

Para mais opções, visite este grupo no endereço:

http://groups.google.com/group/texas-sc?hl=pt-BR

---

Você está recebendo esta mensagem porque se inscreveu no grupo "Texas Instruments Info para Designers e Projetistas" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para texas-sc+u...@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/d/optout.

 

Allef Pablo Araujo

unread,
Sep 12, 2017, 10:27:52 AM9/12/17
to Eder Andrade, Texas Instruments Info para Designers e Projetistas
Eder, bom dia!

Sim, está!

SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C5);

Em 12 de setembro de 2017 10:39, Eder Andrade <ederan...@gmail.com> escreveu:

Confira se o clock do I2C5 está habilitado.

 

Enviado do Email para Windows 10

 

De: Allef Pablo Araujo
Enviado:terça-feira, 12 de setembro de 2017 09:27
Para: Texas Instruments Info para Designers e Projetistas
Assunto: [TI] I2C Tiva TM4C129

 

Olá, estou tentando fazer funcionar um exemplo simples que lê o Device ID do sensor de temperatura si7005, através da interface I2C5, porém não estou tendo sucesso.

Eu tenho resistores de pull-up externos nas minhas linhas SCL e SDA e consigo medir os sinais no osciloscópio.

O código está em anexo, será que alguém consegue me apontar onde está o erro?

 

--

--

Você recebeu esta mensagem porque está inscrito no Grupo Google "Texas Instruments Info para Designers e Projetistas".

Para postar uma mensagem neste grupo, mande um email para texa...@googlegroups.com

Para deixar o grupo, mande um email para texas-sc+unsubscribe@googlegroups.com

Para mais opções, visite este grupo no endereço:

http://groups.google.com/group/texas-sc?hl=pt-BR

---

Você está recebendo esta mensagem porque se inscreveu no grupo "Texas Instruments Info para Designers e Projetistas" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para texas-sc+unsubscribe@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/d/optout.

 




--
Allef

Charles Dias

unread,
Sep 12, 2017, 8:54:48 PM9/12/17
to Texas Instruments Info para Designers e Projetistas
Boa noite Allef,

Adicione um delay antes de "while(I2CMasterBusy(I2C5_BASE));". Já tive problemas com a I2C dessa placa devido a essa restrição de tempo. Maiores informações verifique a ERRATA I2C#05 e I2C#08. É informado que é necessário um delay de no mínimo 60% do clock, antes de chamar essa função.

Espero que ajude. Abraço.

Charles Dias

unread,
Sep 13, 2017, 3:49:55 PM9/13/17
to Texas Instruments Info para Designers e Projetistas
Em terça-feira, 12 de setembro de 2017 09:27:12 UTC-3, Allef Pablo Araujo escreveu:
Boa tarde Allef,

Verifiquei o seu código e observei alguns detalhes:

1 - Em alguma parte do datasheet li que é recomendado esperar alguns cloks, após habilitar o clock do periférico, antes de configurar o periférico. sugiro adicionar algo como
// Aguarda até o módulo está pronto
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_I2C5))
{}

logo após habilitar o clock da I2C.

2 - Existe um erro na função de leitura. Substitua

//send control byte and register address byte to slave device
I2CMasterControl(I2C5_BASE, I2C_MASTER_CMD_SINGLE_SEND);

por

//send control byte and register address byte to slave device
I2CMasterControl(I2C5_BASE, I2C_MASTER_CMD_BURST_SEND_START);


Espero que ajude. Abraço.

Allef Pablo Araujo

unread,
Sep 13, 2017, 5:08:09 PM9/13/17
to christi...@ee.ufcg.edu.br, Texas Instruments Info para Designers e Projetistas
Charles, boa noite!

Cara, fiz a mudança para I2C_MASTER_CMD_BURST_SEND_START e consegui ler o dado. Mesmo usando polling!

Muito obrigado!

--
--
Você recebeu esta mensagem porque está inscrito no Grupo Google "Texas Instruments Info para Designers e Projetistas".
Para postar uma mensagem neste grupo, mande um email para texa...@googlegroups.com
Para deixar o grupo, mande um email para texas-sc+unsubscribe@googlegroups.com
Para mais opções, visite este grupo no endereço:
http://groups.google.com/group/texas-sc?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Texas Instruments Info para Designers e Projetistas" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para texas-sc+unsubscribe@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.



--
Allef
Reply all
Reply to author
Forward
0 new messages