SDI lab / Mbed 2 deprecated Test_SRAM_burst

Dependencies:   mbed

Revision:
0:efc2f960bc14
diff -r 000000000000 -r efc2f960bc14 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jan 20 18:20:22 2014 +0000
@@ -0,0 +1,136 @@
+#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);
+    }
+}
+ 
\ No newline at end of file