UART
概述
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称为UART)是一种异步收发传输器,提供了与外部设备进行全双工数据交换的灵活方式。 BL602共有2组UART口(UART0和UART1),通过配合DMA使用,可以实现高效的数据通信。
注解
需要注意的是gpio的pin脚作为uart功能使用时,选取的gpio pin脚对8取余不能相等,如gpio0和gpio8不能同时做为uart的引脚,uart更多资料请参考 BL602参考手册 , BL602参考手册的3.2.8 GPIO功能设定 。
应用实例
串口实例: customer_app/peripheral/demo_uart 。
API参考
Header File
- components/platform/hosal/include/hosal_uart.h
 
Functions
- 
int 
hosal_uart_abr_get(hosal_uart_dev_t *uart, uint8_t mode) Get auto baudrate on a UART interface.
- Return
 - = 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the UART interfacemode: auto baudrate detection mode(codeword 0x55 or start bit)
- 
int 
hosal_uart_init(hosal_uart_dev_t *uart) Initialises a UART interface.
- Return
 - 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the interface which should be initialised
- 
int 
hosal_uart_send(hosal_uart_dev_t *uart, const void *txbuf, uint32_t size) Poll transmit data on a UART interface.
- Return
 - > 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the UART interfacetxbuf: pointer to the start of datasize: number of bytes to transmit
- 
int 
hosal_uart_receive(hosal_uart_dev_t *uart, void *data, uint32_t expect_size) Poll receive data on a UART interface.
- Return
 - > 0 number of bytes to receive
 - EIO if an error occurred with any step
 
- Parameters
 uart: the UART interfacerxbuf: pointer to the buffer which will store incoming dataexpect_size: expect number of bytes to receive
- 
int 
hosal_uart_ioctl(hosal_uart_dev_t *uart, int ctl, void *p_arg) hal uart ioctl
- Return
 - 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the UART interfacectl: Control request- HOSAL_UART_BAUD_SET : baud set, p_arg is baud
 - HOSAL_UART_BAUD_GET : baud get, p_arg is baud's pointer
 - HOSAL_UART_DATA_WIDTH_SET : set data width,p_arg is hosal_uart_data_width_t
 - HOSAL_UART_DATA_WIDTH_GET : get data width,p_arg is hosal_uart_data_width_t's pointer
 - HOSAL_UART_STOP_BITS_SET : set stop bits, p_arg is hosal_uart_stop_bits_t
 - HOSAL_UART_STOP_BITS_GET : get stop bits, p_arg is hosal_uart_stop_bits_t's pointer
 - HOSAL_UART_PARITY_SET : set parity, p_arg is hosal_uart_parity_t
 - HOSAL_UART_PARITY_GET : get parity, p_arg is hosal_uart_parity_t's pointer
 - HOSAL_UART_MODE_SET : UART mode set, p_arg is hosal_uart_mode_t
 - HOSAL_UART_MODE_GET : UART mode get, p_arg is hosal_uart_mode_t's pointer
 - HOSAL_UART_FLOWMODE_SET : UART flow mode set, p_arg is hosal_uart_flow_control_t
 - HOSAL_UART_FLOWSTAT_GET : UART flow state get, p_arg is hosal_uart_flow_control_t's pointer
 - HOSAL_UART_FREE_TXFIFO_GET : get uart free tx fifo size (bytes)
 - HOSAL_UART_FREE_RXFIFO_GET : get uart free rx fifo size (bytes)
 - HOSAL_UART_FLUSH : Wait for the send to complete
 - HOSAL_UART_TX_TRIGGER_ON : UART TX trigger on
 - HOSAL_UART_TX_TRIGGER_OFF : UART TX trigger off
 - HOSAL_UART_DMA_CONFIG : p_arg is hosal_uart_dma_cfg_t's pointer
 - HOSAL_UART_DMA_TX_START : UART DMA TX start trans p_arg is hosal_uart_dma_cfg_t's pointer
 - HOSAL_UART_DMA_RX_START : UART DMA RX start trans p_arg is hosal_uart_dma_cfg_t's pointer
 
p_arg: parameter
- 
int 
hosal_uart_callback_set(hosal_uart_dev_t *uart, int callback_type, hosal_uart_callback_t pfn_callback, void *arg) hal uart callback set
- Return
 - 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the UART interfacecallback_type: callback type- HOSAL_UART_TX_CALLBACK
 - HOSAL_UART_RX_CALLBACK
 - HOSAL_UART_TX_DMA_CALLBACK
 - HOSAL_UART_RX_DMA_CALLBACK
 
pfn_callback: callback functionarg: callback function parameter
- 
int 
hosal_uart_finalize(hosal_uart_dev_t *uart) Deinitialises a UART interface.
- Return
 - 0 on success
 - EIO if an error occurred with any step
 
- Parameters
 uart: the interface which should be deinitialised
