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