Driver TWI/I2C - YouTube: Ciência Elétrica
Biblioteca Otimizada para Microcontroladores AVR
Carregando...
Procurando...
Nenhuma entrada encontrado
Referência do Arquivo twi.h

Interface pública do driver TWI/I2C para AVR. Mais...

#include "twi_types.h"
#include "twi_config.h"
#include <stddef.h>
Gráfico de dependência de inclusões para twi.h:
Este grafo mostra quais arquivos estão direta ou indiretamente relacionados com esse arquivo:

Ir para o código-fonte desse arquivo.

Definições e Macros

#define F_CPU   16000000UL
 Define a frequência da CPU caso não tenha sido definida via compilador.

Enumerações

enum  TWI_BusState_t { TWI_BUS_IDLE , TWI_BUS_BUSY , TWI_BUS_ERROR }
 Estados lógicos do barramento TWI. Mais...

Funções

TWI_Status_t twi_init (TWI_Mode_t mode, uint8_t address, TWI_Clock_t clock)
 Inicializa o módulo TWI.
void twi_deinit (void)
 Desinicializa o módulo TWI, desligando o hardware e interrupções.
uint8_t twi_bus_is_free (void)
 Verifica se o barramento TWI está disponível para uma nova transação.
TWI_Status_t twi_master_start_write (uint8_t slave_address, const uint8_t *data, size_t length)
 Inicia envio assíncrono de dados como Master.
TWI_Status_t twi_master_start_read (uint8_t slave_address, uint8_t *data, size_t length)
 Inicia leitura assíncrona de dados como Master.
TWI_Status_t twi_master_start_write_read (uint8_t slave_address, const uint8_t *write_data, size_t write_length, uint8_t *read_data, size_t read_length)
 Inicia uma transação combinada (Escrita seguida de Leitura) com Repeated Start.
void twi_master_register_callbacks (TWI_Master_Complete_Callback_t on_complete, TWI_Error_Callback_t on_error)
 Registra os callbacks de eventos para o modo Master.
void twi_slave_register_callbacks (TWI_Slave_Receive_Callback_t on_receive, TWI_Slave_Transmit_Callback_t on_transmit)
 Registra os callbacks de eventos para o modo Slave.
TWI_Status_t twi_slave_process (void)
 Processa eventos pendentes no Slave.
TWI_Status_t twi_master_start_probe (uint8_t slave_address)
 Realiza um "ping" no endereço para verificar se o Slave está presente.
uint8_t twi_had_timeout (void)
 Verifica se a última transação foi abortada por tempo limite excedido.
TWI_BusState_t twi_get_bus_status (void)
 Retorna o estado atual do barramento.
TWI_Status_t twi_master_write_read (uint8_t slave_addr, const uint8_t *tx_data, size_t tx_len, uint8_t *rx_data, size_t rx_len)
 Versão síncrona/bloqueante de escrita seguida de leitura.

Descrição detalhada

Interface pública do driver TWI/I2C para AVR.

Proporciona funções para operação Master e Slave, suportando modos de leitura, escrita e transações combinadas de forma assíncrona.

Definição no arquivo twi.h.

Definições e macros

◆ F_CPU

#define F_CPU   16000000UL

Define a frequência da CPU caso não tenha sido definida via compilador.

Definição na linha 13 do arquivo twi.h.

Enumerações

◆ TWI_BusState_t

Estados lógicos do barramento TWI.

Enumeradores
TWI_BUS_IDLE 

Barramento livre.

TWI_BUS_BUSY 

Transação ativa em andamento.

TWI_BUS_ERROR 

Estado de erro detectado.

Definição na linha 111 do arquivo twi.h.

Funções

◆ twi_bus_is_free()

uint8_t twi_bus_is_free ( void )

Verifica se o barramento TWI está disponível para uma nova transação.

Retorna
1 se livre, 0 se ocupado.
Este é o diagrama das funções utilizadas por essa função:

◆ twi_deinit()

void twi_deinit ( void )

Desinicializa o módulo TWI, desligando o hardware e interrupções.

Desinicializa o módulo TWI, desligando o hardware e interrupções.

Definição na linha 90 do arquivo twi.c.

◆ twi_get_bus_status()

TWI_BusState_t twi_get_bus_status ( void )

Retorna o estado atual do barramento.

Retorna
TWI_BusState_t Estado atual.

Definição na linha 390 do arquivo twi.c.

◆ twi_had_timeout()

uint8_t twi_had_timeout ( void )

Verifica se a última transação foi abortada por tempo limite excedido.

Retorna
1 se ocorreu timeout, 0 caso contrário.

◆ twi_init()

TWI_Status_t twi_init ( TWI_Mode_t mode,
uint8_t address,
TWI_Clock_t clock )

Inicializa o módulo TWI.

Parâmetros
modeModo de operação (TWI_MODE_MASTER ou TWI_MODE_SLAVE).
addressEndereço Slave (0-127). Ignorado no modo Master.
clockFrequência do barramento (TWI_Clock_t).
Retorna
TWI_Status_t Status da operação.

Definição na linha 65 do arquivo twi.c.

