csl_spi.h
Go to the documentation of this file.
00001 /*  ============================================================================
00002  *   Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005, 2008
00003  *
00004  *   Use of this software is controlled by the terms and conditions found in the
00005  *   license agreement under which this software has been supplied.
00006  *  ============================================================================
00007  */
00008 
00016 /* ============================================================================
00017  * Revision History
00018  * ================
00019  * 22-Aug-2008 Created
00020  * ============================================================================
00021  */
00022 
00032 #ifndef _CSL_SPI_H_
00033 #define _CSL_SPI_H_
00034 
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 #include "soc.h"
00041 #include "csl_error.h"
00042 #include "csl_types.h"
00043 #include "csl_general.h"
00044 
00070 /*****************************************************************************\
00071 *         I2S global macro declarations
00072 \*****************************************************************************/
00078 #define CSL_SPI_SPICR1_FIRQ_DISABLE         (Uint16)0
00079 
00080 #define CSL_SPI_SPICR1_FIRQ_ENABLE          (Uint16)1
00081 
00082 #define SPI_READ_CMD                        (Uint16)1
00083 
00084 #define SPI_WRITE_CMD                       (Uint16)2
00085 
00086 #define SPI_DISABLE                         (0)
00087 
00088 #define SPI_ENABLE                          (1)
00089 
00090 #define SPI_ACTIVE                          (0)
00091 
00094 /**************************************************************************\
00095 * I2S global enum declaration                                             *
00096 \**************************************************************************/
00107 typedef enum
00108 {
00109     SPI_CS_NUM_0,           
00110     SPI_CS_NUM_1,           
00111     SPI_CS_NUM_2,           
00112     SPI_CS_NUM_3,           
00113     SPI_CS_NUM_INVALID      
00114 }SPI_HwMode;
00115 
00122 typedef enum
00123 {
00124     SPI_WORD_LENGTH_1 = 0,      
00125     SPI_WORD_LENGTH_2,          
00126     SPI_WORD_LENGTH_3,          
00127     SPI_WORD_LENGTH_4,          
00128     SPI_WORD_LENGTH_5,          
00129     SPI_WORD_LENGTH_6,          
00130     SPI_WORD_LENGTH_7,          
00131     SPI_WORD_LENGTH_8,          
00132     SPI_WORD_LENGTH_9,          
00133     SPI_WORD_LENGTH_10,         
00134     SPI_WORD_LENGTH_11,         
00135     SPI_WORD_LENGTH_12,         
00136     SPI_WORD_LENGTH_13,         
00137     SPI_WORD_LENGTH_14,         
00138     SPI_WORD_LENGTH_15,         
00139     SPI_WORD_LENGTH_16,         
00140     SPI_WORD_LENGTH_17,         
00141     SPI_WORD_LENGTH_18,         
00142     SPI_WORD_LENGTH_19,         
00143     SPI_WORD_LENGTH_20,         
00144     SPI_WORD_LENGTH_21,         
00145     SPI_WORD_LENGTH_22,         
00146     SPI_WORD_LENGTH_23,         
00147     SPI_WORD_LENGTH_24,         
00148     SPI_WORD_LENGTH_25,         
00149     SPI_WORD_LENGTH_26,         
00150     SPI_WORD_LENGTH_27,         
00151     SPI_WORD_LENGTH_28,         
00152     SPI_WORD_LENGTH_29,         
00153     SPI_WORD_LENGTH_30,         
00154     SPI_WORD_LENGTH_31,         
00155     SPI_WORD_LENGTH_32,         
00156     SPI_MAX_WORD_LEN            
00157 }SPI_WordLen;
00158 
00164 typedef enum
00165 {
00166     SPI_WORD_IRQ_DISABLE,       
00167     SPI_WORD_IRQ_ENABLE         
00168 }SPI_WordCntEnb;
00169 
00175 typedef enum
00176 {
00177     SPI_FRAME_IRQ_DISABLE,      
00178     SPI_FRAME_IRQ_ENABLE        
00179 }SPI_FrameCntEnb;
00180 
00186 typedef enum SPI_Command
00187 {
00188     SPI_RSVD_CMD = 0,           
00189     SPI_READ,                   
00190     SPI_WRITE,                  
00191     SPI_RSVD1_CMD               
00192 } SPI_Command;
00193 
00199 typedef enum
00200 {
00201     SPI_DATA_DLY_0 = 0,         
00202     SPI_DATA_DLY_1,             
00203     SPI_DATA_DLY_2,             
00204     SPI_DATA_DLY_3,             
00205     SPI_DATA_DLY_UNKNOWN        
00206 } SPI_DataDly;
00207 
00213 typedef enum
00214 {
00215     SPI_CLKP_LOW_AT_IDLE = 0,   
00216     SPI_CLKP_HIGH_AT_IDLE       
00217 }SPI_ClkPolarity;
00218 
00224 typedef enum
00225 {
00226     SPI_CSP_ACTIVE_LOW = 0,     
00227     SPI_CSP_ACTIVE_HIGH         
00228 } SPI_ChipSelPol;
00229 
00235 typedef enum
00236 {
00237     SPI_CLK_PH_FALL_EDGE = 0,   
00238     SPI_CLK_PH_RISE_EDGE        
00239 } SPI_ClkPh;
00240 
00246 typedef enum
00247 {
00248     SPI_POLLING_MODE,   
00249     SPI_INTERRUPT_MODE      
00250 }SPI_OperMode;
00255 /**************************************************************************\
00256 *               SPI global data structures                                *
00257 \**************************************************************************/
00268 typedef struct
00269 {
00270     Uint16          configured;     
00271     SPI_HwMode      mode;           
00272     SPI_OperMode    opMode;         
00273 }CSL_SpiObj;
00274 
00281 typedef struct
00282 {
00283     Uint16              spiClkDiv;  
00284     SPI_WordLen         wLen;       
00286     Uint16              frLen;      
00287     SPI_WordCntEnb      wcEnable;   
00288     SPI_FrameCntEnb     fcEnable;   
00289     SPI_HwMode          csNum;      
00290     SPI_DataDly         dataDelay;  
00291     SPI_ClkPolarity     clkPol;     
00292     SPI_ChipSelPol      csPol;      
00293     SPI_ClkPh           clkPh;      
00294 }SPI_Config;
00295 
00301 typedef CSL_SpiObj *CSL_SpiHandle;
00308 /*****************************************************************************\
00309  * SPI function declarations                                                  *
00310 \*****************************************************************************/
00311 
00348 CSL_Status SPI_init(void);
00349 
00384 CSL_Status SPI_deInit(void);
00385 
00428 CSL_SpiHandle SPI_open(SPI_HwMode   csNum, SPI_OperMode opMode);
00429 
00463 CSL_Status SPI_close(CSL_SpiHandle hSpi);
00464 
00507 CSL_Status SPI_config   (CSL_SpiHandle hSpi, SPI_Config     *spiHwConfig);
00508 
00546 CSL_Status SPI_read (CSL_SpiHandle hSpi, Uint16 *readBuffer, Uint16 bufLen);
00547 
00585 CSL_Status SPI_write    (CSL_SpiHandle hSpi, Uint16 *writeBuffer, Uint16    bufLen);
00586 
00629 CSL_Status SPI_dataTransaction(CSL_SpiHandle hSpi,
00630                                 Uint16       *rwBuffer,
00631                                 Uint16       rwBufLen,
00632                                 SPI_Command  readOrWrite);
00633 
00637 /*****************************************************************************\
00638  * SPI Global variable                                                   *
00639 \*****************************************************************************/
00642 static CSL_SpiObj   SPI_Instance;
00648 #ifdef __cplusplus
00649 }
00650 #endif
00651 #endif /* _CSL_SPI_H_ */
00652