Quantcast
Channel: Processors forum - Recent Threads
Viewing all articles
Browse latest Browse all 17527

Slave Boot – Booting From an External Master Host

$
0
0

Hi

I am trying to boot Dsp from as a slave device as mentioned in the boot section

7 of Using the OMAP-L1x7 Bootloader

I am trying to implement the protocol that is as specified in the datasheet,which says

  • Start-word synchronization (SWS),
  • Ping Op-code synchronization (POS) and
  • Op-code synchronization (OS).
  • Needs to be implemented 
  • I have a Mcu controller that acts as a Master(MCUSM470RIBIM)  & DSP OMAPL137
  • Dsp is selected to boot from spi slave 0 and corresponding pins on the line is set accordingly
  • On the Mcu side our application tries to communicate with ,HERE (on MCU SPI2) that is connected to SPI0 SLAVE ON DSP
  • The clock frequency of spiclock on MCU is 1 MHZ    
  • the following is the implementation done on MCU side to send the XMT_START and recieve RCV_START
    ///////////////////////////
    
    #define XMT_START_H 0X5853   ----->opcode to send start transfer
    
    #define RECV_START     0X5253  ----->opcode received Ack  
    while(1)
    { 
    for(x=0;x<1;x++) // TRYING TO TRANSFER ONCE 
    {
    sleep(400000);  THIS PROVIDES A DELAY OF 2SEC
    sws_value = sws_synchronisaton_spi2(0x5853);  TRYING TO WRITE THE VALUE OF XMT_START
    send_int(sws_value);// PRINT THE VALUE ON CONSOLE
    }
    if(sws_value == RECV_START)
    {
    break;
    }
    for(x=0;x<1;x++)
    {
    sleep(200000); 
    sws_value = sws_synchronisaton_spi2(0xFFFF);   /// TRYING TO READ BACK IF DATA IS PRESENT BY WRITING FFFF SO THAT IT DOESENT STARTING PROCESSING AGAIN THINKING ITS 0X5853
    send_int(sws_value);
    }
    if(sws_value == RECV_START)
    {
    break;
    }
    sleep(200);
    }
    
     //////////////////////////
    int sws_synchronisaton_spi2(unsigned short cmd_data)
    {
    int val;
    int i;
    unsigned short data = 0;
    //------------------------------------------------------------------------------------ 
    SPI2PC3 &= 0xFFEF; // CS Pin is made LOW 
    for(i=0;i<1;i++)
    {
    SPI2DAT1 = cmd_data; // This is just a dummy read. No affect on this
    sleep(5);
    }
    // SPI2PC3 |= 0x0010; // CS Pin is made HIGH*/
    // sleep(5);
    //------------------------------------------------------------------------------------*/ 
    
    //-------------------------------------------------------------------------------------- 
    // SPI2PC3 &= 0xFFEF; // CS Pin is made LOW
    sleep(5);
    while(!(SPI2CTRL3_bit.RXINTFLAG & 0x1));
    data = SPI2BUF;
    sleep(50);
    SPI2PC3 |= 0x0010; // CS Pin is made HIGH
    return data;
    }

I have searched different forums and different approach for sending the command 0x5853 IN FOR AND WHILE LOOP and receiving I always end up in 0XFFFF

  Here i am trying to send the the XMT_START 0X5853 which has to be transmitted and receive  RECV_START 0x5253

I am able to send the data on the MOSI line (MASTER OUT SLAVE IN)  and the proper value appears on CRO but I am not able to get back any response

from the DSP it always gives 0XFFFF as output .

I have also refereed to the atuil.cs file that does   the uART  transmission,

 What could be the proper approach ?

Where could i be going wrong??


Viewing all articles
Browse latest Browse all 17527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>