Same question issued before by Rehan Khan about the DSPI POP Register reading problem

cancel
Showing results for 
Search instead for 
Did you mean: 

Same question issued before by Rehan Khan about the DSPI POP Register reading problem

453 Views
wuxuliang
Contributor II

Hello

  recently, I have encountered the same problem with the DSPI POP Register as Rehan Kehan .The original question issued by Rehan Kehan before, so i quote the detail of the problem as following:

"Hello,

 

We are using DSPI 0 of MPC5645S device. We have configured the module as RXFIFO disable. Following are our configuration.

DSPI_0.MCR.R =0xC0020001;

DSPI_0.MCR.B.DIS_RXF = 1;

DSPI_0.MCR.B.ROOE = 1;

DSPI_0.CTAR[0].R= 0x780A7727;

DSPI_0.CTAR[0].B.CPOL=1;

DSPI_0.CTAR[0].B.CPHA=1;

DSPI_0.RSER.B.RFDF_RE = 0x1;   //enable Rx interrupt

DSPI_0.RSER.B.TCF_RE = 0x1;   //enable Tx interrupt

DSPI_0.MCR.B.HALT=0;       //start the transfers.

 

SIU.PCR[25].R=0x0600; //sclk0

SIU.PCR[24].R=0x0600; //sout0

SIU.PCR[23].R=0x0507; //sin0

SIU.PCR[29].R=0x0E00; //cs1_1

 

This  is my ISR

 

DSPI0ISR(void)

{  

 

  DSPI_0.RSER.B.RFDF_RE = 0;

  receive_dspi_data0 = (uint16_t) DSPI_0.POPR.R;

  DSPI_0.SR.R = DSPI_0.SR.R | 0x80020000;

  receive_flag0 = 1;

  DSPI_0.RSER.B.RFDF_RE = 1;

}

 

The problem is whenever ISR gets triggered. The data in variable receive_dspi_data0 read as zero every time even if the POP register value in debugger window shows valid data. What I have found is, this peripherals are memory mapped registers and the DSPI_0.POP is mapped to address 0xfff90038, when I look into memory window the value at this address is zero, but in debugger window it is valid data. what I observed is it takes time to see the valid data at 0xfff90038. but I cannot read the data by using DSPI_0.POPR.R in one time. That's why I am always getting zero value.

In reference manual it is written that

For compatibility, configure the TLB (MMU table) entry for DSPIx_POPR as guarded.

What does it mean. how to make DSPI_0.POP value to be read in one ISR cycle. what I can do so that value at address 0xfff90038 becomes valid data as soon program enters the receive ISR.

 

Please help

"

the answer to this problem seems didn't work,so i wonder if there is some configurations i missed, pls help!

0 Kudos
1 Reply

80 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi,

I'm not sure what's going on but - have you checked if the RFDF flag is set when reading the POPR register? Do you use correct interrupt vector? Have you tried to use polling method? Make sure that the DSPI_POPR register is not read by debugger (close memory window or DSPI registers during test...).

Regards,

Lukas

0 Kudos