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.

RM48L952: EMIF_Interface

Part Number: RM48L952
Other Parts Discussed in Thread: HALCOGEN

Hi,

We have used FIDO5200 EtherCAT chip interfacing with RM48L952 MCU with 16 bit host bus interface,

The FIDO5200 chip has 4 bit address line A02,A03,A04,A05 those pin we have connected with A2,A3,A4,A5 line of RM48L952 device.

In user manual of RM48 device i could see  , LSB bit of Address sent through EMIF_BA[1],

In our case not used EMIF_BA[1] pin for connection.

Could you please clarify Our FIDO5200 host bus interface does it need EMIF_BA[1]  to connect on A02,

Block diagram and pin connection attached in the attachment .RM48L952_EMIF_ASYNC_07_feb.pdf

Regards,

Ganesh V

  • Hi Ganesh,

    The signal mapping should be:

    RM48Lx                              FODO5200

    EMIF_A[0]                            A02

    EMIF_A[1]                            A03

    EMIF_A[2]                            A04

    EMIF_A[3]                            A05

    The RM48Lx EMIF address pin EMIF_A[0] always provides the least significant bit of a 32-bit word address. 

    EMIF_BA[1] is not used.

  • Hi Wang,

    The FIDO5200 EtherCAT is a 16 bit asynchronous device as mentioned in RM48Lx TRM for 16bit device below connection need to be done in that EMIF_BA[1} pin is used  

    could you please reconfirm we need to use address line from EMIF_BA[1]  and EMIF_A[0:2] or as you mentioned above.

    Regards

    Divyanshu

  • Hi Divyanshu,

    FIDO5200 address is 32-bit aligned, meaning that the addresses increment by four bytes (A05 to A02). RM48Lx EMIF_A[0] is the LSB of a 32-bit address. 

    So EMIF_A[0] is mapped to FIDO_A[2].

    BA1 and BA0 are not used.

  • Thanks Wang 

    Now it is clear

  • Hi Wang,

    we have done the below connection and configured EMIF ASYnc1 using HalCOGen and trying to read the registers of REM switch(FIDO5200) but not getting any response every time getting 0x00. could you please review the settings and guide us if anything missed.

     The signal Mapping

    RM48Lx                              FODO5200

    EMIF_A[0]                            A02

    EMIF_A[1]                            A03

    EMIF_A[2]                            A04

    EMIF_A[3]                            A05

    HalCOGEN configuration 

    we tried below code to read the register and below image observed on scope

    #define REMS_BASE_ADDRESS  0x60000000

    #define REMS_ADDR_SHIFT 2

    #define REMS_READ_REG_DIR(addr) *(volatile uint16_t *)(addr)

    #define REMS_Queue_Status_Reg                  REMS_BUILD_REG_ADDR(8)

    #define REMS_BUILD_REG_ADDR(offset) ((uint32_t *)(((REMS_BASE_ADDRESS) + (offset << (REMS_ADDR_SHIFT+2)))))

    void ECATREAD()

    {

    emif_ASYNC1Init();

    uint16t Temp

    Temp = REMS_READ_REG_DIR(REMS_Queue_Status_Reg);

    Uprintf("\r\n%d", Temp);

    }

    only address line EMIF_A[2} transition observed and other address lines are zero.

    Regards

    Divyanshu

  • EMIF_A[0] --> mapped to 2nd bit of the memory address      0x6000_0004

    EMIF_A[1] --> mapped to 3nd bit of the memory address      0x6000_0008

    EMIF_A[2] --> mapped to 4nd bit of the memory address       0x6000_0010

    EMIF_A[3] --> mapped to 5nd bit of the memory address       0x6000_0020

     REMS_BUILD_REG_ADDR(8) = 8 << 4 --> 0x80   do you think this offset is in the valid memory range of FIDO52000. I don't know FIDO5200 at all.

  • Hi wang,

    0x80 is not in the range memory range of FIDO5200.

    FIDO5200 Register offset range from 0x00 to 0x3c so i have to change the  REMS_ADDR_SHIFT 2->0 to properly map the address.

    The above information was useful.

  • Is the issue solved?

  • Hi wang,

    No issue still not resolved. still we are reading zero

    we observed when we are doing read operation or write operation. Address pins changes but it is not coming to original state.

    for example for address 0x60000020 A[3] pins goes high and other pins low. A[3] pins remains high even after cs pin  becoming high

    please find the attached picture for reference

    could you please suggest what can be the reason for that

    Regards

    Divyanshu

  • It is ok for A[3] to keep HIGH after CS becomes HIGH (de-asserted). The important parameters are the output setup time and hold time for A[2].

    After you write a number to FIDO5x, can you read it back?