Nut/OS  4.10.3
API Reference
twif.h File Reference
#include <sys/types.h>
#include <stdint.h>
Include dependency graph for twif.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define TWI_SETSPEED   0x0401
 Set transfer speed.
#define TWI_GETSPEED   0x0402
 Query transfer speed.
#define TWI_SETSLAVEADDRESS   0x0403
 Set local slave address.
#define TWI_GETSLAVEADDRESS   0x0404
 Query local slave address.
#define TWI_SETSTATUS   0x0409
 Set status.
#define TWI_GETSTATUS   0x040a
 Query status.
#define TWERR_OK   0
 No error occured.
#define TWERR_TIMEOUT   1
 Interface timeout.
#define TWERR_BUS   2
 Bus error.
#define TWERR_IF_LOCKED   3
 Interface locked.
#define TWERR_SLA_NACK   4
 No slave response.
#define TWERR_DATA_NACK   5
 Data not acknowledged.
#define TWSLA_MIN   17
 Lowest slave address. Addresses below are reserved for special purposes.
#define TWSLA_MAX   79
 Lowest slave address. Addresses above are reserved for special purposes.
#define TWSLA_BCAST   0
 Broadcast slave address.
#define TWSLA_HOST   16
 Host slave address.
#define TWSLA_DEFAULT   193
 Default slave address.

Functions

int TwInit (uint8_t sla)
 Initialize TWI interface.
int TwIOCtl (int req, void *conf)
 Perform TWI control functions.
int TwMasterTransact (uint8_t sla, CONST void *txdata, uint16_t txlen, void *rxdata, uint16_t rxsiz, uint32_t tmo)
 Transmit and/or receive data as a master.
int TwMasterRegRead (uint8_t sla, uint32_t iadr, uint8_t iadrlen, void *rxdata, uint16_t rxsiz, uint32_t tmo)
 Receive data as a master from a device having internal addressable registers.
int TwMasterRegWrite (uint8_t sla, uint32_t iadr, uint8_t iadrlen, CONST void *txdata, uint16_t txsiz, uint32_t tmo)
 Transmit data as a master to a device having internal addressable registers.
int TwMasterError (void)
 Get last master mode error.
uint16_t TwMasterIndexes (uint8_t idx)
 Get last transfer results.
int TwSlaveListen (uint8_t *sla, void *rxdata, uint16_t rxsiz, uint32_t tmo)
 Listen for incoming data from a master.
int TwSlaveRespond (void *txdata, uint16_t txlen, uint32_t tmo)
 Send response to a master.
int TwSlaveError (void)
 Get last slave mode error.

Define Documentation

#define TWI_SETSPEED   0x0401

Set transfer speed.

Definition at line 55 of file twif.h.

Referenced by TwInit(), and TwIOCtl().

#define TWI_GETSPEED   0x0402

Query transfer speed.

Definition at line 56 of file twif.h.

Referenced by TwIOCtl().

#define TWI_SETSLAVEADDRESS   0x0403

Set local slave address.

Definition at line 57 of file twif.h.

Referenced by TwIOCtl().

#define TWI_GETSLAVEADDRESS   0x0404

Query local slave address.

Definition at line 58 of file twif.h.

Referenced by TwIOCtl().

#define TWI_SETSTATUS   0x0409

Set status.

Definition at line 59 of file twif.h.

Referenced by TwIOCtl().

#define TWI_GETSTATUS   0x040a

Query status.

Definition at line 60 of file twif.h.

Referenced by TwIOCtl().

#define TWERR_OK   0

No error occured.

Definition at line 63 of file twif.h.

#define TWERR_TIMEOUT   1

Interface timeout.

Definition at line 64 of file twif.h.

Referenced by TwMasterRegRead(), TwMasterRegWrite(), TwMasterTransact(), TwSlaveListen(), and TwSlaveRespond().

#define TWERR_BUS   2

Bus error.

Definition at line 65 of file twif.h.

Referenced by TwSlaveError().

#define TWERR_IF_LOCKED   3

Interface locked.

Definition at line 66 of file twif.h.

Referenced by TwMasterRegRead(), TwMasterRegWrite(), and TwMasterTransact().

#define TWERR_SLA_NACK   4

