SPI library used to communicate with an altera development board attached to four zigbee-header pins.

Revision:
21:e90dd0f8aaa1
Parent:
20:2d5cd38047ca
Child:
22:7524dee5c753
--- a/mmSPI.cpp	Mon Aug 19 23:14:36 2013 +0000
+++ b/mmSPI.cpp	Tue Aug 20 14:02:56 2013 +0000
@@ -50,60 +50,6 @@
       fSPIquarterP = (1 / fSPIfreq) / 4;        // figure quarter-cycle period.
     }
 //----------------------------------------------//------------------------------
-//  we're not going for speed, so lets go for good setup / hold.
-
-                                                // send/receive a byte over SPI.
-                                                // MSB out/in first.
-    void mmSPI::transceive_byte(char *cReceive, char *cSend)
-    {
-      *cReceive = 0;                            // clear receive byte.                                    
-      for (dLoop01 = 7; dLoop01 >= 0; dLoop01--)// loop for 8 bits in the byte.
-      {
-        *pSCLK = 0;                             // SPI clock negedge.
-        wait(fSPIquarterP);                     // until middle of clock low.
-        *pMOSI = (*cSend >> dLoop01) & 1;       // assert MOSI.
-                                                // capture MISO.
-        *cReceive = *cReceive | (*pMISO << dLoop01);        
-        wait(fSPIquarterP);                     // finish-out cycle.
-        *pSCLK = 1;                             // SPI clock posedge.
-        wait(fSPIquarterP);                     // finish-out cycle.
-        wait(fSPIquarterP);                     // finish-out cycle.
-      }
-    }
-//----------------------------------------------//------------------------------
-                                                // transceive a character array.
-                                                // limit is 256 characters.
-                                                // MSB out/in first.
-    void mmSPI::transceive_vector(char *cReceive, char *cSend, char cNumBytes)
-    {       
-    
-
-    
-      for (dLoop02 = (cNumBytes - 1); dLoop02 >= 0; dLoop02--)
-      transceive_byte(&(cReceive[dLoop02]), &(cSend[dLoop02]));
-      
-   
-      
-      *pCPUclk = 1;                             // pulse the CPU clock.
-      wait(fSPIquarterP); 
-      wait(fSPIquarterP);     
-      *pCPUclk = 0;  
-      wait(fSPIquarterP); 
-      wait(fSPIquarterP); 
-      
-      
-      
-      if (0)
-      {
-        *pSCLK = 1;                              
-        wait(fSPIquarterP); 
-        wait(fSPIquarterP); 
-        *pSCLK = 0;
-        wait(fSPIquarterP); 
-        wait(fSPIquarterP); 
-      }  
-    }
-//----------------------------------------------//------------------------------
                                                 // transceive a character array.
                                                 // limit is 256 characters.
                                                 // MSB out/in first.
@@ -159,94 +105,6 @@
       }
     }
 //----------------------------------------------//------------------------------
