/*------------------------------------------------------------------------------ -- This file is a part of the libuc, microcontroler library -- Copyright (C) 2011, Alexis Jeandet -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- -- Author : Alexis Jeandet -- Mail : alexis.jeandet@gmail.com -------------------------------------------------------------------------------*/ #ifndef SSP_H #define SSP_H #include "LPC23xx.h" #include #define l4bits ((1<<1)+(1)) //0011 4 bit transfer #define l5bits ((1<<2)) //0100 5 bit transfer #define l6bits ((1<<2)+(1)) //0101 6 bit transfer #define l7bits ((1<<1)+(1<<1)) //0110 7 bit transfer #define l8bits ((1<<2)+(1<<1)+(1)) //0111 8 bit transfer #define l9bits ((1<<3)) //1000 9 bit transfer #define l10bits ((1<<3)+(1)) //1001 10 bit transfer #define l11bits ((1<<3)+(1<<1)) //1010 11 bit transfer #define l12bits ((1<<3)+(1<<1)+1) //1011 12 bit transfer #define l13bits ((1<<3)+(1<<2)) //1100 13 bit transfer #define l14bits ((1<<3)+(1<<2)+1) //1101 14 bit transfer #define l15bits ((1<<3)+(1<<2)+(1<<1)) //1110 15 bit transfer #define l16bits ((1<<3)+(1<<2)+(1<<1)+1) //1111 16 bit transfer #define FFSPI 0 #define FFTI (1<<4) #define FFMICROWIRE (1<<5) #define CLKINHLOW 0 #define CLKINHHIGH (1<<6) #define CKfirstEdge 0 #define CKsecondEdge (1<<7) #define loopbackOFF 0 #define loopbackON 1 #define MASTERMODE 0 #define SLAVEMODE (1<<2) #define SLAVEOUTPUTDISABLEMODE (1<<3) #define sspisslave(dev) ((((((_sspDev)dev))->SSPCtrlReg1>>2) & 1)==1) struct sspRegs { unsigned long SSPCtrlReg0; unsigned long SSPCtrlReg1; unsigned long SSPDataReg; unsigned long SSPStatReg; unsigned long SSPClkPrescReg; unsigned long SSPIntMaskReg; unsigned long SSPRawIntStatReg; unsigned long SSPMaskedIntStatReg; unsigned long SSPIntClearReg; unsigned long SSPDMACtrlReg; }; typedef volatile struct sspRegs* _sspDev; typedef UHANDLE sspDev; extern sspDev sspopen(int count); extern void sspputc(sspDev dev,char c); extern void sspputnc(sspDev dev,const char *c,unsigned int n); extern void sspputw(sspDev dev,int c); extern void sspputs(sspDev dev,char *s); extern void sspgets(sspDev dev,char *s); extern char sspgetc(sspDev dev); extern void sspgetnc(sspDev dev,char *c,unsigned int n); extern int sspgetw(sspDev dev); extern void enableSSP(sspDev dev); extern void disableSSP(sspDev dev); extern void sspsetup(sspDev dev,unsigned char bitscount,int sspCtrlRegValue0,int sspCtrlRegValue1, unsigned int dataRate); extern void sspsetupTRsize(sspDev dev,unsigned char value); extern unsigned char sspgetpclkfactor(sspDev dev); extern void sspsetpclkfactor(sspDev dev,unsigned char pclkfactor); extern void sspsetdatarate(sspDev dev,unsigned int dataRate); #endif