AIROC™ BTSDK v4.6 - Documentation | ||||
Define functions to access Peripheral UART block. More...
Data Structures | |
struct | puart_UartConfig |
PUART configuration. Internal. More... | |
struct | HCI_CMD_TAG |
HCI command header. Internal. NOTE: PUART does not support HCI commands. More... | |
struct | P_UART_TRANSPORT_PACKET_TAG |
PUART transport packet type defines. More... | |
Macros | |
#define | REG32(x) *((volatile UINT32*)(x)) |
#define | UART_REG REG32 |
#define | ROUND(x, y) ((x+y/2)/y); |
#define | PUART_STRLEN(a) strlen( (a) ) |
#define | P_UART_INT_STATUS_ADDR sr_ptu_status_adr5 |
Defines a Peripheral UART driver. More... | |
#define | P_UART_INT_ENABLE_ADDR sr_ptu_en_adr5 |
#define | P_UART_RX_FIFO_ADDR dp_uart2_data_adr |
#define | P_UART_TX_FIFO_ADDR dp_uart2_data_adr |
#define | P_UART_WATER_MARK_RX_ADDR dc_ptu_uart2_rfl_adr |
#define | P_UART_WATER_MARK_TX_ADDR dc_ptu_uart2_tfl_adr |
#define | P_UART_FLOW_CONTROL_WATER_MARK_ADDR dc_ptu_uart2_rfc_adr |
#define | P_UART_LINE_CONTROL_ADDR dc_ptu_uart2_lcr_adr |
#define | P_UART_LINE_STATUS_ADDR dc_ptu_uart2_lsr_adr |
#define | P_UART_MODEM_CONTROL_ADDR dc_ptu_uart2_mcr_adr |
#define | P_UART_HIGH_BAUDRATE_DIV_ADDR dc_ptu_uart2_dhbr_adr |
#define | P_UART_LOW_BAUDRATE_DIV_ADDR dc_ptu_uart2_dlbr_adr |
#define | P_UART_FIFO_CONTROL_ADDR dc_ptu_uart2_fcr_adr |
#define | P_UART_MSR_LINE_ADDR dc_ptu_uart2_msr_adr |
#define | P_UART_PTU_HC_SEL_ADDR dc_ptu_hc_sel_adr |
#define | P_UART_ESC_ADDR dc_ptu_uart2_esc_adr |
#define | P_UART_IN_BUFFER_LEN 16 |
PUART RX buffer depth. This is fixed to 16 bytes and cannot be changed. | |
#define | P_UART_RX_FIFO_SIZE P_UART_IN_BUFFER_LEN |
PUART HW RX FIFO depth. This is fixed to 16 bytes and cannot be changed. | |
#define | P_UART_OUT_BUFFER_LEN 16 |
PUART TX buffer depth. This is fixed to 16 bytes and cannot be changed. | |
#define | P_UART_TX_FIFO_SIZE P_UART_OUT_BUFFER_LEN |
PUART HW TX FIFO depth. This is fixed to 16 bytes and cannot be changed. | |
#define | P_UART_WATER_MARK_RX_LEVEL_HIGHEST (P_UART_RX_FIFO_SIZE - 1) |
Highest RX watermark is FIFO - 1. | |
#define | P_UART_WATER_MARK_TX_LEVEL_HIGHEST (P_UART_TX_FIFO_SIZE - 1) |
Highest TX watermark is FIFO - 1. | |
#define | P_UART_WATER_MARK_RX_LEVEL_ONE_BYTE 1 |
Lowest RX watermark is 1 byte. | |
#define | P_UART_INT_ENABLE UART_REG(P_UART_INT_ENABLE_ADDR) |
Helper macros. | |
#define | P_UART_INT_STATUS UART_REG(P_UART_INT_STATUS_ADDR) |
#define | P_UART_INT_CLEAR(x) UART_REG(P_UART_INT_STATUS_ADDR) = x |
#define | P_UART_INT_DISABLE UART_REG(P_UART_INT_DISABLE_ADDR) |
#define | P_UART_RX_FIFO() UART_REG(P_UART_RX_FIFO_ADDR) |
#define | P_UART_TX_FIFO(x) UART_REG(P_UART_TX_FIFO_ADDR) = x |
#define | P_UART_LINE_CONTROL(x) UART_REG(P_UART_LINE_CONTROL_ADDR) = x |
#define | P_UART_LINE_CONTROL_GET() UART_REG(P_UART_LINE_CONTROL_ADDR) |
#define | P_UART_MODEM_CONTROL(x) UART_REG(P_UART_MODEM_CONTROL_ADDR) = x |
#define | P_UART_MODEM_CONTROL_GET() UART_REG(P_UART_MODEM_CONTROL_ADDR) |
#define | P_UART_FIFO_CONTROL(x) UART_REG(P_UART_FIFO_CONTROL_ADDR) = x |
#define | P_UART_MSR_STATUS() UART_REG(P_UART_MSR_LINE_ADDR) |
#define | P_UART_HIGH_BAUDRATE_DIV(x) UART_REG(P_UART_HIGH_BAUDRATE_DIV_ADDR) = x |
#define | P_UART_LOW_BAUDRATE_DIV(x) UART_REG(P_UART_LOW_BAUDRATE_DIV_ADDR) = x |
#define | P_UART_WATER_MARK_RX_LEVEL(x) UART_REG(P_UART_WATER_MARK_RX_ADDR) = x |
#define | P_UART_WATER_MARK_TX_LEVEL(x) UART_REG(P_UART_WATER_MARK_TX_ADDR) = x |
#define | P_UART_FLOW_CONTROL_WATER_MARK_LEVEL(x) UART_REG(P_UART_FLOW_CONTROL_WATER_MARK_ADDR) = x |
#define | P_UART_ESC_CHAR UART_REG(P_UART_ESC_ADDR) |
#define | P_UART_RX_FIFO_NOT_EMPTY() puart_rxFifoNotEmpty() |
Helper macro to check if the RX HW FIFO is not empty. | |
#define | P_UART_TX_FIFO_IS_EMPTY() ( ( REG32(P_UART_LINE_STATUS_ADDR) & ( P_UART_LSR_TX_FIFO_NOT_EMPTY | P_UART_LSR_TX_IDLE ) ) == P_UART_LSR_TX_IDLE ) |
Helper macro to check if the TX HW FIFO is empty. | |
Typedefs | |
typedef enum P_UART_RX_STATE_TAG | P_UART_RX_STATE |
PUART driver RX states. Internal. | |
typedef enum P_UART_TX_STATE_TAG | P_UART_TX_STATE |
PUART driver TX states. Internal. | |
typedef struct HCI_CMD_TAG | P_UART_HCI_CMD |
HCI command header. Internal. NOTE: PUART does not support HCI commands. | |
typedef enum P_UART_FUNCTION_TAG | P_UART_FUNCTION |
PUART function control. Internal. | |
typedef UINT8 | P_UART_TRANSPORT_PACKET_TYPE |
typedef struct P_UART_TRANSPORT_PACKET_TAG | P_UART_TRANSPORT_PACKET |
PUART transport packet type defines. | |
Enumerations | |
enum | { P_UART_ISR_TX_FF_MASK = 0x01, P_UART_ISR_TX_FAE_MASK = 0x02, P_UART_ISR_RX_AFF_MASK = 0x04, P_UART_ISR_RX_FE_MASK = 0x08, P_UART_ISR_RX_RES_MASK = 0x10, P_UART_ISR_RX_PE_MASK = 0x20, P_UART_ISR_RX_BRK_MASK = 0x40, P_UART_ISR_RX_CTS_MASK = 0x80 } |
PUART interrupt control bits. Internal. | |
enum | { P_UART_LCR_STB_MASK = 0x0001, P_UART_LCR_PEN_MASK = 0x0002, P_UART_LCR_EPS_MASK = 0x0004, P_UART_LCR_RXEN_MASK = 0x0008, P_UART_LCR_LBC_MASK = 0x0010, P_UART_LCR_TXOEN_MASK = 0x0020, P_UART_LCR_RTSOEN_MASK = 0x0040, P_UART_LCR_SLIP_MASK = 0x0080, P_UART_LCR_SLIP_CRC_RX_ENABLE_MASK = 0x0100, P_UART_LCR_SLIP_CRC_INVERT_MASK = 0x0200, P_UART_LCR_SLIP_CRC_LSB_1ST_MASK = 0x0400, P_UART_LCR_SLIP_CRC_TX_ENABLE_MASK = 0x0800 } |
PUART line control bits. Internal. More... | |
enum | { P_UART_LSR_TX_FIFO_NOT_EMPTY = 0x0004, P_UART_LSR_TX_IDLE = 0x0008, P_UART_LSR_END_DELIMETER_NOT_DONE_MASK = 0x0010 } |
PUART status bits. Internal. | |
enum | { P_UART_MCR_TXEN_MASK = 0x0001, P_UART_MCR_RTS_MASK = 0x0002, P_UART_MCR_XON_XOFF_MASK = 0x0004, P_UART_MCR_HIGH_RATE_MASK = 0x0008, P_UART_MCR_LOOPBACK_MASK = 0x0010, P_UART_MCR_AUTORTS_MASK = 0x0020, P_UART_MCR_AUTOCTS_MASK = 0x0040, P_UART_MCR_BAUD_ADJ_MASK = 0x0080, P_UART_MCR_PKT_FLOW_RX_MASK = 0x0100, P_UART_MCR_SEND_XON_NOW = 0x0200 } |
PUART modem control bits. Internal. More... | |
enum | { P_UART_MSR_CTS_MASK = 0x0001, P_UART_MSR_RX_MASK = 0x0004 } |
PUART modem status bits. Internal. | |
enum | { P_UART_FCR_RX_FIFO_RESET_MASK = 0x001, P_UART_FCR_TX_FIFO_RESET_MASK = 0x002, P_UART_FCR_SLIP_RX_RESYNC_MASK = 0x004, P_UART_FCR_SLIP_START_END_FRAME_MASK = 0x008 } |
PUART flow control bits. Internal. | |
enum | { P_UART_CLK = 24000000, P_UART_SAMPLE_CLOCK = 16, DEFAULT_P_UART_BAUDRATE = 115200, DEFAULT_P_UART_HWFLOWCONTROLWATERMARK = 13, DEFAULT_P_UART_MIN_PKT_LENGTH = 1 } |
Some useful default constants used by teh driver. | |
enum | P_UART_RX_STATE_TAG { P_UART_RX_IDLE, P_UART_RX_TYPE, P_UART_RX_PAYLOAD, P_UART_RX_READ_DONE, P_UART_RX_RESYNC, P_UART_DROP_PACKET } |
PUART driver RX states. Internal. | |
enum | P_UART_TX_STATE_TAG { P_UART_TX_IDLE, P_UART_TX_BUSY, P_UART_TX_WAIT_FIFO_EMPTY, P_UART_TX_DONE, P_UART_TX_WRONG_STATE } |
PUART driver TX states. Internal. | |
enum | P_UART_FUNCTION_TAG { P_UART_HCI, P_UART_HID, P_UART_SENSOR } |
PUART function control. Internal. | |
Functions | |
void | puart_init (void) |
PUART initialization function. More... | |
void | puart_interruptHandler (void) |
ISR context interrupt handler. More... | |
void | puart_calculateBaudrate (UINT8 *dhbr, UINT8 *dlbr, UINT32 baudrate, UINT32 clk) |
Calculates the baud rate. Internal, not for app use. | |
void | puart_enableInterrupt (void) |
Enables CM3 interrupt from PUART HW block. | |
void | puart_flowOn (void) |
Turn on flow control. | |
void | puart_flowOff (void) |
Turn off flow control. | |
void | puart_disableTx (void) |
Disable the HW TX FIFO. | |
void | puart_enableTx (void) |
Enable the HW TXFIFO. | |
void | puart_setBaudrate (UINT8 dhbr, UINT8 dlbr, UINT32 baudrate) |
Set baud rate. More... | |
void | puart_synchronousRead (UINT8 *buffer, UINT32 length) |
Performs a blocking read from the RX FIFO. More... | |
void | puart_synchronousWrite (UINT8 *buffer, UINT32 length) |
Performs a blocking write to the TX FIFO. More... | |
BOOL32 | puart_rxFifoNotEmpty (void) |
Check if the RX FIFO is not empty. More... | |
int | puart_rxHandler (void *unused) |
Thread context RX interrupt dispatch function. Internal. | |
int | puart_txHandler (void *unused) |
Thread context TX interrupt dispatch function. Internal. | |
void | puart_print (char *string) |
Prints a string to PUART. More... | |
void | puart_write (UINT8 byte) |
Write a single byte to PUART. More... | |
BOOL32 | puart_read (UINT8 *readbyte) |
Read a single byte from PUART. More... | |
BOOL32 | puart_selectUartPads (UINT8 rxdPortPin, UINT8 txdPortPin, UINT8 ctsPortPin, UINT8 rtsPortPin) |
Allows the application to configure GPIOs for PUART. More... | |
BOOL32 | puart_checkRxdPortPin (UINT8 rxdPortPin) |
Check if the given RXd port-pin combination is valid for the SoC. More... | |
BOOL32 | puart_checkTxdPortPin (UINT8 txdPortPin) |
Check if the given TXd port-pin combination is valid for the SoC. More... | |
BOOL32 | puart_checkCtsPortPin (UINT8 ctsPortPin) |
Check if the given CTS port-pin combination is valid for the SoC. More... | |
BOOL32 | puart_checkRtsPortPin (UINT8 rtsPortPin) |
Check if the given RTS port-pin combination is valid for the SoC. More... | |
Variables | |
void(* | puart_rxCb )(void *) |
void(* | puart_rxIntCb )(void) |
void(* | puart_txCb )(void) |
Define functions to access Peripheral UART block.