Part Number: TMDSEVM572X
Tool/software: TI-RTOS
Hi,
I am working with GP EVMAM572x
PDK: pdk_am57xx_1_0_5
RTOS: processor_sdk_rtos_am57xx_3_02_00_05
I configure UART3 to read data in callback mode or interrupt mode, for this i did following modification in NIMU basic example project.
1. initialise UARTa as follows
void InitialiseUART_3()
{
int32_t addrScanPrompt;//,byterd;
//char HeadingMark_1, prv_HeadingMark_1;
//UART_Handle uart = NULL;
UART_Params uartParams;
/* UART SoC init configuration */
UART_HwAttrs uart_cfg;
//SemaphoreP_Params semParams;
UART_init();
/***************************************UART_In_Callback();***************/
/* Create call back semaphore */
/*UART_osalSemParamsInit(&semParams);
semParams.mode = SemaphoreP_Mode_BINARY;
callbackSem = UART_osalCreateBlockingLock(0, &semParams);*/
/* Get the default UART init configurations */
UART_socGetInitCfg(UART_INSTANCE, &uart_cfg);
uart_cfg.edmaHandle = NULL;
uart_cfg.dmaMode = FALSE;
uart_cfg.loopback = FALSE;
UART_socSetInitCfg(UART_INSTANCE, &uart_cfg);
/* Set callback mode for read */
UART_Params_init(&uartParams);
uartParams.baudRate = 76800;
uartParams.parityType= UART_PAR_EVEN;
uartParams.readCallback = UART_callback;
uartParams.readMode = UART_MODE_CALLBACK;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
/*uartParams.writeCallback = NULL;
uartParams.writeMode = UART_MODE_CALLBACK;*/
uart = UART_open(UART_INSTANCE, &uartParams);
if (uart == NULL)
{
// goto Err;
}
/*************************************************************************/
Task_sleep(100);
addrScanPrompt= (int32_t)scanPrompt;
if(UART_read(uart, (void *)addrScanPrompt,INPUT_LENGTH)==UART_ERROR)
{
//goto Err;
}
Task_sleep(100);
}
2. written a callbackfunction
void UART_callback(UART_Handle handle, void *buf, size_t count)
{
A_Cnt=A_Cnt+count;
NextSerialData=1;
}
3. Call a read function in task while loop
void Read_A_Cnt()
{
if(NextSerialData)
{
NextSerialData=0;
/*UART_putNum_Anjana(A_Cnt);
UART_write(uart, &scanPrompt,5); //Task_sleep(100);*/
//Semaphore_pend( callbackSem, BIOS_WAIT_FOREVER );
//memset(scanPrompt, 0, sizeof(scanPrompt));
addrScanPrompt_1= (int32_t)scanPrompt;
UART_read(uart, (void *)addrScanPrompt_1,INPUT_LENGTH);
//UART_osalPendLock(callbackSem, SemaphoreP_WAIT_FOREVER);
if(A_Cnt <=500)
{A_Cnt =0;}
}
}
But after some time the execution hangs. i am Not able to identify the issue. Please help me to identify. Is it the issue with UART3 as it has been used as debug port by default?
Thanks,
Anjana Pathak