⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c8260.h

📁 Embedded Planet公司的ep8260单板计算机的BSP包(VxWorks)
💻 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 + -