MSPM0G1X0X_G3X0X TI-Driver Library  1.20.01.06
UARTSupportMSPM0G1X0X_G3X0X.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 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  */
32 /*!****************************************************************************
33  * @file UARTSupportMSPM0G1X0X_G3X0X.h
34  *
35  * @brief UART driver support APIs for the MSPM0G1X0X_G3X0X devices.
36  *
37  * @defgroup UARTSupportMSPM0G1X0X_G3X0X UART MSPM0G1X0X_G3X0X driver supporting APIs
38  *
39  * # Overview
40  * Refer to @ref ti_drivers_UART_Overview for a complete description of APIs and examples
41  * of use.
42  *
43  ******************************************************************************
44  */
49 /* clang-format off */
50 #ifndef ti_drivers_uart_UARTSupportMSPM0G1X0X_G3X0X__include
51 #define ti_drivers_uart_UARTSupportMSPM0G1X0X_G3X0X__include
52 
53 #include <ti/drivers/dpl/ClockP.h>
54 #include <ti/drivers/dpl/SemaphoreP.h>
55 
57 #include <ti/drivers/utils/RingBuf.h>
58 #include <ti/drivers/UART.h>
59 
63 typedef struct {
72  bool (*enable)(UART_Handle handle, UART_Params *params);
73 
79  void (*disable)(UART_Handle handle);
80 
86  void (*txChar)(UART_Handle handle);
87 
109  int_fast16_t (*read)(
110  UART_Handle, void *buf, size_t size, size_t *bytesRead);
111 
130  int_fast16_t (*write)(
131  UART_Handle, const void *buf, size_t size, size_t *bytesWritten);
133 
137 typedef struct {
139  void *userArg;
140  uint8_t buffersSupported : 1;
141  uint8_t eventsSupported : 1;
142  uint8_t callbacksSupported : 1;
143  uint8_t dmaSupported : 1;
144  uint8_t returnMode : 1;
145  uint8_t inUse : 1;
146  uint8_t readCancel : 1;
147  uint8_t writeCancel : 1;
148  uint8_t overrunActive : 1;
149  uint8_t readTimedOut : 1;
150  uint8_t writeTimedOut : 1;
151  uint8_t readMode : 2;
152  uint8_t writeMode : 2;
153  uint8_t rxDmaChannel;
154  uint8_t txDmaChannel;
155  uint8_t readInUse : 1;
156  uint8_t writeInUse : 1;
157  uint32_t overrunCount;
158  uint8_t noOfDMAChannels;
161 } UART_Object;
162 
163 
168 typedef struct {
169  uint8_t *rxBufPtr;
170  uint8_t *txBufPtr;
171  uint16_t rxBufSize;
172  uint16_t txBufSize;
173  RingBuf_Object rxBuf;
174  RingBuf_Object txBuf;
175  SemaphoreP_Handle rxSem;
176  SemaphoreP_Handle txSem;
178 
183 typedef struct {
185  uint32_t eventMask;
187 
192 typedef struct {
195  uint8_t *readBuf;
196  const uint8_t *writeBuf;
197  uint16_t readSize;
198  uint16_t writeSize;
199  uint16_t writeCount;
200  uint16_t readCount;
201  uint16_t bytesRead;
202  uint16_t bytesWritten;
203  int32_t rxStatus;
204  int32_t txStatus;
205  size_t rxSize;
206  size_t txSize;
207  void *userArg;
209 
214 /* Warning! The sequence in the below structure must NOT be modified. */
215 typedef struct
216 {
223 
231 typedef struct UART_Config_
232 {
234  void *object;
235 
237  void const *hwAttrs;
238 } UART_Config;
239 
244 extern const UART_Config UART_config[];
249 extern const uint_least8_t UART_count;
250 
251 
252 
271 int_fast16_t UART_readBuffered(UART_Handle handle, void *buf, size_t size, size_t *bytesRead);
272 
288 int_fast16_t UART_writeBuffered(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten);
289 
311 int_fast16_t UART_readCallback(UART_Handle handle, void *buf, size_t size, size_t *bytesRead);
312 
331 int_fast16_t UART_writeCallback(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten);
332 
354 int_fast16_t UART_readFullFeatured(UART_Handle handle, void *buf, size_t size, size_t *bytesRead);
355 
374 int_fast16_t UART_writeFullFeatured(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten);
375 
376 
377 #endif /* ti_drivers_uart_UARTSupportMSPM0G1X0X_G3X0X__include */
378 /* clang-format on */
Private Metadata structure for a UART instance supporting callbacks.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:192
UART_Callback writeCallback
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:194
uint16_t bytesRead
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:201
void * userArg
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:207
uint8_t noOfDMAChannels
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:158
const uint_least8_t UART_count
Count of UART instances.
void * object
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:234
DMAMSPM0_Handle DMA_Handle
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:159
int_fast16_t UART_readBuffered(UART_Handle handle, void *buf, size_t size, size_t *bytesRead)
UART read that only supports buffered mode.
int_fast16_t UART_readCallback(UART_Handle handle, void *buf, size_t size, size_t *bytesRead)
UART read that only supports callback mode.
int_fast16_t UART_writeCallback(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten)
UART write that only supports callback mode.
uint32_t eventMask
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:185
uint32_t overrunCount
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:157
UART_Callback readCallback
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:193
UART_EventCallback_Object eventCallbackObject
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:219
SemaphoreP_Handle txSem
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:176
size_t txSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:206
DMAMSPM0 Global configuration.
Definition: DMAMSPM0.h:181
UART Global configuration.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:231
void const * hwAttrs
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:237
uint8_t txDmaChannel
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:154
void(* UART_EventCallback)(UART_Handle handle, uint32_t event, uint32_t data, void *userArg)
The definition of a callback function used by the UART driver. The callback can occur in task or inte...
Definition: UART.h:209
uint8_t * readBuf
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:195
const UART_Config UART_config[]
Array of UART_Config structure.
size_t rxSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:205
uint16_t writeSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:198
uint16_t readCount
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:200
int_fast16_t UART_readFullFeatured(UART_Handle handle, void *buf, size_t size, size_t *bytesRead)
UART read that only supports buffered and callback mode.
RingBuf_Object rxBuf
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:173
Private Metadata structure for a UART instance supporting events.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:183
const uint8_t * writeBuf
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:196
UART_Buffers_Object buffersObject
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:218
uint16_t bytesWritten
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:202
int32_t txStatus
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:204
uint8_t rxDmaChannel
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:153
SemaphoreP_Handle rxSem
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:175
RingBuf_Object txBuf
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:174
Private Metadata structure for a UART instance supporting data structures needed for UART TX/RX execu...
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:215
UART_Object object
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:217
void * userArg
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:139
UART driver interface.
UART_Callback_Object callbackObject
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:220
struct UART_Config_ * UART_Handle
A handle that is returned from a UART_open() call.
Definition: UART.h:168
Private Metadata structure for a UART instance supporting buffers.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:168
Private Metadata structure for a UART instance.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:137
int_fast16_t UART_writeBuffered(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten)
UART write that only supports buffered mode.
uint16_t readSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:197
const UARTSupport_Fxns * supportFxns
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:138
UART Parameters.
Definition: UART.h:307
int_fast16_t UART_writeFullFeatured(UART_Handle handle, const void *buf, size_t size, size_t *bytesWritten)
UART write that only supports buffered and callback mode.
uint16_t txBufSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:172
void(* UART_Callback)(UART_Handle handle, void *buf, size_t count, void *userArg, int_fast16_t status)
The definition of a callback function used by the UART driver when used in UART_Mode_CALLBACK. The callback can occur in task or interrupt context.
Definition: UART.h:186
uint8_t * txBufPtr
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:170
uint16_t rxBufSize
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:171
Function pointers to implementation/hardware specific logic.
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:63
uint8_t * rxBufPtr
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:169
uint16_t writeCount
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:199
UART_EventCallback eventCallback
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:184
int32_t rxStatus
Definition: UARTSupportMSPM0G1X0X_G3X0X.h:203
struct UART_Config_ UART_Config
UART Global configuration.
DMA driver implementation for MSPM0.
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale