⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.h

📁 windows mobile 6.13 dnldr下载源码
💻 H
字号:
/*******************************************************************************
 * Copyright:   Copyright (c) 2007. Hisilicon Technologies, CO., LTD. 
 * Version:     V300R001B03
 * Filename:    spi.h
 * Description: spi总线驱动头文件
 * History:
                1.Created by wubin on 2007/12/21
*******************************************************************************/

#ifndef __SPI_H__
#define __SPI_H__

#include "syslib.h"

#ifdef __cplusplus
extern "C" {
#endif

#define IOCMG_BASE_ADDR		0x20041000


// Bitfield macros that use rely on bitfield width/shift information
// defined in CSP header files
#define CSP_BITFMASK(bit) (((1U << (bit ## _WID)) - 1) << (bit ## _LSH))
#define CSP_BITFVAL(bit, val) ((val) << (bit ## _LSH))

//------------------------------------------------------------------------------
// REGISTER LAYOUT
//------------------------------------------------------------------------------
typedef struct
{
    UINT32 SSPCR0;
    UINT32 SSPCR1;
    UINT32 SSPDR;
    UINT32 SSPSR;
    UINT32 SSPCPSR;
    UINT32 SSPIMSC;
    UINT32 SSPRIS;
    UINT32 SSPMIS;
    UINT32 SSPICR;
    UINT32 SSPDMACR;
} SPI_REG, *PSPI_REG;

//SSPCR0
#define SCR     0x0900      //scr=9,cpsdvr=2,division_rate=2*(1+9)=20
#define SPH     0x0080      //SPH=1
#define SPO     0x0040      //SPO=1
#define FRF     0x0000      //FRF=0,SPI mode
#define DSS     0x0007      //DSS=7,8 bit

//SSPCR1
#define SOD     0x0008      //SOD=1
#define MS      0x0000      //MS=0,master
#define SSE_DIS 0x0000      //SSE=0,disable spi
#define SSE_BIT 0x0002      //SSE=0,disable spi,SSE=1,enable spi
#define LBM     0x0000      //LBM=0,Loop back mode disabled

#ifdef HISI3610_CHIP
//SSPCPSR
#define CPSDVSR 0x0004
#else
//SSPCPSR
#define CPSDVSR 0x0002
#endif

#define SYSCON_11BIT        0x00000800
#define SYSCON_10BIT        0x00000400


//------------------------------------------------------------------------------
// REGISTER BIT FIELD POSITIONS (LEFT SHIFT)
//------------------------------------------------------------------------------
#define CSPI_SSPCR0_DSS_LSH         0
#define CSPI_SSPCR0_FRF_LSH         4
#define CSPI_SSPCR0_SPO_LSH         6
#define CSPI_SSPCR0_SPH_LSH         7
#define CSPI_SSPCR0_SCR_LSH         8

#define CSPI_SSPCR1_LBM_LSH         0
#define CSPI_SSPCR1_SSE_LSH         1
#define CSPI_SSPCR1_MS_LSH          2
#define CSPI_SSPCR1_SOD_LSH         3

#define CSPI_SSPDR_DATA_LSH         0

#define CSPI_SSPSR_TFE_LSH          0
#define CSPI_SSPSR_TNF_LSH          1
#define CSPI_SSPSR_RNE_LSH          2
#define CSPI_SSPSR_RFF_LSH          3
#define CSPI_SSPSR_BSY_LSH          4

#define CSPI_SSPCPSR_CPSDVSR_LSH    0

#define CSPI_SSPIMSC_RORIM_LSH      0
#define CSPI_SSPIMSC_RTIM_LSH       1    
#define CSPI_SSPIMSC_RXIM_LSH       2
#define CSPI_SSPIMSC_TXIM_LSH       3

#define CSPI_SSPRIS_RORRIS_LSH      0
#define CSPI_SSPRIS_RTRIS_LSH       1    
#define CSPI_SSPRIS_RXRIS_LSH       2
#define CSPI_SSPRIS_TXRIS_LSH       3

#define CSPI_SSPMIS_RORMIS_LSH      0
#define CSPI_SSPMIS_RTMIS_LSH       1
#define CSPI_SSPMIS_RXMIS_LSH       2
#define CSPI_SSPMIS_TXMIS_LSH       3

#define CSPI_SSPICR_RORIC_LSH       0
#define CSPI_SSPICR_RTIC_LSH        1

#define CSPI_SSPDMACR_RXDMAE_LSH    0
#define CSPI_SSPDMACR_TXDMAE_LSH    1

//------------------------------------------------------------------------------
// REGISTER BIT FIELD WIDTHS
//------------------------------------------------------------------------------
#define CSPI_SSPCR0_DSS_WID         4
#define CSPI_SSPCR0_FRF_WID         2
#define CSPI_SSPCR0_SPO_WID         1
#define CSPI_SSPCR0_SPH_WID         1
#define CSPI_SSPCR0_SCR_WID         8

#define CSPI_SSPCR1_LBM_WID         1
#define CSPI_SSPCR1_SSE_WID         1
#define CSPI_SSPCR1_MS_WID          1
#define CSPI_SSPCR1_SOD_WID         1

#define CSPI_SSPDR_DATA_WID         16

#define CSPI_SSPSR_TFE_WID          1
#define CSPI_SSPSR_TNF_WID          1
#define CSPI_SSPSR_RNE_WID          1
#define CSPI_SSPSR_RFF_WID          1
#define CSPI_SSPSR_BSY_WID          1

#define CSPI_SSPCPSR_CPSDVSR_WID    8

#define CSPI_SSPIMSC_RORIM_WID      1
#define CSPI_SSPIMSC_RTIM_WID       1    
#define CSPI_SSPIMSC_RXIM_WID       1
#define CSPI_SSPIMSC_TXIM_WID       1

#define CSPI_SSPRIS_RORRIS_WID      1
#define CSPI_SSPRIS_RTRIS_WID       1    
#define CSPI_SSPRIS_RXRIS_WID       1
#define CSPI_SSPRIS_TXRIS_WID       1

#define CSPI_SSPMIS_RORMIS_WID      1
#define CSPI_SSPMIS_RTMIS_WID       1
#define CSPI_SSPMIS_RXMIS_WID       1
#define CSPI_SSPMIS_TXMIS_WID       1

#define CSPI_SSPICR_RORIC_WID       1
#define CSPI_SSPICR_RTIC_WID        1

#define CSPI_SSPDMACR_RXDMAE_WID    1
#define CSPI_SSPDMACR_TXDMAE_WID    1




//------------------------------------------------------------------------------
// REGISTER BIT WRITE VALUES
//------------------------------------------------------------------------------
//SSPCR0
#define CSPI_SSPCR0_DSS_4BIT            0x03    // 4-bit transfer
#define CSPI_SSPCR0_DSS_5BIT            0x04    // 5-bit transfer
#define CSPI_SSPCR0_DSS_6BIT            0x05    // 6-bit transfer
#define CSPI_SSPCR0_DSS_7BIT            0x06    // 7-bit transfer
#define CSPI_SSPCR0_DSS_8BIT            0x07    // 8-bit transfer
#define CSPI_SSPCR0_DSS_9BIT            0x08    // 9-bit transfer
#define CSPI_SSPCR0_DSS_10BIT           0x09    // 10-bit transfer
#define CSPI_SSPCR0_DSS_11BIT           0x0A    // 11-bit transfer
#define CSPI_SSPCR0_DSS_12BIT           0x0B    // 12-bit transfer
#define CSPI_SSPCR0_DSS_13BIT           0x0C    // 13-bit transfer
#define CSPI_SSPCR0_DSS_14BIT           0x0D    // 14-bit transfer
#define CSPI_SSPCR0_DSS_15BIT           0x0E    // 15-bit transfer
#define CSPI_SSPCR0_DSS_16BIT           0x0F    // 16-bit transfer

#define CSPI_SSPCR0_FRF_SPI             0x00    // Motorola SPI frame format
#define CSPI_SSPCR0_FRF_TI              0x01    // TI synchronous serial frame format
#define CSPI_SSPCR0_FRF_NM              0x02    // National Microwire frame format
#define CSPI_SSPCR0_FRF_RESERVED        0x03    // Reserved

#define CSPI_SSPCR0_SPO_ACTIVE_LOW      0x0     // Active low polarity
#define CSPI_SSPCR0_SPO_ACTIVE_HIGH     0x1     // Active high polarity

#define CSPI_SSPCR0_SPH_TRAILING        0x0     // Phase 0 operation
#define CSPI_SSPCR0_SPH_LEADING         0x1     // Phase 1 operation

//SSPCR1
#define CSPI_SSPCR1_LBM_DISABLE         0x0     // Loop back mode disabled
#define CSPI_SSPCR1_LBM_ENABLE          0x1     // Loop back mode enabled

#define CSPI_SSPCR1_SSE_DISABLE         0x0     // SSP disabled
#define CSPI_SSPCR1_SSE_ENABLE          0x1     // SSP enabled

#define CSPI_SSPCR1_MS_MASTER           0x0     // Master mode
#define CSPI_SSPCR1_MS_SLAVE            0x1     // Slave mode

#define CSPI_SSPCR1_SOD_ENABLE          0x0     // Enable drive out in slave mode
#define CSPI_SSPCR1_SOD_DISABLE         0x1     // Disable drive out in slave mode

//SSPIMSC
#define CSPI_SSPIMSC_RORIM_DISABLE      0x0     // Disable Receive FIFO overrun interrupt
#define CSPI_SSPIMSC_RORIM_ENABLE       0x1     // Enable Receive FIFO overrun interrupt

#define CSPI_SSPIMSC_RTIM_DISABLE       0x0     // Disable receive overtime interrupt
#define CSPI_SSPIMSC_RTIM_ENABLE        0x1     // Enable receive overtime interrupt
                                        
#define CSPI_SSPIMSC_RXIM_DISABLE       0x0     // Disable RxFIFO half interrupt
#define CSPI_SSPIMSC_RXIM_ENABLE        0x1     // Enable RxFIFO half interrupt
                                        
#define CSPI_SSPIMSC_TXIM_DISABLE       0x0     // Disable TxFIFO half interrupt
#define CSPI_SSPIMSC_TXIM_ENABLE        0x1     // Enable TxFIFO half interrupt



#define SPI3CR0         0x04c7  //scr取4,
                                //SPH、SPO根据Hi6421V100电源管理芯片用户指南2.2.9节都取1,
                                //字长度为8bit
#define SPI3CR1         0x0008  //0x0009:Loopback模式;0x0008:禁止spi3,设为master

#ifdef HISI3610_CHIP
//在ASIC版本中,SPI的参考时钟是60MHz
#define SPI3CPSR        0x4     //cpsdvsr必须为偶数,取4,则分频比为4*(1+4)=20
#else
//在FPGA版本中,SPI的参考时钟是34MHz
#define SPI3CPSR        0x2     //cpsdvsr必须为偶数,取2,则分频比为2*(1+4)=10
#endif


#define READBIT         1
#define WRITEBIT        0
#define DUMMYDATA       0x00

#define MMU5_NUM    0x03


BOOL InitLcdSPI(void);
BOOL bShowInfoNoErr(const UINT8 *pData, UINT8 length);

BOOL InitHi6421SPI(void);
BOOL ReadHi6421Register(UINT8 ucRegAddr, UINT8 *pData);
BOOL WriteHi6421Register(UINT8 ucRegAddr, UINT8 ucData, UINT8 ucMask);


#ifdef __cplusplus
}
#endif


#endif // __SPI_H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -