This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SPI -- EEPROM with 2808

Hi .  EEPRom used 25LC256  .. I have crossed verified the SIMO  in CRO and am getting  proper pulses  .but  somi is always in  high impedance state. i am not able read back any data.. not even a scrap data too ..


void write_2_EEPROM(void);
void read_M_EEPROM(void);

void spi_fifo_init(void);
void Gpio_select(void);

Uint16 rEdata[20];     // Receive data buffer
Uint16 dummy ,i;

void main(void)
{
  
  
// Step 1. Initialize System Control:

   InitSysCtrl();

// Step 2. Initalize GPIO:

   InitSpibGpio();
  
// Step 3. Initialize PIE vector table:
// Disable and clear all CPU interrupts
   DINT;
   IER = 0x0000;
   IFR = 0x0000;

// Initialize PIE control registers to their default state:

   InitPieCtrl();

   InitPieVectTable();

// Step 4. Initialize all the Device Peripherals:

   spi_fifo_init();     
  
   Gpio_select();
    EALLOW ;

// Enable interrupts required for this example
   PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   // Enable the PIE block
   PieCtrlRegs.PIEIER6.bit.INTx3=1;    
   PieCtrlRegs.PIEIER6.bit.INTx4=1;    
   IER=0x20;                            // Enable CPU INT6
   ERTM;
   //EINT;                                // Enable Global Interrupts
 
  
   
   write_2_EEPROM();
   read_M_EEPROM();

    for(;;);

}

   void spi_fifo_init()
  {

    SpibRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI
    SpibRegs.SPICCR.all=0x7 ;       //8-bit character, DISABLING Loopback mode
    SpibRegs.SPICTL.all=0x0017;       //Interrupt enabled, Master/Slave XMIT enabled
    SpibRegs.SPISTS.all=0x0000;
    SpibRegs.SPIBRR = 127;           // Baud rate
 
    SpibRegs.SPIFFTX.bit.SPIFFENA =0;     // Enable FIFO's, set TX FIFO level to 8
    SpibRegs.SPICCR.bit.SPISWRESET=1;     // Enable SPI
  //  SpibRegs.SPIFFRX.all=0x002F;        // Set RX FIFO level to 8
//    SpibRegs.SPIFFCT.all=0x00;
    SpibRegs.SPIPRI .all=0x0010;
   
   
  }


void write_2_EEPROM()

{
    Uint16 i;
   
    GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
    SpibRegs.SPITXBUF = 0x0600 ;                     \\   WREN
   

    while(SpibRegs.SPISTS.bit.INT_FLAG == 0)
    {}
    dummy = SpiaRegs.SPIRXBUF;

    GpioDataRegs.GPASET.bit.GPIO16 = 1;      

    for(i=0;i<=100;i++)
    {}

    GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
   
    SpibRegs.SPITXBUF = 0x0200 ;                    \\ Write

   
    for(i=0;i<=1000;i++)
    {}
    SpibRegs.SPITXBUF = 0x4000 ;                           \\ address as 4000

    SpibRegs.SPITXBUF = 0x0000 ;

    for(i=0;i<=2500;i++)
    {}

   

    SpibRegs.SPITXBUF = 0x0100;                               \\ Data   is 01 and 02
   
    SpibRegs.SPITXBUF = 0x0200;
   
    for(i=0;i<=1500;i++)
    {}
   
    dummy = SpiaRegs.SPIRXBUF;
    SpibRegs.SPISTS.bit.OVERRUN_FLAG = 1;

    GpioDataRegs.GPASET.bit.GPIO16 = 1;
   
    for(i=0;i<=200;i++)
    {}
   
}

 
void read_M_EEPROM(void)

    {
       
    GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
    SpibRegs.SPITXBUF = 0x0300 ;                                       \\   Read
     
      for(i=0;i<=1500;i++)
    {}
   
     SpibRegs.SPITXBUF = 0x4000 ;                                                      \\address
     SpibRegs.SPITXBUF = 0x0000 ;

            
//    while (SpibRegs.SPISTS.bit.INT_FLAG == 0)                
//    {}
    //    dummy=SpiaRegs.SPIRXBUF;
   
    for(i=0;i<=2000;i++)
    {}

    SpibRegs.SPISTS.bit.OVERRUN_FLAG = 1;
    SpibRegs.SPITXBUF = dummy ;                      \\ sending dummy data

    for(i=0;i<=2000;i++)
    {}
   
    rEdata[1]=  SpibRegs.SPIRXBUF  ;
   
    GpioDataRegs.GPASET.bit.GPIO16 = 1;   
   
    }                   
                           
                   
void Gpio_select(void)
{

  
    EALLOW;
    GpioCtrlRegs.GPAMUX2.bit.GPIO16= 0x00;
    GpioCtrlRegs.GPADIR.bit.GPIO16 = 1;  
   
    GpioDataRegs.GPASET.bit.GPIO16 = 1;
   
    EDIS;
    
}       
                     
               


     

//===========================================================================
// No more.
//===========================================================================