SDI lab / Mbed 2 deprecated Test_SRAM_burst

Dependencies:   mbed

Committer:
Brianmic
Date:
Mon Jan 20 18:20:22 2014 +0000
Revision:
0:efc2f960bc14
Test burst

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Brianmic 0:efc2f960bc14 1 #include "mbed.h"
Brianmic 0:efc2f960bc14 2
Brianmic 0:efc2f960bc14 3 DigitalOut redLed( LED_RED ); // Led used to signal errors
Brianmic 0:efc2f960bc14 4 DigitalOut greenLed( LED_GREEN );
Brianmic 0:efc2f960bc14 5 DigitalOut spiSS( PTD0 ); // Slave select is handled by GPIO
Brianmic 0:efc2f960bc14 6 Serial PC (USBTX, USBRX);
Brianmic 0:efc2f960bc14 7
Brianmic 0:efc2f960bc14 8 int main() {
Brianmic 0:efc2f960bc14 9 redLed = 1;
Brianmic 0:efc2f960bc14 10 greenLed = 1;
Brianmic 0:efc2f960bc14 11 // Create SPI master instance, 8bit, CPOL=0, CPHA=1, 100kHz
Brianmic 0:efc2f960bc14 12 SPI spiMaster( PTD2, PTD3, PTD1 ); // mosi, miso, sclk
Brianmic 0:efc2f960bc14 13 spiMaster.format( 8, 1 );
Brianmic 0:efc2f960bc14 14 spiMaster.frequency( 100000 );
Brianmic 0:efc2f960bc14 15
Brianmic 0:efc2f960bc14 16 PC.baud(115200);
Brianmic 0:efc2f960bc14 17 // Deselect slave
Brianmic 0:efc2f960bc14 18 spiSS = 1;
Brianmic 0:efc2f960bc14 19 // Forever
Brianmic 0:efc2f960bc14 20 wait(1);
Brianmic 0:efc2f960bc14 21
Brianmic 0:efc2f960bc14 22 while( 1 ) {
Brianmic 0:efc2f960bc14 23 int rx = 0;
Brianmic 0:efc2f960bc14 24 int data[16];
Brianmic 0:efc2f960bc14 25 // Burst write
Brianmic 0:efc2f960bc14 26 spiSS = 0;
Brianmic 0:efc2f960bc14 27 spiMaster.write( '#' );
Brianmic 0:efc2f960bc14 28 spiMaster.write( 0x07 ); // write RAM burst
Brianmic 0:efc2f960bc14 29 spiMaster.write( 0x01 ); // AA1
Brianmic 0:efc2f960bc14 30 spiMaster.write( 0x02 ); // AA2
Brianmic 0:efc2f960bc14 31 spiMaster.write( 0x03 ); // AA3
Brianmic 0:efc2f960bc14 32
Brianmic 0:efc2f960bc14 33
Brianmic 0:efc2f960bc14 34 for(int i = 0; i < 8; i++ )
Brianmic 0:efc2f960bc14 35 {
Brianmic 0:efc2f960bc14 36 spiMaster.write( 2^i ); // DD1
Brianmic 0:efc2f960bc14 37 spiMaster.write( 2^i ); // DD2
Brianmic 0:efc2f960bc14 38
Brianmic 0:efc2f960bc14 39
Brianmic 0:efc2f960bc14 40 if (i == 7)
Brianmic 0:efc2f960bc14 41 {
Brianmic 0:efc2f960bc14 42 spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 43 spiMaster.write( '#' );
Brianmic 0:efc2f960bc14 44 }
Brianmic 0:efc2f960bc14 45 else
Brianmic 0:efc2f960bc14 46 {
Brianmic 0:efc2f960bc14 47 while( rx != '@' )
Brianmic 0:efc2f960bc14 48 {
Brianmic 0:efc2f960bc14 49 rx = spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 50 }
Brianmic 0:efc2f960bc14 51 }
Brianmic 0:efc2f960bc14 52
Brianmic 0:efc2f960bc14 53 rx = 0;
Brianmic 0:efc2f960bc14 54 }
Brianmic 0:efc2f960bc14 55
Brianmic 0:efc2f960bc14 56 // spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 57 // spiMaster.write( '#' ); // termina burst
Brianmic 0:efc2f960bc14 58
Brianmic 0:efc2f960bc14 59 spiSS = 1;
Brianmic 0:efc2f960bc14 60
Brianmic 0:efc2f960bc14 61 wait(1);
Brianmic 0:efc2f960bc14 62
Brianmic 0:efc2f960bc14 63 rx = 0;
Brianmic 0:efc2f960bc14 64
Brianmic 0:efc2f960bc14 65 // Burst Read
Brianmic 0:efc2f960bc14 66 spiSS = 0;
Brianmic 0:efc2f960bc14 67 spiMaster.write( '#' );
Brianmic 0:efc2f960bc14 68 spiMaster.write( 0x05 ); // burst read RAM
Brianmic 0:efc2f960bc14 69 spiMaster.write( 0x01 ); // AA1
Brianmic 0:efc2f960bc14 70 spiMaster.write( 0x02 ); // AA2
Brianmic 0:efc2f960bc14 71 spiMaster.write( 0x03 ); // AA3
Brianmic 0:efc2f960bc14 72
Brianmic 0:efc2f960bc14 73 for(int i = 0; i < 8; i++ )
Brianmic 0:efc2f960bc14 74 {
Brianmic 0:efc2f960bc14 75 while( rx != '@' )
Brianmic 0:efc2f960bc14 76 {
Brianmic 0:efc2f960bc14 77 rx = spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 78 }
Brianmic 0:efc2f960bc14 79
Brianmic 0:efc2f960bc14 80 rx = 0;
Brianmic 0:efc2f960bc14 81
Brianmic 0:efc2f960bc14 82 data[2*i] = spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 83
Brianmic 0:efc2f960bc14 84 if (i == 7)
Brianmic 0:efc2f960bc14 85 {
Brianmic 0:efc2f960bc14 86 data[2*i+1] = spiMaster.write( '#' ); // termina burst
Brianmic 0:efc2f960bc14 87 }
Brianmic 0:efc2f960bc14 88 else
Brianmic 0:efc2f960bc14 89 data[2*i+1] = spiMaster.write( 0x55 );
Brianmic 0:efc2f960bc14 90
Brianmic 0:efc2f960bc14 91 if(( data[2*i] != 2^i ) or ( data[2*i+1] != 2^i )){
Brianmic 0:efc2f960bc14 92 redLed = 0; // NON DEVE SBAGLIARE
Brianmic 0:efc2f960bc14 93 wait(1);
Brianmic 0:efc2f960bc14 94 redLed = 1;
Brianmic 0:efc2f960bc14 95 }
Brianmic 0:efc2f960bc14 96 else {
Brianmic 0:efc2f960bc14 97 greenLed = 0;
Brianmic 0:efc2f960bc14 98 wait(1);
Brianmic 0:efc2f960bc14 99 greenLed = 1;
Brianmic 0:efc2f960bc14 100 }
Brianmic 0:efc2f960bc14 101
Brianmic 0:efc2f960bc14 102 }
Brianmic 0:efc2f960bc14 103
Brianmic 0:efc2f960bc14 104
Brianmic 0:efc2f960bc14 105 for(int i = 0; i<8; i++)
Brianmic 0:efc2f960bc14 106 {
Brianmic 0:efc2f960bc14 107 PC.printf("%d",data[2*i]);
Brianmic 0:efc2f960bc14 108 PC.printf("%d",data[2*i+1]);
Brianmic 0:efc2f960bc14 109 }
Brianmic 0:efc2f960bc14 110
Brianmic 0:efc2f960bc14 111
Brianmic 0:efc2f960bc14 112 spiSS = 1;
Brianmic 0:efc2f960bc14 113
Brianmic 0:efc2f960bc14 114 wait(1);
Brianmic 0:efc2f960bc14 115
Brianmic 0:efc2f960bc14 116 //viualizza sui led i valori letti
Brianmic 0:efc2f960bc14 117 for(int i=0; i < 8; i++)
Brianmic 0:efc2f960bc14 118 {
Brianmic 0:efc2f960bc14 119 spiSS = 0;
Brianmic 0:efc2f960bc14 120 spiMaster.write( '#' );
Brianmic 0:efc2f960bc14 121 spiMaster.write( 0x02 );
Brianmic 0:efc2f960bc14 122 spiMaster.write( data[2*i] );
Brianmic 0:efc2f960bc14 123
Brianmic 0:efc2f960bc14 124 spiMaster.write( '#' );
Brianmic 0:efc2f960bc14 125 spiMaster.write( 0x02 );
Brianmic 0:efc2f960bc14 126 spiMaster.write( data[2*i+1] );
Brianmic 0:efc2f960bc14 127 spiSS = 1;
Brianmic 0:efc2f960bc14 128
Brianmic 0:efc2f960bc14 129 wait(1);
Brianmic 0:efc2f960bc14 130
Brianmic 0:efc2f960bc14 131 }
Brianmic 0:efc2f960bc14 132
Brianmic 0:efc2f960bc14 133 wait(1);
Brianmic 0:efc2f960bc14 134 }
Brianmic 0:efc2f960bc14 135 }
Brianmic 0:efc2f960bc14 136