📄 i2c_app.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 + -