2013-10-18

CooCox SSP testing notes

#include "lpc11xx_ssp.h"

// ***********************************************************************
// SPI testing - 2013oct18
// ***********************************************************************

void testSpi()
{
// Max buffer length
#define BUFFER_SIZE    0x40

// Tx buffer
int Tx_Buf[BUFFER_SIZE];

// Rx buffer
int Rx_Buf[BUFFER_SIZE];

// SSP Configuration structure variable
SSP_CFG_Type SSP_ConfigStruct;

// 1. Enable SSP0 block clock
SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_SSP0, ENABLE);

// 2. Assign P2.11 as SCK0, enable SSEL
SSP_SSP0PinsInit(SCK0_PIO2_11, ENABLE);

// 3.1 Initialize SSP configuration structure to default
SSP_ConfigStructInit(&SSP_ConfigStruct);

// 3.2 Initialize SSP peripheral with parameter given in structure above
SSP_Init(LPC_SSP0, &SSP_ConfigStruct);

    // 4. Enable SSP peripheral
    SSP_Cmd(LPC_SSP0, ENABLE);

    // 5. Initialize buffers

    return 1;

    // Private functions

    void Buffer_Init(void)
    {
            int i;

            for (i = 0; i < BUFFER_SIZE; i++)
            {
                    Tx_Buf[i] = i;
                    Rx_Buf[i] = 0;
            }
    }

    void Error_Loop(void)
    {
            /* Loop forever */
            while (1);
    }

    int Buffer_Verify(void)
    {
            int i;
            int *src_addr = (int *) &Tx_Buf[0];
            int *dest_addr = (int *) &Rx_Buf[0];

            for ( i = 0; i < BUFFER_SIZE; i++ )
            {
                    if ( *src_addr++ != *dest_addr++ )
                    {
                            /* Call Error Loop */
                            return 0;
                    }
            }
            return 1;
    }
}

// ***********************************************************************
// End of SSP testing
// ***********************************************************************

No comments:

Post a Comment