DRV_DLP

[English]

DRV_DLP API Status

API

drv_dlp_init()

drv_dlp_deinit()

drv_dlp_cfg_param()

drv_dlp_cfg_flow_ctrl()

drv_dlp_enable_tx()

drv_dlp_enable_rx()

drv_dlp_tx()

drv_dlp_get_tx_fifo_addr()

drv_dlp_rx()

drv_dlp_get_rx_fifo_addr()

drv_dlp_rx_async()

drv_dlp_cfg_rxtimeout_callback()

drv_dlp_input_control()

drv_dlp_output_control()

DRV_DLP API Reference

Header File

Functions

uint32_t drv_dlp_init(uint32_t dev_index)

init a dlp device.

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

参数:

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

返回值:
  • 0 – fail

  • other – success

返回:

device instance

int32_t drv_dlp_deinit(uint32_t dev_instance)

deinit a dlp device.

反初始化dlp设备,对drv_dlp_device_init()进行反向操作

参数:

dev_instance[in] return value of drv_dlp_device_init()

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_cfg_param(uint32_t dev_instance, dlp_bits_e e_data_bits, uint32_t stop_bits, dlp_parity_e e_parity, uint32_t baudrate)

config dlp parameter.

配置dlp的常规参数

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

  • e_data_bits[in] see dlp_bits_e

  • stop_bits[in] valid value: 1 and 2

  • e_parity[in] see dlp_parity_e

  • baudrate[in] 波特率设置

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_cfg_flow_ctrl(uint32_t dev_instance, dlp_polarity_e rts_pol, dlp_polarity_e cts_pol)

config dlp polarity.

流控的CTS、RTS选择

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

  • rts_pol[in] RTS polarity, see dlp_polarity_e

  • cts_pol[in] CTS polarity, see dlp_polarity_e

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_enable_tx(uint32_t dev_instance, bool enable)

dlp tx enable or not.

打开或关闭dlp的tx功能

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

  • enable[in] true: enable false: disable

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_enable_rx(uint32_t dev_instance, bool enable)

dlp rx enable or not.

打开或关闭dlp的rx功能

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

  • enable[in] true: enable false: disable

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

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

dlp send.

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

参数:
  • dev_instance[in] return value of drv_dlp_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_dlp_get_tx_fifo_addr(uint32_t dev_instance)

get dlp tx fifo address.

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

参数:

dev_instance[in] 参数说明部分

返回:

tx fifo address

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

dlp receive.

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

参数:
  • dev_instance[in] return value of drv_dlp_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_dlp_get_rx_fifo_addr(uint32_t dev_instance)

get dlp rx fifo address.

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

参数:

dev_instance[in] 参数说明部分

返回:

rx fifo address

int32_t drv_dlp_rx_async(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size, pfunc_dlp_cb_t pfn_cb)

dlp receive asynchronously.

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

参数:
  • dev_instance[in] return value of drv_dlp_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_dlp_cfg_rxtimeout_callback(uint32_t dev_instance, pfunc_dlp_rxtimeout_t pfn_cb, void *pv_arg)

config dlp rx timeout callback.

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

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

  • pfn_cb[in] callback for rx finish

  • pv_arg[in] callback parameter

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_input_control(uint32_t dev_instance, dlp_in_ctl_e e_ctl_val)

DLP input port control.

输入端口的控制,当使用手动控制方式时,会禁用输出端口

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

  • e_ctl_val[in] see dlp_in_ctl_e

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_output_control(uint32_t dev_instance, dlp_out_ctl_e e_ctl_val)

DLP output port control.

输出端口的控制,当使用手动控制方式时,会禁用输入端口

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

  • e_ctl_val[in] see dlp_out_ctl_e

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_dlp_get_byte(uint32_t dev_instance)

get rx byte from hw fifo.

参数:

dev_instance[in] return value of drv_dlp_device_init()

返回值:
  • >=0 – success

  • <0 – fail

返回:

result

int32_t drv_dlp_rx_fifo_read_enable(uint32_t dev_instance, uint32_t intr_level)

config rx fifo interrupt.

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

  • intr_level[in] generate interrupt when rx byte >= intr_level

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

Macros

DLP_DEVICE_NUM

Type Definitions

typedef enum _dlp_bits_e dlp_bits_e
typedef enum _dlp_parity_e dlp_parity_e
typedef enum _dlp_polarity_e dlp_polarity_e
typedef enum _dlp_in_ctl_e dlp_in_ctl_e
typedef enum _dlp_out_ctl_e dlp_out_ctl_e
typedef void (*pfunc_dlp_cb_t)(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
typedef void (*pfunc_dlp_rxtimeout_t)(uint32_t dev_instance, void *pv_arg)

Enumerations

enum _dlp_bits_e

Values:

enumerator DRV_DLP_5BITS
enumerator DRV_DLP_6BITS

data length: 5bit

enumerator DRV_DLP_7BITS

data length: 6bit

enumerator DRV_DLP_8BITS

data length: 7bit

enum _dlp_parity_e

Values:

enumerator DRV_DLP_ODD
enumerator DRV_DLP_EVEN

奇校验

enumerator DRV_DLP_PARITY_NONE

偶校验

不校验

enum _dlp_polarity_e

Values:

enumerator DRV_DLP_POL_HIGH_ACCEPT
enumerator DRV_DLP_POL_LOW_ACCEPT

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

enumerator DRV_DLP_POL_NONE

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

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

enum _dlp_in_ctl_e

Values:

enumerator DRV_DLP_IN_AUTO_CTL
enumerator DRV_DLP_IN_MANUAL_DISABLE

DLP自动控制端口输入使能 (default)

enumerator DRV_DLP_IN_MANUAL_ENABLE_FORCE_1

SW手动控制输入,关闭

enumerator DRV_DLP_IN_MANUAL_ENABLE_FROM_EXT

SW手动控制输入,打开并强制成1.

enum _dlp_out_ctl_e

Values:

enumerator DRV_DLP_OUT_AUTO_CTL
enumerator DRV_DLP_OUT_MANUAL_DISABLE

DLP自动控制端口输入使能 (default)

enumerator DRV_DLP_OUT_MANUAL_ENABLE_FORCE_1

SW手动控制输入,关闭

enumerator DRV_DLP_OUT_MANUAL_ENABLE_FORCE_0

SW手动控制输入,打开并强制成1.

enumerator DRV_DLP_OUT_MANUAL_ENABLE_FROM_DLP

SW手动控制输入,打开并强制成0.