MPC5777M LINFlexD can not enter RXI handle function

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MPC5777M LINFlexD can not enter RXI handle function

548 Views
underdangerous
Contributor II

Hi, community:
Recently, I have been developing the LINFlexD module of MPC5777M using example code from the community. However, during the process of using it, I found that the LINFlexD module has already generated interrupt requests as a slave (with RXI: DRF and DRIE flags asserted), but did not enter the interrupt exit function as expected. I have modified the corresponding interrupt priority and core according to the requirements of S32DS for PA, The name of the interrupt function has been modified in the corresponding interrupt vector of the exception Interrupt vector table. I hope your can help me!

0 Kudos
Reply
2 Replies

524 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

I tried your example on MPC5777M EVB and if doing connection mentioned in code I can see master/slave exchange data properly. Both slave's TX/RX interrupts are called.

BR, Petr

0 Kudos
Reply

535 Views
prakashram72
Contributor III

Hi @underdangerous 

Based on your description, it seems like you have done the necessary steps to set up the LINFlexD module and the interrupt vector table. However, there are a few things you might want to check:

  • Ensure that the interrupt controller is properly configured and enabled. The interrupt controller is responsible for managing the interrupts and dispatching them to the correct handlers.
  • Check if the LINFlexD module is properly initialized. This includes setting up the LINFlexD module for the correct mode (in your case, slave mode), setting up the baud rate, enabling the necessary interrupts, and so on.
  • Verify that the interrupt handler function is correctly defined and registered in the interrupt vector table. The function name in the interrupt vector table should match exactly with the function definition in your code.

Here is a code snippet that shows how to set up the LINFlexD module and the interrupt vector table:

 // Initialize LINFlexD module void LINFlexD_Init(void) {   // Set LINFlexD module to slave mode   LINFlexD->LINCR1 = 0x00000001;
// Set baud rate LINFlexD->LINIBRR = 0x0000000F; LINFlexD->LINFBRR = 0x0000000F;
// Enable RXI interrupt LINFlexD->LINIER = 0x00000004; }
// Define RXI interrupt handler void LINFlexD_RXI_Handler(void) { // Handle RXI interrupt }
// Register RXI interrupt handler in interrupt vector table void Interrupt_Vector_Table_Init(void) { // Register LINFlexD_RXI_Handler in interrupt vector table Interrupt_Vector_Table[LINFlexD_RXI_IRQn] = LINFlexD_RXI_Handler; }

 

For more detailed information, you can refer to the LINFlexD Module Overview and Programming article on the community.nxp.com website.

0 Kudos
Reply