Hi y4krys,
I've checked and double checked my source code and I can't find any
errors but it still doesn't work.
The SPI pins seam to be set as input.
I've included my source code and if you could take a look at it... Thanks.
Does anybody own a LPC with two SPI ports that would test the code for me?
Most of the code are generated by MakeApp from IAR.
Thanks in advance
Jens Alsig
main.c
#include "lpc2114.h"
void init_spi(void);
#define MA_PINSEL0_PCB 0x00000000 /* Pin Function Select
Register 0 */
#define MA_PINSEL0_PCB_MASK 0xFFFFFFFF /* Used bits */
#define MA_PINSEL1_PCB 0x000002A8 /* Pin Function Select
Register 1 */
#define MA_PINSEL1_PCB_MASK 0x3FCFFFFF /* Used bits */
#define MA_PINSEL2_PCB 0x006000F0 /* Pin Function Select
Register 2 */
#define MA_PINSEL2_PCB_MASK 0x0FF3E9FC /* Used bits */
#define MA_S0SPCR_SPI 0x00000000 /* SPI0 Control Register */
#define MA_S0SPCR_SPI_MASK 0x000000F8 /* Used bits */
#define MA_S0SPDR_SPI 0x00000000 /* SPI0 Data Register */
#define MA_S0SPDR_SPI_MASK 0x000000FF /* Used bits */
#define MA_S0SPCCR_SPI 0x00000008 /* SPI0 Clock Counter Register */
#define MA_S0SPCCR_SPI_MASK 0x000000FF /* Used bits */
#define MA_S1SPCR_SPI 0x00000020 /* SPI1 Control Register */
#define MA_S1SPCR_SPI_MASK 0x000000F8 /* Used bits */
#define MA_S1SPDR_SPI 0x00000000 /* SPI1 Data Register */
#define MA_S1SPDR_SPI_MASK 0x000000FF /* Used bits */
#define MA_S1SPCCR_SPI 0x00000008 /* SPI1 Clock Counter Register */
#define MA_S1SPCCR_SPI_MASK 0x000000FF /* Used bits */
#define MA_OK 0
#define MA_ERROR 1
#define MA_EMPTY 2
#define S1SPSR_SPIF (1 << 7)
#define S1SPSR_WCOL (1 << 6)
#define S1SPSR_ROVR (1 << 5)
#define S1SPSR_MODF (1 << 4)
#define S1SPSR_ABRT (1 << 3)
#define PSelLED 0x30000000
#define LED 0x40000000
void TurnOnLed(void)
{
GPIO0_IOCLR = LED;
}
void TurnOffLed(void)
{
GPIO0_IOSET = LED;
}
void spi1_init( void )
{
PCB_PINSEL1 = ( PCB_PINSEL1 & ~MA_PINSEL1_PCB_MASK ) | MA_PINSEL1_PCB;
SPI1_SPCCR = ( SPI1_SPCCR & ~MA_S1SPCCR_SPI_MASK ) | MA_S1SPCCR_SPI;
SPI1_SPCR = ( SPI1_SPCR & ~MA_S1SPCR_SPI_MASK ) | MA_S1SPCR_SPI;
}
signed char spi1_putch( unsigned char Data )
{
signed char Status;
SPI1_SPDR = Data;
Status = MA_OK;
if( SPI1_SPSR )
{
Status = MA_ERROR;
}
return Status;
}
unsigned char spi1_getch( void )
{
unsigned char Data;
Data = SPI1_SPDR;
return Data;
}
signed char spi1_get_status( void )
{
signed char Status;
Status = (signed char) SPI1_SPSR;
if( Status == 0 )
{
Status = MA_EMPTY;
}
else if( Status & ( S1SPSR_WCOL | S1SPSR_ROVR | S1SPSR_MODF |
S1SPSR_ABRT ) )
{
if( Status & S1SPSR_MODF )
{
SPI1_SPCR = MA_S1SPCR_SPI;
}
}
else if( Status & S1SPSR_SPIF )
{
Status = MA_OK;
}
return Status;
}
int main(void)
{
GPIO0_IODIR = LED;
spi1_init();
TurnOnLed();
while(1)
{
if(spi1_get_status() == MA_OK)
{
if(spi1_putch(0xAA) == MA_ERROR)
TurnOffLed();
}
}
}
y4krys wrote:
> Alsig,
> One more thing, for the SSEL pullup to work the pin function must be
> set to SPI (PINSEL1 |= 0x2A8). (Note: corrected the config bits ;-))
> Krys
>
> --- In lpc2000@yahoogroups.com, "y4krys" <krys.brukalo@a...> wrote:
> > Alsig,
> > If you write a byte to the transmit register the SCK clock should
> be
> > generated. Make sure the SPI1 peripheral is enabled and powered
> > (Check PCONP bits). You should be able to do your initial test
> using
> > your debugger and the direct access to the control registers.
> Also,
> > only the MISO pin should show as an input, MOSI and SCK should be
> > outputs driven SPI. Once you are past the clock and MOSI hurdle
> > you'll need the slave select signal from your LPC to the EE and the
> > right SPI mode (CPOL and CPHA) for proper data access.
> > I hope it helps.
> > Regards,
> > Krys
> > --- In lpc2000@yahoogroups.com, Jens Alsig <alsig@g...> wrote:
> > > Hi,
> > > The all pins seam to float or be as input even after I configure
> > the
> > > PINSEL1 register. I'm using a LPC2214 as
> > > the master and the 25Lc640 as a slave. I've connected the SSEL to
> 3
> > volt.
> > > Regarding the setup of the registers I've tried the IAR MakeApp
> > code for
> > > the PCB module and the SPI module. And at the
> > > moment this gives the same result.
> > >
> > > Regards Jens Alsig
> > >
> > >
> > > y4krys wrote:
> > >
> > > > --- In lpc2000@yahoogroups.com, "jensalsig" <alsig@g...> wrote:
> > > > > Hi,
> > > > >
> > > > > have anyone every used the SPI 1 channel on a LPC device that
> > has 2
> > > > > channels?
> > > > >
> > > > > I've tried without any luck and getting very frustrated! I
> have
> > tried
> > > > > using the IAR MakeApp and that doesn't work either. My setup
> is
> > a
> > > > > LPC2214 from Olimex and a MicroChip EEPROM.
> > > > >
> > > > > Any suggestions are VERY welcome.
> > > > >
> > > > > Regards Jens Alsig
> > > >
> > > > Hi Alsig,
> > > > What do you mean by "doesn't work"? Is SPI1 properly setup (IO
> > pin
> > > > selection and function, Master/Slave etc.) and enabled? Have
> you
> > > > checked the bus with a scope? What hardware do you use?
> > > >
> > > > Krys
> > > >
> > > >
> > > >
> > > > ----------------------------------------------------------------
> --
> > ------
> > > > YAHOO! GROUPS LINKS
> > > >
> > > > * Visit your group "lpc2000
> > > > <http://groups.yahoo.com/group/lpc2000>" on the web.
> > > >
> > > > * To unsubscribe from this group, send an email to:
> > > > lpc2000-unsubscribe@yahoogroups.com
> > > > <mailto:lpc2000-unsubscribe@yahoogroups.com?
> > subject=Unsubscribe>
> > > >
> > > > * Your use of Yahoo! Groups is subject to the Yahoo! Terms
> of
> > > > Service <http://docs.yahoo.com/info/terms/>.
> > > >
> > > >
> > > > ----------------------------------------------------------------
> --
> > ------
> > > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
>
>
>
>
>
> SPONSORED LINKS
> Microcontrollers
> <http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w5=8085+microprocessor&c=5&s=120&.sig=OPqm0ilH6VyGn-geZ0nNwA>
> Microprocessor
> <http://groups.yahoo.com/gads?t=ms&k=Microprocessor&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w5=8085+microprocessor&c=5&s=120&.sig=e6n93hF7rArBsrPQJltQ_w>
> Intel microprocessors
> <http://groups.yahoo.com/gads?t=ms&k=Intel+microprocessors&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w5=8085+microprocessor&c=5&s=120&.sig=EENrTtKaQUw-Vd0BgTdDmw>
>
> Pic microcontrollers
> <http://groups.yahoo.com/gads?t=ms&k=Pic+microcontrollers&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w5=8085+microprocessor&c=5&s=120&.sig=iYT6za1gT3-VT1hwIylDpw>
> 8085 microprocessor
> <http://groups.yahoo.com/gads?t=ms&k=8085+microprocessor&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w5=8085+microprocessor&c=5&s=120&.sig=PhYMBsCkQptYbazQFyNujQ>
>
>
>
> ------------------------------------------------------------------------
> YAHOO! GROUPS LINKS
>
> * Visit your group "lpc2000
> <http://groups.yahoo.com/group/lpc2000>" on the web.
>
> * To unsubscribe from this group, send an email to:
> lpc2000-unsubscribe@yahoogroups.com
> <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>
> * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> Service <http://docs.yahoo.com/info/terms/>.
>
>
> ------------------------------------------------------------------------
>
[Non-text portions of this message have been removed]Message
Re: [lpc2000] Re: SPI1
2005-08-17 by Jens Alsig
Attachments
- No local attachments were found for this message.