UARTCC26X2.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2021, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
345 #ifndef ti_drivers_uart_UARTCC26X2__include
346 #define ti_drivers_uart_UARTCC26X2__include
347 
348 #include <stdint.h>
349 #include <stdbool.h>
350 
351 #include <ti/drivers/dpl/ClockP.h>
352 #include <ti/drivers/dpl/HwiP.h>
353 #include <ti/drivers/dpl/SemaphoreP.h>
354 #include <ti/drivers/dpl/SwiP.h>
355 #include <ti/drivers/Power.h>
356 #include <ti/drivers/UART.h>
357 #include <ti/drivers/GPIO.h>
359 
360 #ifdef __cplusplus
361 extern "C" {
362 #endif
363 
367 #define UARTCC26X2_FLOWCTRL_NONE 0
368 
372 #define UARTCC26X2_FLOWCTRL_HARDWARE 1
373 
384 /* Add UARTCC26X2_STATUS_* macros here */
385 
405 #define UARTCC26X2_CMD_RETURN_PARTIAL_ENABLE (UART_CMD_RESERVED + 0)
406 
414 #define UARTCC26X2_CMD_RETURN_PARTIAL_DISABLE (UART_CMD_RESERVED + 1)
415 
422 #define UARTCC26X2_CMD_RX_FIFO_FLUSH (UART_CMD_RESERVED + 2)
423 
427 #define UARTCC26X2_FIFO_SIZE 32
428 
440 typedef enum
441 {
449 
460 typedef void (*UARTCC26X2_ErrorCallback)(UART_Handle handle, uint32_t error);
461 
462 /* UART function table pointer */
464 
537 typedef struct
538 {
540  uint32_t baseAddr;
542  int intNum;
544  uint8_t intPriority;
550  uint32_t swiPriority;
552  uint32_t flowControl;
554  unsigned char *ringBufPtr;
556  size_t ringBufSize;
558  uint8_t rxPin;
560  uint8_t txPin;
562  uint8_t ctsPin;
564  uint8_t rtsPin;
566  UARTCC26X2_FifoThreshold txIntFifoThr;
568  UARTCC26X2_FifoThreshold rxIntFifoThr;
572 
578 typedef struct
579 {
580  /* UART state variable */
581  struct
582  {
583  bool opened:1; /* Has the obj been opened */
584  UART_Mode readMode:1; /* Mode for all read calls */
585  UART_Mode writeMode:1; /* Mode for all write calls */
586  UART_DataMode readDataMode:1; /* Type of data being read */
587  UART_DataMode writeDataMode:1; /* Type of data being written */
588  UART_ReturnMode readReturnMode:1; /* Receive return mode */
589  UART_Echo readEcho:1; /* Echo received data back */
590  /*
591  * Flag to determine if a timeout has occurred when the user called
592  * UART_read(). This flag is set by the timeoutClk clock object.
593  */
594  bool bufTimeout:1;
595  /*
596  * Flag to determine when an ISR needs to perform a callback; in both
597  * UART_MODE_BLOCKING or UART_MODE_CALLBACK
598  */
599  bool callCallback:1;
600  /*
601  * Flag to determine if the ISR is in control draining the ring buffer
602  * when in UART_MODE_CALLBACK
603  */
604  bool drainByISR:1;
605  /* Keep track of RX enabled state set by app with UART_control() */
606  bool ctrlRxEnabled:1;
607  /* Flag to keep the state of the read Power constraints */
608  bool rxEnabled:1;
609  /* Flag to keep the state of the write Power constraints */
610  bool txEnabled:1;
611  } state;
612 
613  HwiP_Struct hwi; /* Hwi object for interrupts */
614  SwiP_Struct readSwi; /* Swi for read callbacks */
615  SwiP_Struct writeSwi; /* Swi for write callbacks */
616  ClockP_Struct timeoutClk; /* Clock object to for timeouts */
617  uint32_t baudRate; /* Baud rate for UART */
618  UART_LEN dataLength; /* Data length for UART */
619  UART_STOP stopBits; /* Stop bits for UART */
620  UART_PAR parityType; /* Parity bit type for UART */
621  uint32_t status; /* RX status */
622 
623  /* UART read variables */
624  RingBuf_Object ringBuffer; /* local circular buffer object */
625  unsigned char *readBuf; /* Buffer data pointer */
626  size_t readSize; /* Desired number of bytes to read */
627  size_t readCount; /* Number of bytes left to read */
628  SemaphoreP_Struct readSem; /* UART read semaphore */
629  unsigned int readTimeout; /* Timeout for read semaphore */
630  UART_Callback readCallback; /* Pointer to read callback */
631  bool readRetPartial; /* Return partial RX data if timeout occurs */
632 
633  /* UART write variables */
634  const unsigned char *writeBuf; /* Buffer data pointer */
635  size_t writeSize; /* Desired number of bytes to write*/
636  size_t writeCount; /* Number of bytes left to write */
637  SemaphoreP_Struct writeSem; /* UART write semaphore*/
638  unsigned int writeTimeout; /* Timeout for write semaphore */
639  UART_Callback writeCallback; /* Pointer to write callback */
640 
641  /* For Power management */
643  unsigned int powerMgrId; /* Determined from base address */
645 
646 #ifdef __cplusplus
647 }
648 #endif
649 
650 #endif /* ti_drivers_uart_UARTCC26X2__include */
UART_STOP
UART stop bit settings.
Definition: UART.h:530
size_t readSize
Definition: UARTCC26X2.h:626
UARTCC26X2 Object.
Definition: UARTCC26X2.h:578
Definition: UARTCC26X2.h:444
UARTCC26X2_FifoThreshold rxIntFifoThr
Definition: UARTCC26X2.h:568
UARTCC26X2_ErrorCallback errorFxn
Definition: UARTCC26X2.h:570
The definition of a UART function table that contains the required set of functions to control a spec...
Definition: UART.h:641
size_t readCount
Definition: UARTCC26X2.h:627
Definition: UARTCC26X2.h:443
size_t ringBufSize
Definition: UARTCC26X2.h:556
struct UARTCC26X2_Object * UARTCC26X2_Handle
Power Manager.
UART_PAR
UART parity type settings.
Definition: UART.h:541
uint8_t rxPin
Definition: UARTCC26X2.h:558
UART_Mode
UART mode settings.
Definition: UART.h:430
unsigned int powerMgrId
Definition: UARTCC26X2.h:643
HwiP_Struct hwi
Definition: UARTCC26X2.h:613
UART_DataMode
UART data mode settings.
Definition: UART.h:487
UARTCC26X2 Hardware attributes.
Definition: UARTCC26X2.h:537
UART_ReturnMode
UART return mode settings.
Definition: UART.h:464
UART_LEN dataLength
Definition: UARTCC26X2.h:618
unsigned char * ringBufPtr
Definition: UARTCC26X2.h:554
UART_Echo
UART echo settings.
Definition: UART.h:506
uint32_t status
Definition: UARTCC26X2.h:621
void(* UARTCC26X2_ErrorCallback)(UART_Handle handle, uint32_t error)
The definition of an optional callback function used by the UART driver to notify the application whe...
Definition: UARTCC26X2.h:460
UART Global configuration.
Definition: UART.h:685
uint8_t rtsPin
Definition: UARTCC26X2.h:564
SemaphoreP_Struct writeSem
Definition: UARTCC26X2.h:637
Definition: UARTCC26X2.h:442
size_t writeCount
Definition: UARTCC26X2.h:636
UART_STOP stopBits
Definition: UARTCC26X2.h:619
unsigned int readTimeout
Definition: UARTCC26X2.h:629
RingBuf_Object ringBuffer
Definition: UARTCC26X2.h:624
UART_Callback writeCallback
Definition: UARTCC26X2.h:639
uint8_t intPriority
Definition: UARTCC26X2.h:544
Definition: UARTCC26X2.h:446
UART_Callback readCallback
Definition: UARTCC26X2.h:630
ClockP_Struct timeoutClk
Definition: UARTCC26X2.h:616
Definition: UARTCC26X2.h:445
Definition: UARTCC26X2.h:447
Power notify object structure.
Definition: Power.h:442
const unsigned char * writeBuf
Definition: UARTCC26X2.h:634
Universal Asynchronous Receiver-Transmitter (UART) Driver.
uint32_t baseAddr
Definition: UARTCC26X2.h:540
int intNum
Definition: UARTCC26X2.h:542
uint32_t swiPriority
Swi priority. The higher the number, the higher the priority. The minimum priority is 0 and the maxim...
Definition: UARTCC26X2.h:550
UARTCC26X2_FifoThreshold
UART TX/RX interrupt FIFO threshold select.
Definition: UARTCC26X2.h:440
uint32_t flowControl
Definition: UARTCC26X2.h:552
const UART_FxnTable UARTCC26X2_fxnTable
uint32_t baudRate
Definition: UARTCC26X2.h:617
Definition: RingBuf.h:44
UART_LEN
UART data length settings.
Definition: UART.h:517
SwiP_Struct writeSwi
Definition: UARTCC26X2.h:615
General Purpose I/O driver interface.
unsigned char * readBuf
Definition: UARTCC26X2.h:625
uint8_t txPin
Definition: UARTCC26X2.h:560
UARTCC26X2_FifoThreshold txIntFifoThr
Definition: UARTCC26X2.h:566
unsigned int writeTimeout
Definition: UARTCC26X2.h:638
size_t writeSize
Definition: UARTCC26X2.h:635
uint8_t ctsPin
Definition: UARTCC26X2.h:562
SemaphoreP_Struct readSem
Definition: UARTCC26X2.h:628
UART_PAR parityType
Definition: UARTCC26X2.h:620
bool readRetPartial
Definition: UARTCC26X2.h:631
void(* UART_Callback)(UART_Handle handle, void *buf, size_t count)
The definition of a callback function used by the UART driver when used in UART_MODE_CALLBACK The cal...
Definition: UART.h:423
Power_NotifyObj postNotify
Definition: UARTCC26X2.h:642
SwiP_Struct readSwi
Definition: UARTCC26X2.h:614
© Copyright 1995-2022, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale