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.

TMS320F28386D: FSIBTX and FSIBRX have problem.

Part Number: TMS320F28386D


Tool/software:

Hi TI

I'm still testing FSI module.

When I test FSI - A channel using "fsi_ex1_loopback_cpucontrol" by TI exampfle.

FSI -A channel is good working.

I change a FSI -A channel to FSI -B channel.

When I run this example, my debug cursor stops in "fsiRxInt2ISR".

__interrupt void fsiRxInt2ISR(void)
{
    rxEventSts = FSI_getRxEventStatus(FSIRXB_BASE);

    fsiRxInt2Received = fsiRxInt2Received + 1U;

    //
    // Clear the interrupt flag and issue ACK
    //
    FSI_clearRxEvents(FSIRXB_BASE,rxEventSts);
    Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP4);

    disableAllFSIInterrupts();

    //
    // INT2 line is set to fire for error events, stop immediately. Error
    // is captured in rxEventSts for debug
    //
    ESTOP0;  <-------------------------------------------------------------------------------------------- STOP HERE ....
}

How do I use FSI channel B (FSITXB, FSIRXB) ?

thank you for reading.

  • Hi Hahmin,

    Are you running internal loopback or external loopback? If external, please connect the wires from TX to Rx on both ways.

    Please double check the GPIO configuration for FSI pins in Sysonfig file.

    Thanks,
    Susmitha

  • Hi Susmitha,

    thank you to reply.

    I was using internal loopback like this:

    FSI_enableRxInternalLoopback(FSIRXB_BASE);

    And I checked the GPIO settings like this:

    // FSI-ch2
    // TX
    GPIO_setMasterCore(108, GPIO_CORE_CPU1);
    GPIO_setMasterCore(106, GPIO_CORE_CPU1);
    GPIO_setMasterCore(107, GPIO_CORE_CPU1);

    GPIO_setPinConfig(GPIO_108_FSITXB_CLK);
    GPIO_setPinConfig(GPIO_106_FSITXB_D0);
    GPIO_setPinConfig(GPIO_107_FSITXB_D1);

    // RX
    GPIO_setMasterCore(112, GPIO_CORE_CPU1);
    GPIO_setMasterCore(110, GPIO_CORE_CPU1);
    GPIO_setMasterCore(111, GPIO_CORE_CPU1);

    GPIO_setPinConfig(GPIO_112_FSIRXB_CLK);
    GPIO_setPinConfig(GPIO_110_FSIRXB_D0);
    GPIO_setPinConfig(GPIO_111_FSIRXB_D1);

    GPIO_setDirectionMode(112, GPIO_DIR_MODE_IN);
    GPIO_setDirectionMode(110, GPIO_DIR_MODE_IN);
    GPIO_setDirectionMode(111, GPIO_DIR_MODE_IN);

    GPIO_setPadConfig(112, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(110, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(111, GPIO_PIN_TYPE_STD);

    GPIO_setQualificationMode(112, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(110, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(111, GPIO_QUAL_ASYNC);

    But I used internal loopback. I think that the GPIO settings are not effect.

    what do I check others?

    thank you for reading.

  • Hi Hahmin,

    Thats right. if using internal loopback, no external wires are needed.

    Please make sure below is set to 0.

    #define EXTERNAL_FSI_ENABLE     0
    One thing, I wanted to check: If you are using control card, please check on GPIO used on control card for FSI.
    Thanks,
    Susmitha
  • Hi Susmitha

    I am not using control card.

    I was mistaken about internal loopback control.
    The manual said the following:

    32.3.6 Internal Loopback
    Figure 32-9 shows the signal connections with internal loopback.
    In this device, there are two FSI transmitter cores (A and B), and eight receiver cores (A, B, C, D, E, F, G, and
    H). When using loopback mode, FSITXA can be used in the loopback mode with FSIRXA, FSIRXB, FSIRXC,
    and FSIRXD. At the same time, FSITXB can be used in loopback mode with FSIRXE, FSIRXF, FSIRXG, and
    FSIRXH.

    So, I made an external connection and set the GPIO settings as follows.

    // FSI-ch2
    // TX
    GPIO_setMasterCore(108, GPIO_CORE_CPU1);
    GPIO_setMasterCore(106, GPIO_CORE_CPU1);
    GPIO_setMasterCore(107, GPIO_CORE_CPU1);

    GPIO_setPinConfig(GPIO_108_FSITXB_CLK);
    GPIO_setPinConfig(GPIO_106_FSITXB_D0);
    GPIO_setPinConfig(GPIO_107_FSITXB_D1);

    // RX
    GPIO_setMasterCore(112, GPIO_CORE_CPU1);
    GPIO_setMasterCore(110, GPIO_CORE_CPU1);
    GPIO_setMasterCore(111, GPIO_CORE_CPU1);

    GPIO_setPinConfig(GPIO_112_FSIRXB_CLK);
    GPIO_setPinConfig(GPIO_110_FSIRXB_D0);
    GPIO_setPinConfig(GPIO_111_FSIRXB_D1);

    GPIO_setDirectionMode(112, GPIO_DIR_MODE_IN);
    GPIO_setDirectionMode(110, GPIO_DIR_MODE_IN);
    GPIO_setDirectionMode(111, GPIO_DIR_MODE_IN);

    GPIO_setPadConfig(112, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(110, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(111, GPIO_PIN_TYPE_STD);

    GPIO_setQualificationMode(112, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(110, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(111, GPIO_QUAL_ASYNC);

    External LoopBack:

    TXB  <----> RXB

    modified:

    When I test

    GPIO(TXB) <----> GPIO(RXB)

    GPIO(TXCLK) <----> GPIO(RXCLK)

    the loopback is working.

    but When I test trough transformer, 

    GPIO(TXB)  - trans <----> trans - GPIO(RXB)

    GPIO(TXCLK) - trans <----> trans - GPIO(RXCLK)

    the loopback is not working.

    I will have to check my schematic and others.

    thank you..

  • Hi Hahmin,

    Please let me know if you need help with reviewing schematics.

    Thanks,

    Susmitha