i2c.h
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 102 行
H
102 行
// -----------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// Copyright (c) 1997-1998 Microsoft Corporation
//
// Module Name:
//
// I2C.h
//
// -----------------------------------------------------------------------------
// I2C Defines and routines
// robertgi 1998-11-09
#ifndef __I2C_H__
#define __I2C_H__
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
typedef BYTE I2CAddress;
typedef struct _I2CProperties
{
I2CAddress i2cAddress;
I2CAddress i2cSubaddress;
BOOL bUseSubaddress;
} I2CProperties;
#define I2C_DEVICE_TYPE ((ULONG)0x8000)
#define I2C_MAKE_IOCTL(c)\
CTL_CODE(I2C_DEVICE_TYPE, (c), METHOD_BUFFERED, FILE_ANY_ACCESS)
// this ioctl does not clear the changed bits
#define IOCTL_I2C_TEST_DEVADDRESS\
I2C_MAKE_IOCTL(0x00)
#define IOCTL_I2C_GET_ADDRESS\
I2C_MAKE_IOCTL(0x01)
#define IOCTL_I2C_SET_ADDRESS\
I2C_MAKE_IOCTL(0x02)
#define IOCTL_I2C_GET_PROPERTIES\
I2C_MAKE_IOCTL(0x03)
#define IOCTL_I2C_SET_PROPERTIES\
I2C_MAKE_IOCTL(0x04)
#define IOCTL_I2C_WRITE\
I2C_MAKE_IOCTL(0x10)
/*
DWORD dwIoControlCode // IOCTL_I2C_WRITE parameters
LPVOID lpInBuffer // pointer to byte string, nInBufferSize large
DWORD nInBufferSize // chipAddr, subAddr, byte[0], byte[1], ..., byte[nInBufferSize-3]
LPVOID lpOutBuffer, // NULL
DWORD nOutBufferSize // 0
LPDWORD lpBytesReturned // NULL - not used
LPOVERLAPPED lpOverlapped // NULL - must be for WinCE
*/
#define IOCTL_I2C_READ\
I2C_MAKE_IOCTL(0x11)
/*
DWORD dwIoControlCode // IOCTL_I2C_READ parameters
LPVOID lpInBuffer // pointer to byte string, nInBufferSize must equal 2
DWORD nInBufferSize // chipAddr, subAddr
LPVOID lpOutBuffer, // byte[0], byte[1], ..., byte[nOutBufferSize-1]
DWORD nOutBufferSize // number of bytes to read from I2C device
LPDWORD lpBytesReturned // returns the actual number of bytes returned by the read operation
LPOVERLAPPED lpOverlapped // NULL - must be for WinCE
*/
/*
Notes:
1. Some devices (examples SGS-Thomson M24256 and M24C16) do not permit a sub-address to be sent
when performing a read operation. In the case of the M24256 part, a random access read is performed
by sending a write with the following bytes:
CHIP_ADDR, SUB_ADDR, MEM_ADDR_HI, MEM_ADDR_LO
and then a read of N bytes can be performed:
CHIP_ADDR, BYTE[0], BYTE[1], ..., BYTE[N-1]
The device specification states that a SUB_ADDR can not be sent as part of the read.
*/
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__I2C_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?