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

📄 devi2c.h

📁 vxworks MPC8541 BSP
💻 H
字号:

#ifndef _M85XXI2C_H_
#define _M85XXI2C_H_

#include <configboard.h>
#include "semLib.h"

#define CFG_HZ               1000    /* decrementer freq: 1 ms ticks */
#define I2C_TIMEOUT          1000

#define I2C_WRITE            0
#define I2C_READ             1

#define WRITE_ONLY			0
#define WRITE_OR		    1
#define WRITE_AND		    2
#define WRITE_AND_OR	    3


/* I2C Registers(0x3000-0x4000) */

#define M85xx_I2CADR         0x03000
#define M85xx_I2CFDR         0x03004
#define M85xx_I2CCR          0x03008
#define M85xx_I2CSR          0x0300C
#define M85xx_I2CDR          0x03010
#define M85xx_I2CDFSRR       0x03014

#define M85xx_I2CADR_MASK    0xFE
#define M85xx_I2CFDR_MASK    0x3F
#define M85xx_I2CCR_MEN      0x80
#define M85xx_I2CCR_MIEN     0x40
#define M85xx_I2CCR_MSTA     0x20
#define M85xx_I2CCR_MTX      0x10
#define M85xx_I2CCR_TXAK     0x08
#define M85xx_I2CCR_RSTA     0x04
#define M85xx_I2CCR_BCST     0x01
#define M85xx_I2CSR_MCF      0x80
#define M85xx_I2CSR_MAAS     0x40
#define M85xx_I2CSR_MBB      0x20
#define M85xx_I2CSR_MAL      0x10
#define M85xx_I2CSR_BCSTM    0x08
#define M85xx_I2CSR_SRW      0x04
#define M85xx_I2CSR_MIF      0x02
#define M85xx_I2CSR_RXAK     0x01
#define M85xx_I2CDR_DATA     0xFF
#define M85xx_I2C_DFSRR       0x3F

/*
 * Configuration items.
 */
#define I2C_RXTX_LEN         128   /* maximum tx/rx buffer length */
#define I2C_MAX_BUF          8
#define I2C_UNIT_NUM         8

typedef struct
{
    SEM_ID      i2cSem;			/* Semaphore for graceful */
    BOOL        intrEnabled;	/* Interrupt has been enabled */
    UINT32      i2cInited;		/* Initialized flag */
    UINT32      i2cRecving;		/* Receiving flag */
    UINT32      i2cSending;		/* Receiving flag */
    UINT8       dataBuf[I2C_MAX_BUF];
    UINT32      dataLen;
    UINT32      curdata;
} I2C_CTRL;

#define I2C_USDELAY(usec)                                           \
{                                                                   \
    volatile int ii;                                                \
    volatile int loop = (int)(CORE_FREQUENCY / 1000000 * usec + 1); \
                                                                    \
    for (ii = 0; ii < loop; ii++);                                  \
}

#endif	/* _M85XXI2C_H_ */


⌨️ 快捷键说明

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