Este é o diagrama das funções utilizadas por essa função:
Esse é o diagrama das funções que utilizam essa função:

◆ twi_master_register_callbacks()

void twi_master_register_callbacks ( TWI_Master_Complete_Callback_t on_complete,
TWI_Error_Callback_t on_error )

Registra os callbacks de eventos para o modo Master.

Parâmetros
on_completeFunção chamada após sucesso.
on_errorFunção chamada em caso de falha ou NACK.

Definição na linha 97 do arquivo twi.c.

Este é o diagrama das funções utilizadas por essa função:
Esse é o diagrama das funções que utilizam essa função:

◆ twi_master_start_probe()

TWI_Status_t twi_master_start_probe ( uint8_t slave_address)

Realiza um "ping" no endereço para verificar se o Slave está presente.

Parâmetros
slave_addressEndereço a ser testado.
Retorna
TWI_Status_t TWI_OK se o comando de START foi enviado.

Definição na linha 109 do arquivo twi.c.

◆ twi_master_start_read()

TWI_Status_t twi_master_start_read ( uint8_t slave_address,
uint8_t * data,
size_t length )

Inicia leitura assíncrona de dados como Master.

Parâmetros
slave_addressEndereço do dispositivo Slave.
dataBuffer onde os dados lidos serão armazenados.
lengthNúmero de bytes a serem lidos.
Retorna
TWI_Status_t TWI_OK se a leitura foi disparada.

Definição na linha 348 do arquivo twi.c.

Esse é o diagrama das funções que utilizam essa função:

◆ twi_master_start_write()

TWI_Status_t twi_master_start_write ( uint8_t slave_address,
const uint8_t * data,
size_t length )

Inicia envio assíncrono de dados como Master.

Observação
Operação não-bloqueante. O callback de conclusão será chamado na ISR.
Parâmetros
slave_addressEndereço de 7 bits do dispositivo destino.
dataPonteiro para o buffer de dados a serem enviados.
lengthQuantidade de bytes no buffer.
Retorna
TWI_OK se iniciado com sucesso, TWI_ERROR_BUS_BUSY se o barramento estiver ocupado.

Definição na linha 332 do arquivo twi.c.

Esse é o diagrama das funções que utilizam essa função:

◆ twi_master_start_write_read()

TWI_Status_t twi_master_start_write_read ( uint8_t slave_address,
const uint8_t * write_data,
size_t write_length,
uint8_t * read_data,
size_t read_length )

Inicia uma transação combinada (Escrita seguida de Leitura) com Repeated Start.

Parâmetros
slave_addressEndereço do Slave.
write_dataBuffer com dados de escrita (ex: endereço de registrador).
write_lengthTamanho da escrita.
read_dataBuffer para armazenar o retorno do Slave.
read_lengthTamanho da leitura esperada.
Retorna
TWI_Status_t Status de início da transação.

Definição na linha 361 do arquivo twi.c.

Esse é o diagrama das funções que utilizam essa função:

◆ twi_master_write_read()

TWI_Status_t twi_master_write_read ( uint8_t slave_addr,
const uint8_t * tx_data,
size_t tx_len,
uint8_t * rx_data,
size_t rx_len )

Versão síncrona/bloqueante de escrita seguida de leitura.

Aviso
Pode bloquear a execução se não houver timeout adequado.

Versão síncrona/bloqueante de escrita seguida de leitura.

Esta função configura o hardware para enviar uma sequência de bytes e, imediatamente após (sem liberar o barramento), inicia a leitura de uma quantidade específica de bytes. É o método padrãoo para leitura de registradores em dispositivos como o DS3231.

Parâmetros
slave_addrEndereço de 7 bits do dispositivo escravo (ex: 0x68).
tx_dataPonteiro para o buffer de dados a serem enviados (ex: endereço do registrador).
tx_lenQuantidade de bytes a transmitir.
rx_dataPonteiro para o buffer onde os dados recebidos serão armazenados.
rx_lenQuantidade de bytes a receber.
Retorna
TWI_OK se a transação foi iniciada com sucesso.
TWI_ERROR_BUS_BUSY se o módulo TWI já estiver processando outra transação.

Definição na linha 418 do arquivo twi.c.

◆ twi_slave_process()

TWI_Status_t twi_slave_process ( void )

Processa eventos pendentes no Slave.

Observação
Deve ser chamada periodicamente no loop principal se não houver processamento direto na ISR.
Retorna
TWI_Status_t Status do processamento.

Definição na linha 385 do arquivo twi.c.

◆ twi_slave_register_callbacks()

void twi_slave_register_callbacks ( TWI_Slave_Receive_Callback_t on_receive,
TWI_Slave_Transmit_Callback_t on_transmit )

Registra os callbacks de eventos para o modo Slave.

Parâmetros
on_receiveChamado quando o Master envia dados para este endereço.
on_transmitChamado quando o Master solicita dados deste endereço.

Definição na linha 103 do arquivo twi.c.

Este é o diagrama das funções utilizadas por essa função:
Esse é o diagrama das funções que utilizam essa função: