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

📄 i2c_app.h

📁 大名鼎鼎的mpc8260的bsp源代码
💻 H
字号:


	/* mbxI2c.h - I2C bus interface header for PPC 8xx */

/* Copyright 1998 Wind River Systems, Inc. */
/* Copyright 1997,1998 Motorola, Inc., All Rights Reserved */

/*
modification history
--------------------
01c,25mar98,map  code cleanup
01b,04dec97,rhk  WRS code review cleanup.
01a,17jun97,scb  written by rb, integrated by scb.
*/

/*
This file contains I2C I/O related defines and structure templates.
*/
#include "drv/multi/ppc860Cpm.h"

#ifndef __INCmbxI2ch
#define __INCmbxI2ch

#ifdef __cplusplus
extern "C" {
#endif

/* I2C I/O control/status word definitions */

#define I2C_IO_C_MASK	(0xffff<<0)	/* control portion mask */
#define I2C_IO_S_MASK	(0xffff<<16)	/* status portion mask */

#define I2C_IO_C_RDATA	(1<<0)	/* read data operation */
#define I2C_IO_C_WDATA	(1<<1)	/* write data operation */

#define I2C_IO_S_ERROR	(1<<16)	/* error of some type, see remaining bits */
#define I2C_IO_S_R_OV	(1<<17)	/* receiver overrun */
#define I2C_IO_S_R_BSY	(1<<18)	/* receiver busy */
#define I2C_IO_S_T_NAK	(1<<19)	/* transmitter no acknowledge */
#define I2C_IO_S_T_UN	(1<<20)	/* transmitter underrun */
#define I2C_IO_S_T_CL	(1<<21)	/* transmitter collision */
#define I2C_IO_S_T_TO	(1<<22)	/* transmitter timeout */
#define I2C_IO_S_R_TO	(1<<23)	/* receiver timeout */
#define I2C_IO_S_X_BUF	(1<<28)	/* transfer size exceeds internal buffer size */
#define I2C_IO_S_X_CNT	(1<<29)	/* transfer size does not equal the expected */

/*#define I2C_DRV_NBDS	1 /*yangdy 2004.3.15*/
#define I2C_DRV_NBDS	1


#define I2C_RXBL_MAX	16	/* maximum RX buffer length */
#define I2C_TXBL_MAX	16	/* maximum TX buffer length */

#define I2C_CLK_SPD	10000   /* I2C bus clock speed  - 10khz */

#define I2C_BUFSIZ                                                      \
    ((I2C_DRV_NBDS * I2C_RXBL_MAX) + (I2C_DRV_NBDS * I2C_TXBL_MAX))

#define I2C_INT_CLR	0xff	/* clear interrupt status */
#define I2C_INT_DSBL	0x0	/* disable all interrupts */

#define I2C_IOCTL_W     0       /* write */
#define I2C_IOCTL_R     1       /* read */
#define I2C_IOCTL_O     2       /* read/or/write */
#define I2C_IOCTL_A     3       /* read/and/write */
#define I2C_IOCTL_AO    4       /* read/and/or/write */


/* I2C driver descriptor rings structure template */

typedef struct i2c_drv_bd        /* I2C_DRV_BD */
    {
    SCC_BUF rxbd[I2C_DRV_NBDS];  /* receive */
    SCC_BUF txbd[I2C_DRV_NBDS];  /* transmit */
    } I2C_DRV_BD;



/* i2c i/o command packet */

typedef struct i2c_cmd_pkt
    {
    UINT csword;                /* status/control word */
    UINT devAdrs;             /* device address */
    UINT dataAdrs;             /* data transfer address */
    UINT dataSize;                /* data transfer size */
    UINT dataSizeActual;         /* data transfer size (actual) */
    } I2C_CMD_PKT;



#ifdef __cplusplus
}
#endif

#endif /* __INCmbxI2ch */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -