Files
2026-01-03 19:05:48 +01:00

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