TMS320F2800157:LIN-SCI MODE 無法進入接收中斷

Part Number: TMS320F2800157
Other Parts Discussed in Thread: C2000WARE

各位先進好,目前使用LIN-SCI MODE 無法進入接收中斷(已先使用LOOPBACK 測試接收時可進入中斷),目前BAUDRATE設定為19200,是否為設定上有誤,煩請協助,謝謝。

程式碼如下:

void InitLinAGpio(void)
{
    EALLOW;
    GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;     // Enable pullup on GPIO46
    GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;
    GpioCtrlRegs.GPAGMUX2.bit.GPIO28 = 0x3; // GPIO28 = LIN-SCI TX
    GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0x3;  // GPIO28 = LIN-SCI TX
    GpioCtrlRegs.GPADIR.bit.GPIO28 = 1;     // 1 is an output

   
    GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;     // Enable pullup on GPIO47
    GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 3;
    GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 0x3; // GPIO29 = LIN-SCI RX
    GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0x3;  // GPIO29 = LIN-SCI RX
    GpioCtrlRegs.GPADIR.bit.GPIO29 = 0;     // 0 is an input
    EDIS;
}

//========================================================================
// SCIA Init
//========================================================================
void InitLinA(void)
{
    InitLinAGpio();

    EALLOW;

    LinaRegs.SCIGCR0.bit.RESET = 1;
    LinaRegs.SCIPIO0.bit.TXFUNC = 1;
    LinaRegs.SCIPIO0.bit.RXFUNC = 1;

    LinaRegs.SCIGCR1.bit.SWnRST = 0;                    // Enter LIN reset state to perform configurations


    LinaRegs.SCIGCR1.bit.LINMODE = 0;                   // SCI mode
    LinaRegs.SCIGCR1.bit.TIMINGMODE = 1;                // asyn mode , Should be set to 1 for SCI mode.
    LinaRegs.SCIGCR1.bit.CLK_Master = 1;                // Enable clock to the SCI module.
    LinaRegs.SCIGCR1.bit.COMMMODE = 0;                  // Idle line mode
    LinaRegs.SCIGCR1.bit.STOP = 0;                      // 1 stop bit
    LinaRegs.SCIGCR1.bit.PARITYENA = 0;                 // Disable parity check
    LinaRegs.SCIGCR1.bit.MBUFMODE = 0;                  // Disable multi-buffer mode
    LinaRegs.SCIGCR1.bit.CONT = 1;                      // Continue on suspend

    LinaRegs.SCIFORMAT.bit.CHAR = 0x7;                  // Set character length as 8-bits
    LinaRegs.SCIFORMAT.bit.LENGTH = 0x0;                // Set to 1 character in response field
   
    LinaRegs.SCIGCR1.bit.LOOPBACK =0;                   // Enable Internal Loopback mode
 

    LinaRegs.BRSR.bit.SCI_LIN_PSL = 389;
    LinaRegs.BRSR.bit.M = 10;                           // BAUDRATE = 19200

    LinaRegs.SCIGCR1.bit.TXENA = 1;                     // Enable Transmitter
    LinaRegs.SCIGCR1.bit.RXENA = 1;                     // Enable Receiver

    LinaRegs.SCICLEARINT.all = LIN_INT_ALL;             // Clear all interrupts
    LinaRegs.SCISETINT.bit.SETRXINT = 1;                // Enable RX Interrupt
    LinaRegs.SCICLEARINTLVL.bit.CLRRXINTLVL = 1;        // Set the interrupt priority to line 0 (high)

    LinaRegs.LIN_GLB_INT_EN.bit.GLBINT0_EN= 1;          // Enable LIN0 RX Interrupt
    LinaRegs.LIN_GLB_INT_CLR.bit.INT0_FLG_CLR = 1;      // Clear LIN0 RX Interrupt Flag

    LinaRegs.SCIGCR1.bit.SWnRST = 1;                    // Exit LIN reset state

    EDIS;
}

void main(void)
{
    Device_init();

    Device_initGPIO();

    Interrupt_initModule();

    Interrupt_initVectorTable();

    InitPieVectTable();

    InitCpu1Gpio();
    InitLinA();
    IER |= M_INT6;
    PieCtrlRegs.PIEIER6.bit.INTx5 = 1;          // Enable 6.5 - LINA_0 Interrupt
    EINT;
    ERTM;
 
 
    for(;;)
    {
       
        SCIA_Tx_Data_routine();
        SCIA_Process();
    }
}

interrupt void LINA_0_ISR(void)
{
    DINT;

    INT_SCIARx();

    LinaRegs.LIN_GLB_INT_CLR.bit.INT0_FLG_CLR = 1; // Clear LIN0 RX Interrupt
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP6;
    EINT;

}