SPI驱动函数
函数名称:BOOL SPI_Close(DWORD Handle)
功能描述:驱动程序关闭函数
函数参数:DWORD Handle:驱动程序句柄
函数返回值:FALSE: 失败 TRUE: 成功
调用程序:CloseHandle(hFile);
函数名称:DWORD SPI_Open (
DWORD dwData,
DWORD dwAccess,
DWORD dwShareMode
)
功能描述:打开驱动程序
函数参数:DWORD dwData : 设备驱动程序句柄
DWORD dwAccess : 访问请求代码,是读和写的组合
DWORD dwShareMode: 共享模式
函数返回值:驱动程序引用事例句柄
调用程序:
CreateFile(TEXT("SPI1:"), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
函数名称:BOOL SPI_IOControl(
DWORD Handle,
DWORD dwIoControlCode,
PBYTE pInBuf,
DWORD nInBufSize,
PBYTE pOutBuf,
DWORD nOutBufSize,
PDWORD pBytesReturned
)
功能描述:驱动程序 I/O 请求
函数参数:Handle:设备驱动的句柄
dwIoControlCode:操作码 设备指定的WORD型标识,用于描述这个IOControl操作的定义,该值定义:
#define IOCTL_SET_SPI_MO 0x01 //主发送
#define IOCTL_SET_SPI_SI 0x02/ /从接收
#define IOCTL_SET_SPI_0 0x03 //选择通道0
#define IOCTL_SET_SPI_1 0x04 //选择通道1
#define IOCTL_SET_SPI_MI 0x05/ /主接收
#define IOCTL_SET_SPI_SO 0x06 //从发送
pInBuf:输入Buffer 缓冲区指针,指向需要传给驱动程序使用的数据
nInBufSize:输入Buffer的size 要传给驱动程序使用的数据长度
nInBufSize >0
pOutBuf:输出Buffer 缓冲区指针 指向驱动程序传给应用程序使用的数据
nOutBufSize:输出Buffer的size 要传送给应用程序使用的数据长度
pBytesReturned:实际处理数据长度
函数返回值:TRUE: 成功 FALSE: 失败
调用程序:
// 设置 SPI 通道0
::DeviceIoControl(hFile, IOCTL_SET_SPI_0, 0, 1, NULL, 0, NULL, NULL);
// 设置 SPI 通道1
::DeviceIoControl(hFile, IOCTL_SET_SPI_1, 0, 1, NULL, 0, NULL, NULL);
// 设置 SPI 为主发送
::DeviceIoControl(hFile, IOCTL_SET_SPI_MO, 0, 1, NULL, 0, NULL, NULL);
// 设置 SPI 为主接收
::DeviceIoControl(hFile, IOCTL_SET_SPI_MI, 0, 1, NULL, 0, NULL, NULL);
// 设置 SPI 为从发送
::DeviceIoControl(hFile, IOCTL_SET_SPI_SO, 0, 1, NULL, 0, NULL, NULL);
// 设置 SPI 为从 接收
::DeviceIoControl(hFile, IOCTL_SET_SPI_SI, 0, 1, NULL, 0, NULL, NULL);
函数名称:DWORD SPI_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes)
功能描述:从 SPI 从机读取数据
函数参数:DWORD Handle : 驱动程序引用事例句柄
LPVOID pBuffer : 接收缓冲区
DWORD dwNumBytes: 要读的字节数
函数返回值:实际读到字节数
调用程序:
::ReadFile(hFile, dat, 1, &actlen, NULL);
函数名称:DWORD SPI_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwNumBytes)
功能描述:发送一个字节的数据
函数参数:DWORD Handle : 驱动程序引用事例句柄
LPVOID pBuffer : 发送缓冲区
DWORD dwNumBytes: 要发送的字节数
函数返回值:实际读到字节数
调用程序:
::WriteFile(hFile, dat, 1, &actlen, NULL);
/---------------------------------------------
作者:宇帆 cfanlwn
时间:2009-12-06 21:09:15