📄 sysi2cdrv.h
字号:
/* sysI2cDrv.h - I2C Driver Header Module *//* Copyright 1984-2001 Wind River Systems, Inc. *//* Copyright 1996,1997-2001 Motorola, Inc. All Rights Reserved *//*modification history--------------------01c,12jan01,djs changes and cleanup related to SPD01b,13dec00,djs removed refecences to mv210001a,02nov00,djs created based on 01b,28may99,dmw mv2100*//*DESCRIPTIONI2C Driver Header Module*/#ifndef INCsysI2cDrvh#define INCsysI2cDrvh/* device types */#define I2C_DEVICE_TYPE_EEPROM 0/* driver device data template (os + driver-specifics) */typedef struct i2cDev { unsigned int deviceAddress; /* address of the I2C device */ int deviceType; /* device type: 0 = EEPROM, 1 = other */ unsigned int blockSize; /* logical block size in bytes */ unsigned int blockOffset; /* logical block offset from zero of start */ unsigned int blockTotal; /* number of logical blocks from offset */ unsigned int controlAddress; /* controller address */ unsigned int pageSize; /* page size in number of blocks */ unsigned int controlWord; /* control word */ unsigned int sysClkRate; /* system clock rate */ } i2cDev_t;/* driver command packet */typedef struct i2cCmdPckt { int command; /* command identifier */ int status; /* status (error code) */ unsigned int memoryAddress; /* memory address */ unsigned int blockNumber; /* block number */ unsigned int nBlocks; /* number of blocks (bytes) to transfer */ unsigned int eCount; /* expected data count */ unsigned int aCount; /* actual data count */ } i2cCmdPckt_t;/* command identifiers */#define I2C_READOP 0 /* read operation */#define I2C_WRITOP 1 /* write operation */#define I2C_FRMTOP 2 /* format operation */#define I2C_CHCKOP 3 /* check operation */#define I2C_BYTE_NUM_MASK 0x700#define I2C_BYTE_NUM_SHIFT 7/* routine call macros *//* * Note: this driver could dynamically assign function pointers * but ROM based switch statements are not permitted so the * function pointers are set here for the specific board BSP. */#define I2C_CYCLE_START(rpt) i2cCycleMpc107Start(rpt)#define I2C_CYCLE_STOP(rpt) i2cCycleMpc107Stop(rpt)#define I2C_CYCLE_READ(ad) i2cCycleMpc107Read(ad)#define I2C_CYCLE_WRITE(wd) i2cCycleMpc107Write(wd)#define I2C_CYCLE_ACKIN i2cCycleMpc107AckIn()#define I2C_CYCLE_ACKOUT i2cCycleMpc107AckOut()#define I2C_KNOWN_STATE i2cCycleMpc107KnownState()#define I2C_DELAY(d) i2cCycleMpc107Delay(d)/* error codes */#define I2C_ERROR_CYCLE_START 1 /* start cycle */#define I2C_ERROR_CYCLE_STOP 2 /* stop cycle */#define I2C_ERROR_CYCLE_READ 3 /* read cycle */#define I2C_ERROR_CYCLE_WRITE 4 /* write cycle */#define I2C_ERROR_CYCLE_ACKIN 5 /* acknowledge in cycle */#define I2C_ERROR_CYCLE_ACKOUT 6 /* acknowledge out cycle */#define I2C_ERROR_KNOWN_STATE 7 /* known state */#define I2C_ERROR_CYCLE_TIMEOUT (1<<16) /* cycle timed out */#endif /* INCsysI2cDrvh */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -