主题 : 6410 HS-SPI问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 52
精华: 0
发帖: 51
金钱: 255 两
威望: 51 点
贡献值: 0 点
综合积分: 102 分
注册时间: 2008-01-30
最后登录: 2014-11-14
楼主  发表于: 2010-11-04 14:46

 6410 HS-SPI问题

买了MINI6410,却没多少相关应用程序例子。现正在调HS-SPI,网上找不到应用层调HS-SPI底层驱动。自己的却不能读写,大家帮忙看看

BOOL CHSPIDLLApp::HspiOpen()
{
    m_SPIDevice = CreateFile(_T("HSP1:"),GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING,0, NULL);
    if(m_SPIDevice==INVALID_HANDLE_VALUE){return FALSE;}
    
    // Set SPI Mode
    m_SpiConfig.dwMode = SPI_MASTER_MODE;

    // Set SPI Clock Prescale if it is master mode
    m_SpiConfig.dwPrescaler = 2;

    // Use FULL-DUFLEX Mode
    m_SpiConfig.bUseFullDuflex = true;

    // Set Timeout Value of SPI Transfer.
    m_SpiConfig.dwTimeOutVal = 5000;

    // Set Rx Mode
    m_SpiConfig.bUseRxDMA = false;
    m_SpiConfig.bUseRxIntr = false;

    // Set RxDMA Burst Data Length
    m_SpiConfig.dwRxBurstDataLen = 1;

    // Set Tx Mode
    m_SpiConfig.bUseTxDMA = false;
    m_SpiConfig.bUseTxIntr = false;

    // Set TxDMA Burst Data Length
    m_SpiConfig.dwTxBurstDataLen = 1;


    if(!DeviceIoControl(m_SPIDevice,SPI_IOCTL_SET_CONFIG,&m_SpiConfig,sizeof(m_SpiConfig),NULL,0,NULL,NULL))
    {
        return FALSE;
    }
        
    if(!DeviceIoControl(m_SPIDevice,SPI_IOCTL_START,NULL,0,NULL,0,NULL,NULL))
    {
        return FALSE;
    }    
  return TRUE;
}


BOOL CHSPIDLLApp::HspiClose()
{
  return CloseHandle(m_SPIDevice);
}

BOOL CHSPIDLLApp::HspiRead(unsigned char outbuf[],unsigned char len)
{
  DWORD cBytes=0;
  return ReadFile(m_SPIDevice,outbuf,len,&cBytes,NULL);
}

BOOL CHSPIDLLApp::HspiWrite(unsigned char inbuf[],unsigned char len)
{
  DWORD cBytes=0;
  return WriteFile(m_SPIDevice,inbuf,len,&cBytes,NULL);
}
级别: 新手上路
UID: 53159
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
贡献值: 0 点
综合积分: 50 分
注册时间: 2011-08-02
最后登录: 2013-01-08
1楼  发表于: 2011-12-28 11:07
同样在看这个SPI,提供的驱动用不起