No slave response.

Definition at line 67 of file twif.h.

Referenced by TwMasterTransact().

#define TWERR_DATA_NACK   5

Data not acknowledged.

Definition at line 68 of file twif.h.

#define TWSLA_MIN   17

Lowest slave address. Addresses below are reserved for special purposes.

Definition at line 71 of file twif.h.

#define TWSLA_MAX   79

Lowest slave address. Addresses above are reserved for special purposes.

Definition at line 75 of file twif.h.

#define TWSLA_BCAST   0

Broadcast slave address.

Definition at line 79 of file twif.h.

#define TWSLA_HOST   16

Host slave address.

Definition at line 80 of file twif.h.

#define TWSLA_DEFAULT   193

Default slave address.

Definition at line 81 of file twif.h.


Function Documentation

int TwSlaveListen ( uint8_t sla,
void *  rxdata,
uint16_t  rxsiz,
uint32_t  tmo 
)

Listen for incoming data from a master.

If this function returns without error, the bus is blocked. The caller must immediately process the request and return a response by calling TwSlaveRespond().

Note:
This function is only available on ATmega128 systems. The function is not reentrant.
Parameters:
slaPoints to a byte variable, which receives the slave address sent by the master. This can be used by the caller to determine whether the the interface has been addressed by a general call or its individual address.
rxdataPoints to a data buffer where the received data bytes are stored.
rxsizSpecifies the maximum number of data bytes to receive.
tmoTimeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE.
Returns:
The number of bytes received, -1 in case of an error or timeout.

If this function returns without error, the bus is blocked. The caller must immediately process the request and return a response by calling TwSlaveRespond().

Note:
Slave mode is not implemented in the bit banging version. Thus the function always returns -1.
Parameters:
slaPoints to a byte variable, which receives the slave address sent by the master. This can be used by the caller to determine whether the the interface has been addressed by a general call or its individual address.
rxdataPoints to a data buffer where the received data bytes are stored.
rxsizSpecifies the maximum number of data bytes to receive.
tmoTimeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE.
Returns:
The number of bytes received, -1 in case of an error or timeout.

Definition at line 653 of file twif.c.

References _BV, inb, NutEnterCritical, NutEventWait(), NutExitCritical, outb, SIGNALED, tw_sr_que, and TWERR_TIMEOUT.

Here is the call graph for this function:

int TwSlaveRespond ( void *  txdata,
uint16_t  txlen,
uint32_t  tmo 
)

Send response to a master.

This function must be called as soon as possible after TwSlaveListen() returned successfully, even if no data needs to be returned. Not doing so will completely block the bus.

Note:
This function is only available on ATmega128 systems.
Parameters:
txdataPoints to the data to transmit. Ignored, if the number of bytes to transmit is zero.
txlenNumber of data bytes to transmit.
tmoTimeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE.
Returns:
The number of bytes transmitted, -1 in case of an error or timeout.

This function must be called as soon as possible after TwSlaveListen() returned successfully, even if no data needs to be returned. Not doing so will completely block the bus.

Note:
Slave mode is not implemented in the bit banging version. Thus the function always returns -1.
Parameters:
txdataPoints to the data to transmit. Ignored, if the number of bytes to transmit is zero.
txlenNumber of data bytes to transmit.
tmoTimeout in milliseconds. To disable timeout, set this parameter to NUT_WAIT_INFINITE.
Returns:
The number of bytes transmitted, -1 in case of an error or timeout.

Definition at line 727 of file twif.c.

References _BV, inb, NutEnterCritical, NutEventWait(), NutExitCritical, outb, SIGNALED, tw_st_que, TWERR_TIMEOUT, and TWGO.

Here is the call graph for this function:

int TwSlaveError ( void  )

Get last slave mode error.

You may call this function to determine the specific cause of an error after TwSlaveListen() or TwSlaveRespond() failed.

Note:
This function is only available on ATmega128 systems.

You may call this function to determine the specific cause of an error after TwSlaveListen() or TwSlaveRespond() failed.

Returns:
Error code or 0 if no error occurred.
Note:
Slave mode is not implemented in the bit banging version. Thus the function always returns TWERR_BUS.

Definition at line 802 of file twif.c.

References TWERR_BUS.