Structures
- 
struct 
hosal_uart_dma_cfg_t UART DMA configuration.
- 
struct 
hosal_uart_config_t UART configuration.
Public Members
- 
uint8_t 
uart_id UART id.
- 
uint8_t 
tx_pin UART tx pin.
- 
uint8_t 
rx_pin UART rx pin.
- 
uint8_t 
cts_pin UART cts pin.
- 
uint8_t 
rts_pin UART rts pin.
- 
uint32_t 
baud_rate UART baud rate.
- 
hosal_uart_data_width_t 
data_width UART data width.
- 
hosal_uart_parity_t 
parity UART parity bit.
- 
hosal_uart_stop_bits_t 
stop_bits UART stop btis.
- 
hosal_uart_flow_control_t 
flow_control UART flow control.
- 
hosal_uart_mode_t 
mode UART int or pull mode.
- 
uint8_t 
 
- 
struct 
hosal_uart_dev_t UART device type.
Public Members
- 
uint8_t 
port UART port.
- 
hosal_uart_config_t 
config UART config.
- 
hosal_uart_callback_t 
tx_cb UART tx callback.
- 
void *
p_txarg UART tx callback arg.
- 
hosal_uart_callback_t 
rx_cb UART rx callback.
- 
void *
p_rxarg UART rx callback arg.
- 
hosal_uart_callback_t 
txdma_cb UART tx dma callback.
- 
void *
p_txdma_arg UART tx dma callback arg.
- 
hosal_uart_callback_t 
rxdma_cb UART rx dma callback.
- 
void *
p_rxdma_arg UART rx dma callback arg.
- 
hosal_dma_chan_t 
dma_tx_chan UART dma tx channel.
- 
hosal_dma_chan_t 
dma_rx_chan UART dma rx channel.
- 
void *
priv UART private data.
- 
uint8_t 
 
Macros
- 
HOSAL_UART_AUTOBAUD_0X55 UART auto baudrate detection using codeword 0x55.
- 
HOSAL_UART_AUTOBAUD_STARTBIT UART auto baudrate detection using start bit.
- 
HOSAL_UART_TX_CALLBACK UART tx idle interrupt callback.
- 
HOSAL_UART_RX_CALLBACK UART rx complete callback.
- 
HOSAL_UART_TX_DMA_CALLBACK UART tx DMA trans complete callback.
- 
HOSAL_UART_RX_DMA_CALLBACK UART rx DMA trans complete callback.
- 
HOSAL_UART_BAUD_SET UART baud set.
- 
HOSAL_UART_BAUD_GET UART baud get.
- 
HOSAL_UART_DATA_WIDTH_SET UART data width set.
- 
HOSAL_UART_DATA_WIDTH_GET UART data width get.
- 
HOSAL_UART_STOP_BITS_SET UART stop bits set.
- 
HOSAL_UART_STOP_BITS_GET UART stop bits get.
- 
HOSAL_UART_FLOWMODE_SET UART flow mode set.
- 
HOSAL_UART_FLOWSTAT_GET UART flow state get.
- 
HOSAL_UART_PARITY_SET UART flow mode set.
- 
HOSAL_UART_PARITY_GET UART flow state get.
- 
HOSAL_UART_MODE_SET UART mode set.
- 
HOSAL_UART_MODE_GET UART mode get.
- 
HOSAL_UART_FREE_TXFIFO_GET UART free tx fifo get.
- 
HOSAL_UART_FREE_RXFIFO_GET UART free rx fifo get.
- 
HOSAL_UART_FLUSH Wait for the send to complete.
- 
HOSAL_UART_TX_TRIGGER_ON UART TX trigger on.
- 
HOSAL_UART_TX_TRIGGER_OFF UART TX trigger off.
- 
HOSAL_UART_DMA_TX_START UART DMA TX start trans.
- 
HOSAL_UART_DMA_RX_START UART DMA RX start trans.
- 
HOSAL_UART_CFG_DECL(cfg, id, tx, rx, baud) define a UART default config
- Parameters
 cfg: config defineid: uart idtx: uart tx pinrx: uart rx pinbaud: uart baud
- 
HOSAL_UART_DEV_DECL(dev, id, tx, rx, baud) define a UART device
- Parameters
 dev: uart deviceid: uart idtx: uart tx pinrx: uart rx pinbaud: uart baud
Type Definitions
- 
typedef int (*
hosal_uart_callback_t)(void *p_arg) hosal uart callback
- Return
 - 0 : on success
 - EIO : if an error occurred with any step
 
- Parameters
 p_arg: Set the custom parameters specified when the callback function is set
Enumerations
- 
enum 
hosal_uart_data_width_t UART data width.
Values:
- 
HOSAL_DATA_WIDTH_5BIT 
- 
HOSAL_DATA_WIDTH_6BIT 
- 
HOSAL_DATA_WIDTH_7BIT 
- 
HOSAL_DATA_WIDTH_8BIT 
- 
HOSAL_DATA_WIDTH_9BIT 
- 
 
- 
enum 
hosal_uart_flow_control_t UART flow control.
Values:
- 
HOSAL_FLOW_CONTROL_DISABLED 
- 
HOSAL_FLOW_CONTROL_RTS 
- 
HOSAL_FLOW_CONTROL_CTS 
- 
HOSAL_FLOW_CONTROL_CTS_RTS 
-