This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6424 I2C, MCBSP,UART need initialization sample



 

I'm use evm6424_1_01_00_16, bios_5_31_07, CCS3.3

Need sample to init :I2C: PSP_OPMODE_INTERRUPT
MCBSP,UART: PSP_OPMODE_DMAINTERRUPT

 Standard examples (in evm6424_1_01_00_16) are not satisfied because the polled mode is not suitable.

My unsuccessful attempts:

 UARTMD_DevParams Uart_DevParams =
{
/** Driver operation mode */
PSP_OPMODE_DMAINTERRUPT,
/** Sync mode enabled */
TRUE,
/** Default input module clock */
PSP_UART_MODULE_CLOCK,
/** Edma handle */
NULL
};

UartPortObj UartPortObj1;

extern "C" Bool UART_INIT(void)
{
EDMA3_DRV_Result edmaResult = 0;
Int32 echoTskStatus = 0;
GIO_Attrs gioAttrs = GIO_ATTRS;
memset (&UartPortObj1, 0, sizeof(UartPortObj));
   UartPortObj1.dda_PortObj.device.ddcObj.opMode = PSP_OPMODE_DMAINTERRUPT;
   if (NULL == hEdma)
{
edmaResult = edma3init();
if (edmaResult != EDMA3_DRV_SOK)
{
/* Report EDMA Error */
PSP_DEBUG("\r\nEDMA3 : edma3init() failed\r\n");
}
else
{
PSP_DEBUG("\r\nEDMA3 : edma3init() passed\r\n");
}
}

/* Power up settings for UART0
* UR0DAT = 1: VDD3P3VPWDN - bit 10
*/
sysModuleRegs->VDD3P3VPWDN &= (~(0x400u));
/* Pinmux setting for UART0
* UR0DBK = 01 : PINMUX1 - bit 9:8
* UR0FCBK = 01: PINMUX1 - bit 11:10
*/
sysModuleRegs->PINMUX1 &= (0xFFFFF5FFu);
sysModuleRegs->PINMUX1 |= (0x00000500u);

/* Pinmux setting for UART1
* TIM1BK = 10 : PINMUX1 - bit 21:20
*/
Uart_DevParams.hEdma = hEdma;
UartPortObj1.dda_PortObj.device.ddcObj.hEdma = hEdma;
   //----
hUart_OUT = GIO_create("/UART0",IOM_OUTPUT,NULL,NULL,&gioAttrs);
hUart_IN = GIO_create("/UART0",IOM_INPUT,&echoTskStatus,NULL,&gioAttrs);
if((NULL == hUart_IN)||(NULL == hUart_OUT))
{
PSP_DEBUG("ERROR: Initialization of UART failed\n");
return FALSE;
}
}

Programm fail at dda_uartBiosIom.c:uart_mdCreateChan->_DDC_uartEnableEdmaChan()->EDMA3_DRV_requestChannel-> edma3.c:EDMA3_RM_allocResource(when called second time. line number - 907)->

 semResult = edma3OsSemTake(rmInstance->initParam.rmSemHandle, EDMA3_OSSEM_NO_TIMEOUT);