Microchip® Advanced Software Framework

twi.c File Reference

Two-Wire Interface (TWI) driver for SAM.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

#include "twi.h"

Macros

#define I2C_FAST_MODE_SPEED   400000
 
#define LOW_LEVEL_TIME_LIMIT   384000
 
#define TWI_CLK_CALC_ARGU   4
 
#define TWI_CLK_DIV_MAX   0xFF
 
#define TWI_CLK_DIV_MIN   7
 
#define TWI_CLK_DIVIDER   2
 
#define TWI_WP_KEY_VALUE   TWI_WPMR_WPKEY_PASSWD
 

Functions

void twi_disable_interrupt (Twi *p_twi, uint32_t ul_sources)
 Disable TWI interrupts. More...
 
void twi_disable_master_mode (Twi *p_twi)
 Disable TWI master mode. More...
 
void twi_disable_slave_mode (Twi *p_twi)
 Disable TWI slave mode. More...
 
void twi_enable_interrupt (Twi *p_twi, uint32_t ul_sources)
 Enable TWI interrupts. More...
 
void twi_enable_master_mode (Twi *p_twi)
 Enable TWI master mode. More...
 
void twi_enable_slave_mode (Twi *p_twi)
 Enable TWI slave mode. More...
 
uint32_t twi_get_interrupt_mask (Twi *p_twi)
 Read TWI interrupt mask. More...
 
uint32_t twi_get_interrupt_status (Twi *p_twi)
 Get TWI interrupt status. More...
 
Pdc * twi_get_pdc_base (Twi *p_twi)
 Get TWI PDC base address. More...
 
uint32_t twi_master_init (Twi *p_twi, const twi_options_t *p_opt)
 Initialize TWI master mode. More...
 
uint32_t twi_master_read (Twi *p_twi, twi_packet_t *p_packet)
 Read multiple bytes from a TWI compatible slave device. More...
 
uint32_t twi_master_write (Twi *p_twi, twi_packet_t *p_packet)
 Write multiple bytes to a TWI compatible slave device. More...
 
uint32_t twi_mk_addr (const uint8_t *addr, int len)
 Construct the TWI module address register field. More...
 
uint32_t twi_probe (Twi *p_twi, uint8_t uc_slave_addr)
 Test if a chip answers a given I2C address. More...
 
uint8_t twi_read_byte (Twi *p_twi)
 Reads a byte from the TWI bus. More...
 
void twi_reset (Twi *p_twi)
 Reset TWI. More...
 
void twi_set_slave_addr (Twi *p_twi, uint32_t ul_device_addr)
 Set TWI slave address. More...
 
uint32_t twi_set_speed (Twi *p_twi, uint32_t ul_speed, uint32_t ul_mck)
 Set the I2C bus speed in conjunction with the clock frequency. More...
 
void twi_slave_init (Twi *p_twi, uint32_t ul_device_addr)
 Initialize TWI slave mode. More...
 
uint32_t twi_slave_read (Twi *p_twi, uint8_t *p_data)
 Read data from master. More...
 
uint32_t twi_slave_write (Twi *p_twi, uint8_t *p_data)
 Write data to TWI bus. More...
 
void twi_write_byte (Twi *p_twi, uint8_t uc_byte)
 Sends a byte of data to one of the TWI slaves on the bus. More...