Hi,
I am try to init both UARTS of CC2652RB.
But only one of the INIT is ok, when one is opened the other won't open. I think there is some kind of conflict but can't figure out.
Here are the codes, init structures etc.
void UART0_init(int first) { volatile int x=0; UART_Params uartParams; /* Create a UART with data processing off. */ UART_Params_init(&uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_RETURN_FULL; uartParams.readEcho = UART_ECHO_OFF; uartParams.readMode = UART_MODE_CALLBACK; uartParams.readCallback = &UART0_readCallback; uartParams.baudRate = 115200; uartParams.writeMode = UART_MODE_CALLBACK; uartParams.writeCallback = &UART0_writeCallback; h_uart_0 = UART_open(CONFIG_UART_0, &uartParams); if (h_uart_0 == NULL) { System_abort("Error opening the UART0"); x=1; } UART_read(h_uart_0, input, 1); //activate a read } void UART1_init(void) { volatile int x=0; UART_Params uartParams1; /* Create a UART with data processing off. */ UART_Params_init(&uartParams1); uartParams1.writeDataMode = UART_DATA_BINARY; uartParams1.readDataMode = UART_DATA_BINARY; uartParams1.readReturnMode = UART_RETURN_FULL; uartParams1.readEcho = UART_ECHO_OFF; uartParams1.readMode = UART_MODE_CALLBACK; uartParams1.readCallback = &UART1_readCallback; uartParams1.baudRate = 115200; uartParams1.writeMode = UART_MODE_CALLBACK; uartParams1.writeCallback = &UART1_writeCallback; h_uart_1 = UART_open(CONFIG_UART_1, &uartParams1); if (h_uart_1 == NULL) { System_abort("Error opening the UART 1"); x=1; } UART_read(h_uart_1, inputx, 1); //activate a read }
Here is the code generated for the structs from SYSCFG, there is no PIN conflict or device conflict.
//ti_drivers_config.c #define CONFIG_UART_COUNT 2 UARTCC26XX_Object uartCC26XXObjects[CONFIG_UART_COUNT]; static unsigned char uartCC26XXRingBuffer0[32]; static unsigned char uartCC26XXRingBuffer1[32]; static const UARTCC26XX_HWAttrsV2 uartCC26XXHWAttrs[CONFIG_UART_COUNT] = { { .baseAddr = UART0_BASE, .intNum = INT_UART0_COMB, .intPriority = (~0), .swiPriority = 0, .powerMngrId = PowerCC26XX_PERIPH_UART0, .ringBufPtr = uartCC26XXRingBuffer0, .ringBufSize = sizeof(uartCC26XXRingBuffer0), .rxPin = IOID_2, .txPin = IOID_3, .ctsPin = PIN_UNASSIGNED, .rtsPin = PIN_UNASSIGNED, .txIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_1_8, .rxIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_4_8, .errorFxn = NULL }, { .baseAddr = UART1_BASE, .intNum = INT_UART1_COMB, .intPriority = (~0), .swiPriority = 0, .powerMngrId = PowerCC26X2_PERIPH_UART1, .ringBufPtr = uartCC26XXRingBuffer1, .ringBufSize = sizeof(uartCC26XXRingBuffer1), .rxPin = IOID_12, .txPin = IOID_13, .ctsPin = PIN_UNASSIGNED, .rtsPin = PIN_UNASSIGNED, .txIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_1_8, .rxIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_4_8, .errorFxn = NULL }, }; const UART_Config UART_config[CONFIG_UART_COUNT] = { { /* CONFIG_UART_0 */ .fxnTablePtr = &UARTCC26XX_fxnTable, .object = &uartCC26XXObjects[0], .hwAttrs = &uartCC26XXHWAttrs[0] }, { /* CONFIG_UART_1 */ .fxnTablePtr = &UARTCC26XX_fxnTable, .object = &uartCC26XXObjects[1], .hwAttrs = &uartCC26XXHWAttrs[1] }, }; const uint_least8_t UART_count = CONFIG_UART_COUNT;