MPC5777M LINFlexD can not enter RXI handle function

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

MPC5777M LINFlexD can not enter RXI handle function

493 次查看
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 项奖励
回复
2 回复数

469 次查看
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 项奖励
回复

480 次查看
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 项奖励
回复