SPI

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);

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cfanlwn/archive/2009/12/06/4952954.aspx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值