SDI lab / Mbed 2 deprecated Test_SRAM_burst

Dependencies:   mbed

main.cpp

Committer:
Brianmic
Date:
2014-01-20
Revision:
0:efc2f960bc14

File content as of revision 0:efc2f960bc14:

#include "mbed.h"
 
DigitalOut redLed( LED_RED ); // Led used to signal errors
DigitalOut greenLed( LED_GREEN );
DigitalOut spiSS( PTD0 ); // Slave select is handled by GPIO
Serial PC (USBTX, USBRX);
 
int main() {
    redLed = 1;
    greenLed = 1;
    // Create SPI master instance, 8bit, CPOL=0, CPHA=1, 100kHz
    SPI spiMaster( PTD2, PTD3, PTD1 ); // mosi, miso, sclk
    spiMaster.format( 8, 1 );
    spiMaster.frequency( 100000 );
    
    PC.baud(115200);
    // Deselect slave
    spiSS = 1;
    // Forever
    wait(1);
    
    while( 1 ) {
        int rx = 0;
        int data[16];
        // Burst write
        spiSS = 0;
        spiMaster.write( '#' );
        spiMaster.write( 0x07 ); // write RAM burst
        spiMaster.write( 0x01 ); // AA1
        spiMaster.write( 0x02 ); // AA2
        spiMaster.write( 0x03 ); // AA3
        
        
        for(int i = 0; i < 8; i++ )
        {
            spiMaster.write( 2^i ); // DD1
            spiMaster.write( 2^i ); // DD2
            
            
            if (i == 7)
            {
                spiMaster.write( 0x55 );
                spiMaster.write( '#' );
            }
            else
            {    
                while( rx != '@' ) 
                {    
                    rx = spiMaster.write( 0x55 );
                }
            }
            
            rx = 0;
        }
        
//        spiMaster.write( 0x55 );
//        spiMaster.write( '#' );  // termina burst
        
        spiSS = 1;
        
        wait(1);
        
        rx = 0;
        
        // Burst Read
        spiSS = 0;
        spiMaster.write( '#' );
        spiMaster.write( 0x05 ); // burst read RAM
        spiMaster.write( 0x01 ); // AA1
        spiMaster.write( 0x02 ); // AA2
        spiMaster.write( 0x03 ); // AA3
        
        for(int i = 0; i < 8; i++ )
        {
            while( rx != '@' )
            {
                rx = spiMaster.write( 0x55 );
            }
            
            rx = 0;
            
            data[2*i] = spiMaster.write( 0x55 );
            
            if (i == 7) 
            {
                data[2*i+1] = spiMaster.write( '#' );  // termina burst
            }
            else
                data[2*i+1] = spiMaster.write( 0x55 );
            
            if(( data[2*i] != 2^i ) or ( data[2*i+1] != 2^i )){
                redLed = 0;     // NON DEVE SBAGLIARE
                wait(1);
                redLed = 1;
            }
            else {
                greenLed = 0;
                wait(1);
                greenLed = 1;
            }

        }
        

        for(int i = 0; i<8; i++)
        {
            PC.printf("%d",data[2*i]);
            PC.printf("%d",data[2*i+1]);
        }


        spiSS = 1;
        
        wait(1);
        
        //viualizza sui led i valori letti
        for(int i=0; i < 8; i++)
        {
            spiSS = 0;
            spiMaster.write( '#' );
            spiMaster.write( 0x02 );
            spiMaster.write( data[2*i] );
            
            spiMaster.write( '#' );
            spiMaster.write( 0x02 );
            spiMaster.write( data[2*i+1] );
            spiSS = 1;
            
            wait(1);
                    
        }
            
            wait(1);
    }
}