s32k144 UART Callback

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

s32k144 UART Callback

4,997件の閲覧回数
heezes
Contributor II

Hello i'm using Uart communication in s32k144 in interrupt mode with the sdk generated by Processor Expert. I'm trying to use the Callback function for receiving data and send data continuously in while loop. The code stops transmitting after 4 bytes and niether does it receives. Code snippet below:

 void ThisIsMyRXCallback(void *driverState, uart_event_t event, void *userData)
{
    PINS_DRV_TogglePins(PTD,(LED15));
}

int main(void)
{
CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
    CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_FORCIBLE);
    INT_SYS_InstallHandler(LPIT0_Ch0_IRQn,&LPIT_ISR,(isr_t *)0);
    LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0);
    LPUART_DRV_ReceiveData(INST_LPUART1,(uint8_t *)&datas,1);
    LPUART_DRV_InstallRxCallback(INST_LPUART1,ThisIsMyRXCallback,NULL);
    LPIT_DRV_Init(INST_LPIT1, &lpit1_InitConfig);
    LPIT_DRV_InitChannel(INST_LPIT1, 0, &lpit1_ChnConfig0);
    LPIT_DRV_StartTimerChannels(INST_LPIT1,(1<<0));
    PINS_DRV_Init(NUM_OF_CONFIGURED_PINS,g_pin_mux_InitConfigArr);
    PINS_DRV_SetPinsDirection(PTD,(LED15));
    PINS_DRV_SetPins(PTD,LED15);
  /* For example: for(;;) { } */
    for(;;)
    {
        uint8_t data[20] = "Hello World\r\n";
        LPUART_DRV_SendData(INST_LPUART1,(const uint8_t *)&data,strlen(data));
        Delay(500);
    }

}

5 返答(返信)

3,180件の閲覧回数
kasundinesh
Contributor II

I was able to solve this issue by using the code below. 

status = UART_Init(&lpuart1_uart_instance, &lpuart1_uart_Config0);

// After calling UART_Init, you need to tell the driver to listen for a single byte
status = UART_ReceiveData(&lpuart1_uart_instance, &g_rx_byte, 1);

At the interrupt service routine.....

void on_byte_received(void *driverState, uart_event_t event, void *userData)
{
   if(event == UART_EVENT_RX_FULL)
   {
      packet_decoder(g_rx_byte);

      // After you got the byte, tell the driver to listen for more bytes. Dont use the UART_ReceiveData. 

     // Use UART_SetRxBuffer insted.
      UART_SetRxBuffer(&lpuart1_uart_instance, &g_rx_byte, 1);
   }
}

Sorry for the late reply

3,181件の閲覧回数
heezes
Contributor II

Hi, would like to tell that the issue is resolved it was probably a hardware error.

Regards.

Altamash

3,181件の閲覧回数
kasundinesh
Contributor II

HI, I have the same problem. How did you resolve it? Because there is the bug in the driver.

0 件の賞賛
返信

3,181件の閲覧回数
jiri_kral
NXP Employee
NXP Employee

Hi, 

do you have some data consumer/sender on the other side - like some PC application that is receiving and transmitting data to EVB? 

Jiri 

0 件の賞賛
返信

3,181件の閲覧回数
heezes
Contributor II

Yes I'am manually sending data via a serial terminal Real Term.

Regards.

Altamash.

0 件の賞賛
返信