📄 i2c8260.h
字号:
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _I2C8260_H_
#define _I2C8260_H_
#define EEPROM_ID 0xA8
#define EEPROM_DEV_SIZE 0x200
#define STTM_ID 0x90
#define STTM_DEV_SIZE 0x08
#define I2C_DEV_ADD_0 0x00
#define I2C_DEV_ADD_1 0x02
#define I2C_DEV_ADD_2 0x04
#define I2C_DEV_ADD_3 0x06
#define I2C_DEV_ADD_4 0x08
#define I2C_DEV_ADD_5 0x0A
#define I2C_DEV_ADD_6 0x0C
#define I2C_DEV_ADD_7 0x0E
#define MAX_I2C_SLAVES 2
/* Length of Receive and Single Transmit Data Buffers */
#define I2C_BUFF_MAX_LEN (32)
#define I2C_NONE_INT 0
#define I2C_AVAILABLE 1
#define I2C_OPEN 2
#define I2C_CLOSE 3
#define I2C_OK 0
#define I2C_ERR_TX -1
#define I2C_ERR_BSY -2
#define I2C_ERR_TXB -3
#define I2C_ERR_RXB -4
#define I2C_TXB_RXB -5
#define R_BIT 0x1
#define W_BIT 0x0
#define READY_BIT 0x8000
#define LAST_BIT 0x0800
#define WRAP_BIT 0x2000
#define INT_BIT 0x1000
#define TRANSMIT_START_BIT 0x0400
#define START_BIT 0x01
#define MASTER_MODE 0x80
#define I2CSDA_BIT 0x0010
#define I2CSCL_BIT 0x0020
#define DISABLE_I2C 0x00
#define ENABLE_I2C 0x01
#define ENABLE_INTERRUPT_I2C 0x17
#define DISABLE_INTERRUPT_I2C 0x00
#define CLEAR_I2C_EVENTS 0x17
#define BRGCLK 0x20
#define ERROR_TX_RX 0x17
#define I2C_EV_TXE 0x10
#define I2C_EV_BUSY 0x04
#define I2C_EV_TXB 0x02
#define I2C_EV_RXB 0x01
#define I2C_EVENT_MASK (I2C_TX_ERROR_EV | I2C_EV_BUSY \
| I2C_EV_TXBUFFER | I2C_EV_RXBUFFER)
/* I2C Buffer Descriptor */
typedef struct{
UINT16 status; /* status and control */
UINT16 length; /* length of data buffer in bytes */
char *data; /* points to data buffer */
} I2C_DESC;
/* I2C_PARAM */
typedef struct { /* offset description */
VINT16 rbase; /* 00 Rx buffer descriptors base address */
VINT16 tbase; /* 02 Tx buffer descriptors base address */
VINT8 rfcr; /* 04 Rx function code */
VINT8 tfcr; /* 05 Tx function code */
VINT16 mrblr; /* 06 maximum receive buffer length */
VINT32 ris; /* 08 Rx internal state */
VINT32 ridp; /* 0c Rx internal data pointer */
VINT16 rbptr; /* 10 Rx buffer descriptor pointer */
VINT16 ribc; /* 12 Rx internal byte count */
VINT32 rt; /* 14 Rx temp */
VINT32 tis; /* 18 Tx internal state */
VINT32 tidp; /* 1c Tx internal data pointer */
VINT16 tbptr; /* 20 Tx buffer descriptor pointer */
VINT16 tibc; /* 22 Tx internal byte count */
VINT32 tt; /* 24 Tx temp */
VINT32 notused; /* 28 not used */
VINT16 rpbase; /* 2c relocatable parameter RAM base */
VINT16 reserved; /* 2e reserved */
} I2C_PARAM;
#define I2MOD(base) (CAST(VUINT8 *)(base + 0x11860)) /* I2C Mode Reg */
#define I2ADD(base) (CAST(VUINT8 *)(base + 0x11864)) /* I2C Address Reg */
#define I2BRG(base) (CAST(VUINT8 *)(base + 0x11868)) /* I2C BRG Reg */
#define I2COM(base) (CAST(VUINT8 *)(base + 0x1186C)) /* I2C Command Reg */
#define I2CER(base) (CAST(VUINT8 *)(base + 0x11870)) /* I2C Event Reg */
#define I2CMR(base) (CAST(VUINT8 *)(base + 0x11874)) /* I2C Mask Reg */
#if 0
/* FUNCTION PROTOTYPES */
ULONG i2cOpen(void);
ULONG i2cClose(ULONG devId);
ULONG i2cByteWrite(ULONG devId, ULONG wordAddress, UCHAR data);
ULONG i2cByteRead(ULONG devId, ULONG wordAddress, UCHAR *data);
int i2cSequentialRead(int devId, UCHAR wordAddress, int len, char *data);
ULONG i2cSequentialWrite(ULONG devId, ULONG wordAddress, ULONG blockSize, UCHAR *data);
#endif
#endif /* _I2C_ */
#if __cplusplus
} /* extern "C" */
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -