This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Keil Memory window not updating

Im using LPC1778 to simulate SSP1. The usermanual states that DR for SSP1 is at address 0x40030008. When I transmit data, I immediately receive data into the receive buffer(RNE flag in status register gets set) and also the value loaded into DR shown by Keil is not the value loaded by me into the DR.

//Send data
U8 spi_send(U8 bChannelNo,U8 *pBufferPtr,U8 bLength)
{
        U8 bDummy=0;
        U8 bReturn_val=0;
        bDummy++;
        bDummy=0;

        switch(bChannelNo)
        {
                case 0:
                        ssp_12=LPC_SSP0;
                break;

                case 1:
                        ssp_12=LPC_SSP1;
                break;

                case 2:
                        ssp_12=LPC_SSP2;
                break;

                default:
                        ssp_12=LPC_SSP0;
                break;
        }

        set_timeout2(10000);
        do
        {
                if(!(ssp_12->SR & (1<<4))) /*not busy*/
                {
                        if(ssp_12->SR & (1<<1)) /*tnf*/
                        {
                                ssp_12->DR=*pBufferPtr;
                                pBufferPtr++;
                                bLength--;
                        }
                }
        }while(((LPC_TIM2->TC) < (LPC_TIM2->MR1)) && ((LPC_TIM2->TC) != (LPC_TIM2->MR1)) && (bLength != 0));

        if(bLength==0)
        {
                bReturn_val=1;
        }
        return bReturn_val;

}

//receive

U8 spi_receive(U8 bChannelNo,U8 bLength,U8 *pRxDataBuff)
{
        U8 bReturn_val=0;
        U8 bLoc=0;
        switch(bChannelNo)
        {
                case 0:
                        ssp_12=LPC_SSP0;
                break;

                case 1:
                        ssp_12=LPC_SSP1;
                break;

                case 2:
                        ssp_12=LPC_SSP2;
                break;

                default:
                        ssp_12=LPC_SSP0;
                break;
        }

        set_timeout2(10000);
        do
        {

                if(!(ssp_12->SR & (1<<4))) /*not busy*/
                {
                        if(ssp_12->SR & (1<<2)) /*rne*/
                        {
                                pRxDataBuff[bLoc]=ssp_12->DR;
                                bLength--;
                                bLoc++;
                        }
                }
        }while(((LPC_TIM2->TC) < (LPC_TIM2->MR1)) && ((LPC_TIM2->TC) != (LPC_TIM2->MR1)) && (bLength != 0));

        if(bLength==0)
        {
                bReturn_val=1;
        }
        return bReturn_val;
}

I used CMSIS driver examples for lpc1778 but still data is immediately received on sending and memory address doesnt contain the tx data. Why is Keil doing that?

Parents
  • As per the SPI specs obtained from motorola, the timing diagram shows that when master transmits out a data(MOSI),the MISO receives data at the same instant. Is it because of that that the RNE flag gets set whenever i transmit a data?

Reply
  • As per the SPI specs obtained from motorola, the timing diagram shows that when master transmits out a data(MOSI),the MISO receives data at the same instant. Is it because of that that the RNE flag gets set whenever i transmit a data?

Children