00001 #ifndef SSP_H_
00002 #define SSP_H_
00003
00004
00005
00029 #include "LPC11xx.h"
00030 #include "gpio.h"
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00040 typedef enum {
00041 marySSP1,
00042 mbedSSP1,
00043 mbedSSP2
00044 } SSP_PORT;
00045
00050 typedef enum {
00051 LSBFIRST,
00052 MSBFIRST
00053 } SSP_BIT_ORDER;
00054
00058 typedef enum {
00059 SPI_CLOCK_DIV1,
00060 SPI_CLOCK_DIV2,
00061 SPI_CLOCK_DIV4,
00062 SPI_CLOCK_DIV8,
00063 SPI_CLOCK_DIV16,
00064 SPI_CLOCK_DIV32,
00065 SPI_CLOCK_DIV64,
00066 SPI_CLOCK_DIV128
00067 } SSP_CLK_DIVIDER;
00068
00072 typedef enum {
00073 SPI_MODE0 ,
00074 SPI_MODE1 ,
00075 SPI_MODE2 ,
00076 SPI_MODE3 ,
00077 TI_SERIAL_MODE ,
00078 NXP_I2S
00079 } SSP_DATA_MODE;
00080
00084 class SSP {
00085 private:
00086 SSP_PORT port;
00087 SSP_BIT_ORDER bitOrder;
00088 SSP_CLK_DIVIDER divider;
00089 SSP_DATA_MODE dataMode;
00090 int bitlength;
00091
00092 public:
00093 SSP();
00094 ~SSP();
00095 void begin();
00096 void end() ;
00097 void setBitLength(int bitLength);
00098 void setBitOrder(SSP_BIT_ORDER bitOrder) ;
00099 void setClockDivider(SSP_CLK_DIVIDER divider);
00100 void setDataMode(SSP_DATA_MODE mode);
00101 unsigned long transfer(unsigned long txdata) ;
00102 };
00103
00104
00105
00106 void ssp_begin(SSP_CLK_DIVIDER divider,SSP_DATA_MODE dataMode,int bitLength);
00107 unsigned long ssp_transfer(unsigned long txdata);
00108
00109
00110
00111 extern SSP SPI;
00112
00113
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117
00118
00119 #endif