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.

FRAM configuration issue with RM48

Hi,

I have some problems configuring my FRAM, The FRAM is the model MB85R4002A

Is connected to the CS3, and I have configured the EMIF ASYNC2 the following:

The MPU is configured too as DEVICE

However I get funny things when writing into the FRAM:

I have an array in the FRAM, so I write a byte, I read the byte and I jump to the next byte, so I can check that the FRAM works correctly

for(int i =0; i< END_ADDR-START_ADDR; i ++)
  {
    image += 0x01; 
    // pass the value of the FRAM and to the RAM mirror
    source[i] = image;
    mirror[i] = image;
    // Both should be identic
    for(int y = 0; y <= END_ADDR-START_ADDR; y++)
    {
      if (source[y] != mirror[y])
      {
        while(1)
        {
          i=i;
          y=y;
        }
      }
    }
  } 

Now, starting from the base address 0x64000000

-If I write in byte 0, the byte is copied in byte 0 and 2.
-If I write in byte 1, the byte is copied in byte 1 and 3.
-if I write in byte 2,  the byte is copied in byte 0 and 2, byte 1 and 3 become 0.
-If I write in byte 3, the byte is copied in byte 1 and 3.

The same patter is reapeated over and over, and I can't find where is my mistake.


Could someone give me a hand?


Thanks,

  • Hi,

    Can you pls share the schematics/connections details on the EMIF interface <-> FRAM ?
  • Hi Karthinkeyan,

    Thank you for your reply.

    I can only post the images, as is company confidential information of  commercial product. However I have no problem in send them to you via private message.

    The FRAM is connected to the CS3, then we have a SDRAM in CS0 and a external Flash in CS2, but I have them temporarily disconnected and not intialised.

    FRAM:

    Processor CS and Address

    data

    Any help is always appreciated, I have been using a Logical Analyser and the timing seems correct!

    When toggling from 16bit to 8bit each time I write in a byte[0] the data is copied in the first 4 bytes in the memory.

    To me it seems that is reading or writing twice, so when sends the message to the device instead of send 0x0001(first 2 bytes) and 0x0000(second 2 bytes), it sends 0x0001 and 0x0001, resulting in a mismatch. 


    Regards,

  • Hi,

    Can you pls take a look at the RM48 TRM  - Sec 17.2.6.1(Interfacing to Asynchronous Memory) to be sure you have the async device connected as per the spec.

    Mainly w.r.t BA[1] and DQM's as shown below,

  • Hi Karthik,

    You are right, looks like someone was using the same connection than the SDRAM.

    The analyser confirms what you say,

    Thank you for the information, was very useful.

    Regards,