Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches
uart.h
1
16
17/***************************************************************************/
112
113#ifndef _UART_H_
114#define _UART_H_
115
116/*******************************************************************************
117* Include files
118*******************************************************************************/
119
120#include <stdint.h>
121#include <stdbool.h>
122#include "clk.h"
123#include "syna_device.h"
124#include "uart_registers.h"
125
126/*******************************************************************************
127* Enumerated Types
128*******************************************************************************/
129
135
167
188
202
214
226
234typedef enum
235{
236 UART_RX_INT = (1U << 0),
237 UART_TX_INT = (1U << 1),
238 UART_ERROR_INT = (1U << 2),
239 UART_MODEM_INT = (1U << 3)
241
254
267
283
295
307
309
310/*******************************************************************************
311* Type Definitions
312*******************************************************************************/
313
319
330typedef void (*uart_cb_t)(uint32_t event_mask, void *user_data);
331
339typedef struct {
340 /* USR bits [0:7] */
341 uint16_t busy_not_used : 1;
342 uint16_t tx_fifo_not_full : 1;
343 uint16_t tx_fifo_empty : 1;
344 uint16_t rx_fifo_not_empty : 1;
345 uint16_t rx_fifo_full : 1;
346 uint16_t reserved_5 : 1;
347 uint16_t reserved_6 : 1;
348 uint16_t reserved_7 : 1;
349
350 /* LSR bits [8:15] */
351 uint16_t data_ready : 1;
352 uint16_t overrun_error : 1;
353 uint16_t parity_error : 1;
354 uint16_t framing_error : 1;
355 uint16_t break_detected : 1;
356 uint16_t thr_empty : 1;
357 uint16_t tx_empty : 1;
358 uint16_t rx_fifo_error : 1;
360
373
388
397typedef struct
398{
399 char *put_buff;
400 uint32_t num;
402 void *user_data;
406
408
417typedef struct
418{
419 char *get_buff;
420 uint32_t num;
422 void *user_data;
424
426
427/*******************************************************************************
428* Function Prototypes
429*******************************************************************************/
430
436
437/*******************************************************************************
438* Function Name: uart_init
439****************************************************************************/
450
452
453/*******************************************************************************
454* Function Name: uart_deinit
455****************************************************************************/
467
469
470/*******************************************************************************
471* Function Name: uart_set_configuration
472****************************************************************************/
491
493 uint32_t* achieved_baudrate);
494
495/*******************************************************************************
496* Function Name: uart_get_configuration
497****************************************************************************/
516
518 uint32_t* achieved_baudrate);
519
521
522/*******************************************************************************
523* High level functions definitions
524*******************************************************************************/
525
534
535 /*******************************************************************************
536* Function Name: uart_put_non_blocking
537****************************************************************************/
554
556
557/*******************************************************************************
558* Function Name: uart_get_non_blocking
559****************************************************************************/
580
582 uint32_t* received_chars);
583
584/*******************************************************************************
585* Function Name: uart_abort_put
586****************************************************************************/
598
600
601/*******************************************************************************
602* Function Name: uart_abort_get
603****************************************************************************/
616
618
619/*******************************************************************************
620* Function Name: uart_get_num_transmitted
621****************************************************************************/
631
633
634/*******************************************************************************
635* Function Name: uart_get_num_received
636****************************************************************************/
646
648
649/*******************************************************************************
650* Function Name: uart_get_put_status
651****************************************************************************/
663
665
666/*******************************************************************************
667* Function Name: uart_get_get_status
668****************************************************************************/
680
682
683
685
686
687/*******************************************************************************
688* Low level functions declarations
689*******************************************************************************/
690
696
697 /*******************************************************************************
698* Function Name: uart_put_blocking
699****************************************************************************/
724
725uart_status_en uart_put_blocking(uart_instance_en id, char *put_buff, uint32_t num,
726 uint32_t timeout, bool wait_for_tx_fifo_drain);
727
728/*******************************************************************************
729* Function Name: uart_put_char_blocking
730****************************************************************************/
745
747
748/*******************************************************************************
749* Function Name: uart_get_blocking
750****************************************************************************/
771
772uart_status_en uart_get_blocking(uart_instance_en id, char *get_buff, uint32_t num,
773 uint32_t timeout);
774
775/*******************************************************************************
776* Function Name: uart_get_char_blocking
777****************************************************************************/
792
793uart_status_en uart_get_char_blocking(uart_instance_en id, char *p_chr, uint32_t timeout);
794
795/*******************************************************************************
796* Function Name: uart_enable_ints
797****************************************************************************/
815
816void uart_enable_ints(uart_instance_en id, uint32_t mask);
817
818/*******************************************************************************
819* Function Name: uart_get_enabled_ints
820****************************************************************************/
831
833
834/* \cond */
835/*******************************************************************************
836* Function Name: uart_isr
837****************************************************************************/
848
849ISR_CODE void uart_isr(uart_instance_en id);
850/* \endcond */
851
852/*******************************************************************************
853* Function Name: uart_get_status
854****************************************************************************/
866
868
869/*******************************************************************************
870* Function Name: uart_set_tx_fifo_trigger
871****************************************************************************/
889
890/*******************************************************************************
891* Function Name: uart_set_rx_fifo_trigger
892****************************************************************************/
910
911/*******************************************************************************
912* Function Name: uart_get_tx_fifo_trigger
913****************************************************************************/
925
926/*******************************************************************************
927* Function Name: uart_get_rx_fifo_trigger
928****************************************************************************/
940
941/*******************************************************************************
942* Function Name: uart_get_num_in_tx_fifo
943****************************************************************************/
954
955/*******************************************************************************
956* Function Name: uart_get_num_in_rx_fifo
957****************************************************************************/
968
969/*******************************************************************************
970* Function Name: uart_put_break
971****************************************************************************/
984void uart_put_break(uart_instance_en id, bool send_break);
985
986/*******************************************************************************
987* Function Name: uart_get_interrupt_id
988****************************************************************************/
1000
1001/*******************************************************************************
1002* Function Name: uart_room_to_transmit
1003****************************************************************************/
1014
1016
1017/*******************************************************************************
1018* Function Name: uart_recv_char_avail
1019****************************************************************************/
1033
1034/*******************************************************************************
1035* Function Name: uart_put_char
1036****************************************************************************/
1052
1053/*******************************************************************************
1054* Function Name: uart_get_char
1055****************************************************************************/
1069
1071
1073
1074#endif /* _UART_H_ */
uart_instance_en
UART instances.
Definition sr110.h:49
void(* uart_cb_t)(uint32_t event_mask, void *user_data)
UART event callback function type.
Definition uart.h:330
uart_int_mask_en
UART interrupt sources.
Definition uart.h:235
uart_status_en
UART driver status and error codes.
Definition uart.h:143
uart_tx_fifo_trigger_en
UART TX FIFO trigger level.
Definition uart.h:248
uart_parity_en
UART parity configuration.
Definition uart.h:221
uart_get_status_en
UART reception status.
Definition uart.h:302
uart_cb_param_en
UART driver hardware and software events.
Definition uart.h:175
uart_stop_bits_en
Stop bits configuration.
Definition uart.h:209
uart_rx_fifo_trigger_en
UART RX FIFO trigger level.
Definition uart.h:261
uart_char_len_en
UART character length configuration (data bits).
Definition uart.h:196
uart_int_id_en
UART interrupt ID types from IIR register.
Definition uart.h:274
uart_put_status_en
UART transmission status.
Definition uart.h:290
@ UART_ERROR_INT
Definition uart.h:238
@ UART_MODEM_INT
Definition uart.h:239
@ UART_RX_INT
Definition uart.h:236
@ UART_TX_INT
Definition uart.h:237
@ UART_ERROR_RX_BREAK_DETECTED
Definition uart.h:152
@ UART_ERROR_STOP_BITS
Definition uart.h:162
@ UART_ERROR_INTERRUPT_MODE
Definition uart.h:165
@ UART_ERROR_BAUDRATE
Definition uart.h:153
@ UART_ERROR_BUSY
Definition uart.h:146
@ UART_ERROR_FLOW_CONTROL
Definition uart.h:164
@ UART_ERROR_DATA_BITS
Definition uart.h:161
@ UART_ERROR_INSTANCE
Definition uart.h:163
@ UART_OK
Definition uart.h:144
@ UART_ERROR_PARAMETER
Definition uart.h:149
@ UART_ERROR_RX_BUSY
Definition uart.h:155
@ UART_ERROR_TX_BUSY
Definition uart.h:156
@ UART_ERROR_RX_TIMEOUT
Definition uart.h:158
@ UART_ERROR_TIMEOUT
Definition uart.h:147
@ UART_ERROR_UNSUPPORTED
Definition uart.h:148
@ UART_ERROR_PARITY
Definition uart.h:160
@ UART_ERROR_TX_UNDERFLOW
Definition uart.h:150
@ UART_ERROR
Definition uart.h:145
@ UART_ERROR_TX_TIMEOUT
Definition uart.h:157
@ UART_ERROR_NOT_INITIALIZED
Definition uart.h:154
@ UART_ERROR_RX_OVERFLOW
Definition uart.h:151
@ UART_ERROR_FRAMING
Definition uart.h:159
@ UART_TX_FIFO_TWO
Definition uart.h:250
@ UART_TX_FIFO_QUARTER
Definition uart.h:251
@ UART_TX_FIFO_HALF
Definition uart.h:252
@ UART_TX_FIFO_EMPTY
Definition uart.h:249
@ UART_PARITY_NONE
Definition uart.h:222
@ UART_PARITY_EVEN
Definition uart.h:223
@ UART_PARITY_ODD
Definition uart.h:224
@ RX_COMPLETE
Definition uart.h:304
@ RX_IN_PROGRESS
Definition uart.h:303
@ RX_ERROR
Definition uart.h:305
@ UART_RX_BREAK
Definition uart.h:181
@ UART_BUSY
Definition uart.h:178
@ UART_RX_OVERRUN_ERROR
Definition uart.h:184
@ UART_RX_TIMEOUT
Definition uart.h:177
@ UART_RX_DATA_NOT_READY
Definition uart.h:180
@ UART_RX_PARITY_ERROR
Definition uart.h:183
@ UART_SUCCESS
Definition uart.h:176
@ UART_RX_FRAMING_ERROR
Definition uart.h:182
@ UART_TX_DATA_NOT_READY
Definition uart.h:179
@ UART_ABORT_TRANSFER
Definition uart.h:185
@ UART_UNKNOWN_ERROR
Definition uart.h:186
@ UART_STOP_BITS_ONE
Definition uart.h:210
@ UART_STOP_BITS_TWO
Definition uart.h:212
@ UART_STOP_BITS_ONE_FIVE
Definition uart.h:211
@ UART_RX_FIFO_QUARTER
Definition uart.h:263
@ UART_RX_FIFO_HALF
Definition uart.h:264
@ UART_RX_FIFO_TWO
Definition uart.h:265
@ UART_RX_FIFO_ONE
Definition uart.h:262
@ UART_CHAR_LEN_SIX
Definition uart.h:198
@ UART_CHAR_LEN_FIVE
Definition uart.h:197
@ UART_CHAR_LEN_SEVEN
Definition uart.h:199
@ UART_CHAR_LEN_EIGHT
Definition uart.h:200
@ IIR_IID_NO_INTERRUPT_PENDING
Definition uart.h:276
@ IIR_IID_BUSY_DETECT
Definition uart.h:280
@ IIR_IID_THR_EMPTY
Definition uart.h:277
@ IIR_IID_RECEIVER_LINE_STATUS
Definition uart.h:279
@ IIR_IID_RECEIVED_DATA_AVAILABLE
Definition uart.h:278
@ IIR_IID_UART_MODEM_STATUS
Definition uart.h:275
@ IIR_IID_CHARACTER_TIMEOUT
Definition uart.h:281
@ TX_IN_PROGRESS
Definition uart.h:291
@ TX_COMPLETE
Definition uart.h:292
@ TX_ERROR
Definition uart.h:293
uart_status_en uart_get_configuration(uart_instance_en id, uart_config_t *cfg, uint32_t *achieved_baudrate)
uart_status_en uart_set_configuration(uart_instance_en id, uart_config_t *cfg, uint32_t *achieved_baudrate)
INIT_CODE uart_status_en uart_init(uart_instance_en id)
INIT_CODE uart_status_en uart_deinit(uart_instance_en id)
uint32_t uart_get_num_received(uart_instance_en id)
uart_get_status_en uart_get_get_status(uart_instance_en id)
uart_status_en uart_put_non_blocking(uart_instance_en id, uart_put_config_t *put_config)
uart_status_en uart_abort_get(uart_instance_en id)
uart_status_en uart_abort_put(uart_instance_en id)
uint32_t uart_get_num_transmitted(uart_instance_en id)
uart_put_status_en uart_get_put_status(uart_instance_en id)
uart_status_en uart_get_non_blocking(uart_instance_en id, uart_get_config_t *xfer, uint32_t *received_chars)
uart_status_en uart_get_char_blocking(uart_instance_en id, char *p_chr, uint32_t timeout)
void uart_set_tx_fifo_trigger(uart_instance_en id, uart_tx_fifo_trigger_en thres)
bool uart_room_to_transmit(uart_instance_en id)
void uart_set_rx_fifo_trigger(uart_instance_en id, uart_rx_fifo_trigger_en thres)
uart_tx_fifo_trigger_en uart_get_tx_fifo_trigger(uart_instance_en id)
void uart_put_break(uart_instance_en id, bool send_break)
uint32_t uart_get_enabled_ints(uart_instance_en id)
char uart_get_char(uart_instance_en id)
void uart_enable_ints(uart_instance_en id, uint32_t mask)
uint32_t uart_get_num_in_tx_fifo(uart_instance_en id)
uint32_t uart_get_num_in_rx_fifo(uart_instance_en id)
uart_hw_status_t uart_get_status(uart_instance_en id)
bool uart_recv_char_avail(uart_instance_en id)
void uart_put_char(uart_instance_en id, char chr)
uart_status_en uart_put_char_blocking(uart_instance_en id, char chr, uint32_t timeout)
uart_int_id_en uart_get_interrupt_id(uart_instance_en id)
uart_rx_fifo_trigger_en uart_get_rx_fifo_trigger(uart_instance_en id)
uart_status_en uart_put_blocking(uart_instance_en id, char *put_buff, uint32_t num, uint32_t timeout, bool wait_for_tx_fifo_drain)
uart_status_en uart_get_blocking(uart_instance_en id, char *get_buff, uint32_t num, uint32_t timeout)
UART control configuration structure.
Definition uart.h:381
bool flow_control
Definition uart.h:385
uart_stop_bits_en stop_bits
Definition uart.h:384
uart_parity_en parity
Definition uart.h:382
uint32_t baud_rate
Definition uart.h:386
uart_char_len_en char_len
Definition uart.h:383
UART receive configuration structure.
Definition uart.h:418
uint32_t num
Definition uart.h:420
uart_cb_t callback
Definition uart.h:421
char * get_buff
Definition uart.h:419
void * user_data
Definition uart.h:422
UART instance hardware status structure.
Definition uart.h:368
bool tx_busy
Definition uart.h:370
uart_usr_lsr_status_bits_t uart_status
Definition uart.h:369
bool rx_busy
Definition uart.h:371
UART transmit configuration structure.
Definition uart.h:398
uint32_t num
Definition uart.h:400
uart_cb_t callback
Definition uart.h:401
bool wait_for_tx_fifo_drain
Definition uart.h:403
char * put_buff
Definition uart.h:399
void * user_data
Definition uart.h:402
Combined UART USR (Status Register) and LSR (Line Status Register) bitfield.
Definition uart.h:339
uint16_t reserved_5
Definition uart.h:346
uint16_t reserved_6
Definition uart.h:347
uint16_t break_detected
Definition uart.h:355
uint16_t framing_error
Definition uart.h:354
uint16_t rx_fifo_error
Definition uart.h:358
uint16_t tx_fifo_not_full
Definition uart.h:342
uint16_t rx_fifo_full
Definition uart.h:345
uint16_t tx_empty
Definition uart.h:357
uint16_t overrun_error
Definition uart.h:352
uint16_t thr_empty
Definition uart.h:356
uint16_t reserved_7
Definition uart.h:348
uint16_t data_ready
Definition uart.h:351
uint16_t tx_fifo_empty
Definition uart.h:343
uint16_t rx_fifo_not_empty
Definition uart.h:344
uint16_t parity_error
Definition uart.h:353
uint16_t busy_not_used
Definition uart.h:341