TMS320F280039: 想通过LIN中断实现数据收发,但LIN中断无法进入

Part Number: TMS320F280039

我写了如下代码进行配置(部分省略),想通过LIN中断实现数据收发,用串口助手发送指令,MCU无法收到,LinaRegs.SCIRD中无数据,但LinaRegs.SCIFLR.bit.RXRDY被置1,接收中断未进入,请问是什么原因?

GPIO配置:

void InitSciaGpio(void)
{
EALLOW;

ClkCfgRegs.LOSPCP.bit.LSPCLKDIV=4; //低速时钟8分频
//------------------------------------
// SCI模块复用,预留使用
//------------------------------------
GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up for GPIO23 (SCIRXDB)
GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up for GPIO22 (SCITXDB)
GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 3; // Asynch input GPIO23 (SCIRXDB)
GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3;

GpioCtrlRegs.GPAGMUX2.bit.GPIO22 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1;
GpioCtrlRegs.GPAGMUX2.bit.GPIO23 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1;

GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0; // Configure GPIO41, RTS
GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1; // output
GpioDataRegs.GPBDAT.bit.GPIO41 = 0; // Receive

EDIS;
}

LIN配置:

 LIN_initModule(LINA_BASE);

LinaRegs.SCIGCR1.bit.SWnRST = 0; //Into software reset

//SCI Configurations
LinaRegs.SCIGCR1.bit.COMMMODE = 0; //Idle-Line Mode
LinaRegs.SCIGCR1.bit.TIMINGMODE = 1; //Asynchronous Timing
LinaRegs.SCIGCR1.bit.PARITYENA = 0; //No Parity Check
LinaRegs.SCIGCR1.bit.PARITY = 0; //Odd Parity
LinaRegs.SCIGCR1.bit.STOP = 0; //One Stop Bit
LinaRegs.SCIGCR1.bit.CLK_MASTER = 1; //Enable SCI Clock
LinaRegs.SCIGCR1.bit.LINMODE = 0; //SCI Mode
LinaRegs.SCIGCR1.bit.SLEEP = 0; //Ensure Out of Sleep
LinaRegs.SCIGCR1.bit.MBUFMODE = 0; //Buffered Mode
LinaRegs.SCIGCR1.bit.RXENA = 1; //Enable RX
LinaRegs.SCIGCR1.bit.TXENA = 1; //Enable TX

//Ensure IODFT is disabled
LinaRegs.IODFTCTRL.bit.IODFTENA = 0x0;

//Set transmission length
LinaRegs.SCIFORMAT.bit.CHAR = 7; //Eight bits
LinaRegs.SCIFORMAT.bit.LENGTH = 0; //One bytes
Uint16 P;
//Set baudrate
LinaRegs.BRSR.bit.M = 0x9; // 120MHz,设置波特率为115200。
LinaRegs.BRSR.bit.SCI_LIN_PSL = 0x1F;//31;


LinaRegs.SCISETINT.bit.SETRXINT = 1;
LinaRegs.SCISETINT.bit.SETTXINT = 1;

LinaRegs.SCISETINTLVL.bit.SETRXINTOVO = 0;
LinaRegs.SCISETINTLVL.bit.SETTXINTLVL = 1;
LinaRegs.SCIGCR1.bit.SWnRST = 1; //bring out of software reset

//Disable write to protected registers
EDIS;

中断使能:

PieVectTable.LINA_0_INT = &LINAint0_Isr;//接收
PieVectTable.LINA_1_INT = &LINAint1_Isr;//发送

PieCtrlRegs.PIEIER8.bit.INTx10 = 1;
PieCtrlRegs.PIEIER8.bit.INTx10 = 1;

PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block,使能PIE模块
IER |= M_INT8;