-                                                // transceive a character array.
-                                                // limit is 256 characters.
-                                                // MSB out/in first.
-    void mmSPI::test_toggle_cpu_clock(void)
-    {    
-      DigitalOut led0(LED4);
-      while (1)
-      {
-        *pCPUclk = 1;  led0 = 1;
-        wait(1.0);
-        *pCPUclk = 0;  led0 = 0;
-        wait(1.0);
-      }
-    }
-//----------------------------------------------//------------------------------
-    void mmSPI::force_write(char cDataHIgh, char cDataLow, char cAddress)
-    {
-      char pcReceive[8];
-      char pcSend   [8];
-      int  dLoop;
-      
-      for (dLoop = 0; dLoop < 8; dLoop++) pcSend[dLoop] = 0;
-      
-      
-                                                // high data to R2.
-      pcSend[7] = 0x02; pcSend[1] = 0xA8; pcSend[0] = cDataHIgh;   
-      transceive_vector(pcReceive, pcSend, 8);
-
-
-                                                 // low  data to R1.
-      pcSend[7] = 0x02; pcSend[1] = 0xA4; pcSend[0] = cDataLow; 
-      transceive_vector(pcReceive, pcSend, 8);  
-        
-        
-                                                // address to R3.
-      pcSend[7] = 0x02; pcSend[1] = 0xAC; pcSend[0] = cAddress; 
-      transceive_vector(pcReceive, pcSend, 8);
-        
-        
-                                                     
-      pcSend[7] = 0x02; pcSend[1] = 0x02;  pcSend[0] = 0;   // WE high.
-      transceive_vector(pcReceive, pcSend, 8);
-        
-      pcSend[7] = 0x02; pcSend[1] = 0x00;   pcSend[0] = 0;  // WE low. 
-      transceive_vector(pcReceive, pcSend, 8);
-
-    }
-//----------------------------------------------//------------------------------
-
-    void mmSPI::force_read(char cAddress)
-    {
-      char pcReceive[8];
-      char pcSend   [8];
-      int  dLoop;
-      
-      for (dLoop = 0; dLoop < 8; dLoop++) pcSend[dLoop] = 0;
-      
- 
-        
-        
-                                                // address to R3.
-      pcSend[7] = 0x02; pcSend[1] = 0xAC; pcSend[0] = cAddress; 
-      transceive_vector(pcReceive, pcSend, 8);
-        
-                                                // R2 gets data-H from memory.
-      pcSend[7] = 0x02; pcSend[1] = 0xC8; pcSend[0] = cAddress; 
-      transceive_vector(pcReceive, pcSend, 8);
-      
-                                                // R1 gets data-L from memory.
-      pcSend[7] = 0x02; pcSend[1] = 0xC4; pcSend[0] = cAddress; 
-      transceive_vector(pcReceive, pcSend, 8);
-      
-      
-      
-      
- //       pcSend[7] = 0x02;                       // force IR.
-//        pcSend[1] = 0xA4;                       // R1 <- immediate.
-//        pcSend[0] = 0xEE;                       // immediate value.
- ///       transceive_vector(pcReceive, pcSend, 8);     
-      
-      
-      
-                                                // no-op scan.
-      pcSend[7] = 0x02; pcSend[1] = 0x0; pcSend[0] = 0;  
-      transceive_vector(pcReceive, pcSend, 8);
-  
-    }
-//----------------------------------------------//------------------------------
     void mmSPI::write_register(char cRegister, char cValue, char * pcReceive, char * pcSend)
     {     
       int dLoop;                                // loop index.
@@ -271,11 +129,9 @@
     char mmSPI::read_register(char cRegister, char * pcReceive, char * pcSend)
     { 
       int dLoop;      
-   //   int dComplement;
+
       
- //     dComplement = 7 - (int) cRegister;
-      
-                                // send all 0.
+                                                // send all 0.
       for (dLoop = 0; dLoop < 8; dLoop++) pcSend[dLoop] = 0x00;    
                    
       transceive_vector2(pcReceive, pcSend, 8); // snap & scan-out reg contents.
@@ -290,18 +146,6 @@
                                                 // clear transmit vector.
       for (dLoop = 0; dLoop < 8; dLoop++) pcSend[dLoop] = 0x00;   
       
- /*
-      CTRL = 7
-      R0   = 6
-      R1   = 5
-      R2   = 4
-      R3   = 3
-      PC   = 2
-      IR-H = 1
-      IR-L = 0          
-*/       
-      
- 
                                                 // R3 <- address.
                                                 // R2 <- high-data.
                                                 // R1 <- low-data.
@@ -334,19 +178,7 @@
     
                                                 // clear transmit vector.
       for (dLoop = 0; dLoop < 8; dLoop++) pcSend[dLoop] = 0x00;  
-      
- /*
-      CTRL = 7
-      R0   = 6
-      R1   = 5
-      R2   = 4
-      R3   = 3
-      PC   = 2
-      IR-H = 1
-      IR-L = 0          
-*/        
-      
-      
+            
       
                                                 // R3 <- address.
       write_register(0x03,cAddress, pcReceive, pcSend);
@@ -376,28 +208,6 @@
 //----------------------------------------------//------------------------------
 
 
-    void mmSPI::write_pulse(char * pcReceive, char * pcSend)
-    {     
-      pcSend[7] = 0x02;                         // write-enable high.
-      pcSend[1] = 0x02;
-      pcSend[0] = 0x00;
-      transceive_vector2(pcReceive, pcSend, 8);
-      
-      pcSend[7] = 0x02;                         // write-enable low.
-      pcSend[1] = 0x00;
-      pcSend[0] = 0x00;
-      transceive_vector2(pcReceive, pcSend, 8);
- 
-      pcSend[7] = 0x00;
-      pcSend[6] = 0x00;
-      pcSend[5] = 0x00;
-      pcSend[4] = 0x00;
-      pcSend[3] = 0x00;
-      pcSend[2] = 0x00;
-      pcSend[1] = 0x00;
-      pcSend[0] = 0x00;
-    }
-//----------------------------------------------//------------------------------
 
 
 
@@ -411,4 +221,3 @@
 
 
 
-