69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
#ifndef FX2_IIC_H
|
|
#define FX2_IIC_H
|
|
|
|
#include <fx2.h>
|
|
|
|
// I2C error codes
|
|
// -----------------------------------------------------------------------------
|
|
#define I2C_OK 0x00
|
|
#define I2C_ERROR 0x80
|
|
#define I2C_ABORT 0xFF
|
|
#define SMB_ERROR 0xC0
|
|
|
|
|
|
// I2C state machine states
|
|
// -----------------------------------------------------------------------------
|
|
#define I2C_IDLE 0x00
|
|
#define I2C_SENDING 0x01
|
|
#define I2C_RECEIVING 0x02
|
|
#define I2C_PRIME 0x03
|
|
#define I2C_BERROR 0x04
|
|
#define I2C_NACK 0x05
|
|
#define I2C_STOP 0x06
|
|
#define I2C_WAITSTOP 0x07
|
|
|
|
|
|
// I2C state machine states for read operation with repeated start condition
|
|
// -----------------------------------------------------------------------------
|
|
#define I2C_SUBADDR_HI 0x10 // sending HI(subaddr)
|
|
#define I2C_SUBADDR_LO 0x11 // sending LO(subaddr)
|
|
#define I2C_RESTART 0x12 //
|
|
|
|
|
|
// SMBus state machine states
|
|
// -----------------------------------------------------------------------------
|
|
#define SMB_SENDING 0x40
|
|
#define SMB_RECEIVING 0x41
|
|
#define SMB_PRIME 0x43
|
|
#define SMB_BERROR 0x44
|
|
#define SMB_NACK 0x45
|
|
#define SMB_STOP 0x46
|
|
#define SMB_WAITSTOP 0x47
|
|
#define SMB_PEC 0x48
|
|
#define SMB_CMD_READWORD 0x50
|
|
#define SMB_READWORD 0x51
|
|
|
|
|
|
extern void fx2_i2c_init();
|
|
|
|
extern BYTE fx2_i2c_wait( BYTE addr);
|
|
|
|
extern BYTE fx2_i2c_read( BYTE addr,
|
|
BYTE length,
|
|
BYTE xdata *dat);
|
|
|
|
extern BYTE fx2_i2c_write( BYTE addr,
|
|
BYTE length,
|
|
BYTE xdata *dat);
|
|
|
|
extern BYTE fx2_i2c_read_rsw( BYTE addr,
|
|
WORD subaddr,
|
|
BYTE length,
|
|
BYTE xdata *dat);
|
|
|
|
extern BYTE fx2_sm_readword( BYTE addr,
|
|
BYTE command,
|
|
BYTE xdata *dat);
|
|
|
|
#endif
|