DRV_UART

[English]

DRV_UART API Status

API

drv_uart_init()

drv_uart_deinit()

drv_uart_cfg_param()

drv_uart_cfg_flow_ctrl()

drv_uart_enable_tx()

drv_uart_enable_rx()

drv_uart_tx()

drv_uart_get_tx_fifo_addr()

drv_uart_rx()

drv_uart_get_rx_fifo_addr()

drv_uart_rx_async()

drv_uart_cfg_rxtimeout_callback()

uart_aec_data_dump()

DRV_UART UNIT Number

Capability

Number

UNIT Number

2

DRV_UART Pin and GPIO Map

uart Pin

Number

uart0_tx

0

uart0_rx

1

uart1_tx

7

uart1_rx

8

DRV_UART API Reference

Header File

Functions

uint32_t drv_uart_init(uint32_t dev_index)

init a uart device.

初始化uart设备,在使用uart功能前需要调用它获取device instance

参数:

dev_index[in] device index, from 0(the first device)

返回值:
  • 0 – fail

  • other – success

返回:

device instance

int32_t drv_uart_deinit(uint32_t dev_instance)

deinit a uart device.

反初始化uart设备,对drv_uart_device_init()进行反向操作

参数:

dev_instance[in] return value of drv_uart_device_init()

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_cfg_param(uint32_t dev_instance, uart_bits_e e_data_bits, uint32_t stop_bits, uart_parity_e e_parity, uint32_t baudrate)

config uart parameter.

配置uart的常规参数

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • e_data_bits[in] see uart_bits_e

  • stop_bits[in] valid value: 1 and 2

  • e_parity[in] see uart_parity_e

  • baudrate[in] 波特率设置

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_cfg_flow_ctrl(uint32_t dev_instance, uart_polarity_e rts_pol, uart_polarity_e cts_pol)

config uart polarity.

流控的CTS、RTS选择

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • rts_pol[in] RTS polarity, see uart_polarity_e

  • cts_pol[in] CTS polarity, see uart_polarity_e

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_enable_tx(uint32_t dev_instance, bool enable)

uart tx enable or not.

打开或关闭uart的tx功能

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • enable[in] true: enable false: disable

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_enable_rx(uint32_t dev_instance, bool enable)

uart rx enable or not.

打开或关闭uart的rx功能

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • enable[in] true: enable false: disable

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_tx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)

uart send.

uart 同步发送,直接写TX FIFO,全部数据写完后该函数才返回

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • pu1_buf[in] pointer to the send buffer

  • size[in] send buffer size

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

uint32_t drv_uart_get_tx_fifo_addr(uint32_t dev_instance)

get uart tx fifo address.

获取TX FIFO的地址,通常用来给上层套DMA使用时需要

参数:

dev_instance[in] 参数说明部分

返回:

tx fifo address

int32_t drv_uart_rx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)

uart receive.

uart 同步接收,直接读RX FIFO,读够期望的长度该函数才会返回

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • pu1_buf[in] pointer to the send receive

  • size[in] request rx size

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

uint32_t drv_uart_get_rx_fifo_addr(uint32_t dev_instance)

get uart rx fifo address.

获取RX FIFO的地址,通常用来给上层套DMA使用时需要

参数:

dev_instance[in] 参数说明部分

返回:

rx fifo address

int32_t drv_uart_rx_async(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size, pfunc_uart_cb_t pfn_cb)

uart receive asynchronously.

uart 异步接收,该函数立即,收够期望的长度后再调用 pfn_cb 通知用户 如果对方一直发送数据,我们这里响应太慢,rx FIFO存在full的可能 需要和对方协商好一次发的数据不要超过FIFO深度。推荐使用dma的方式来接收

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • pu1_buf[in] pointer to the send receive

  • size[in] request rx size

  • pfn_cb[in] callback when rx finish

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_uart_cfg_rxtimeout_callback(uint32_t dev_instance, pfunc_uart_rxtimeout_t pfn_cb, void *pv_arg)

config uart rx timeout callback.

通常是在uart套DMA使用的时候需要. drv_uart_rx()/drv_uart_rx_async() 这2种收数据的方式不需要配置该回调

参数:
  • dev_instance[in] return value of drv_uart_device_init()

  • pfn_cb[in] callback for rx finish

  • pv_arg[in] callback parameter

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

void uart_aec_data_dump(uint8_t *mic, uint8_t *ref, uint8_t *out, uint32_t len, uint32_t adc_ch)

Macros

UART_DEVICE_NUM

Type Definitions

typedef enum _uart_bits_e uart_bits_e
typedef enum _uart_parity_e uart_parity_e
typedef enum _uart_polarity_e uart_polarity_e
typedef void (*pfunc_uart_cb_t)(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
typedef void (*pfunc_uart_rxtimeout_t)(uint32_t dev_instance, void *pv_arg)

Enumerations

enum _uart_bits_e

Values:

enumerator DRV_UART_5BITS
enumerator DRV_UART_6BITS

data length: 5bit

enumerator DRV_UART_7BITS

data length: 6bit

enumerator DRV_UART_8BITS

data length: 7bit

enum _uart_parity_e

Values:

enumerator DRV_UART_ODD
enumerator DRV_UART_EVEN

奇校验

enumerator DRV_UART_PARITY_NONE

偶校验

不校验

enum _uart_polarity_e

Values:

enumerator DRV_UART_POL_HIGH_ACCEPT
enumerator DRV_UART_POL_LOW_ACCEPT

CTS/RTX极性: 高允许,低阻止

enumerator DRV_UART_POL_NONE

CTS/RTX极性: 低允许,高阻止

CTS/RTX极性: 不启用 (常用,需要和对方匹配)