HPM SDK
HPMicro Software Development Kit
QEI driver APIs

QEI driver APIs. More...

Macros

#define QEI_EVENT_WDOG_FLAG_MASK   (1U << 31)
 
#define QEI_EVENT_HOME_FLAG_MASK   (1U << 30)
 
#define QEI_EVENT_POSITIVE_COMPARE_FLAG_MASK   (1U << 29)
 
#define QEI_EVENT_Z_PHASE_FLAG_MASK   (1U << 28)
 

Typedefs

typedef enum qei_z_count_inc_mode qei_z_count_inc_mode_t
 counting mode of Z-phase counter More...
 
typedef enum qei_rotation_dir_cmp qei_rotation_dir_cmp_t
 motor rotation direction More...
 
typedef enum qei_counter_type qei_counter_type_t
 counter type More...
 
typedef enum qei_work_mode qei_work_mode_t
 qei work mode More...
 
typedef enum qei_speed_his_type qei_speed_his_type_t
 speed history type More...
 

Enumerations

enum  qei_z_count_inc_mode { qei_z_count_inc_on_z_input_assert = 0 , qei_z_count_inc_on_phase_count_max = 1 }
 counting mode of Z-phase counter More...
 
enum  qei_rotation_dir_cmp { qei_rotation_dir_cmp_positive = 0 , qei_rotation_dir_cmp_negative = 1 , qei_rotation_dir_cmp_ignore = 2 }
 motor rotation direction More...
 
enum  qei_counter_type { qei_counter_type_z = 0 , qei_counter_type_phase = 1 , qei_counter_type_speed = 2 , qei_counter_type_timer = 3 }
 counter type More...
 
enum  qei_work_mode { qei_work_mode_abz = 0 , qei_work_mode_pd = 1 , qei_work_mode_ud = 2 }
 qei work mode More...
 
enum  qei_speed_his_type { qei_speed_his0 = QEI_SPDHIS_SPDHIS0 , qei_speed_his1 = QEI_SPDHIS_SPDHIS1 , qei_speed_his2 = QEI_SPDHIS_SPDHIS2 , qei_speed_his3 = QEI_SPDHIS_SPDHIS3 }
 speed history type More...
 

Functions

static void qei_wdog_enable (QEI_Type *qei_x)
 enable qei watchdog More...
 
static void qei_wdog_disable (QEI_Type *qei_x)
 disable qei watchdog More...
 
static void qei_wdog_config (QEI_Type *qei_x, uint32_t timeout, bool enable)
 config watchdog More...
 
static void qei_phase_config (QEI_Type *qei_x, uint32_t phase_count, qei_z_count_inc_mode_t mode, bool z_calibrate)
 
static void qei_phase_set_index (QEI_Type *qei_x, uint32_t phase_index)
 set phase index More...
 
static void qei_output_trigger_event_enable (QEI_Type *qei_x, uint32_t event_mask)
 enable trigger event More...
 
static void qei_output_trigger_event_disable (QEI_Type *qei_x, uint32_t event_mask)
 disable trigger event More...
 
static void qei_load_read_trigger_event_enable (QEI_Type *qei_x, uint32_t event_mask)
 enable load read trigger event More...
 
static void qei_load_read_trigger_event_disable (QEI_Type *qei_x, uint32_t event_mask)
 disable load read trigger event More...
 
static void qei_z_cmp_set (QEI_Type *qei_x, uint32_t cmp)
 set zcnt postion compare value More...
 
static void qei_speed_cmp_set (QEI_Type *qei_x, uint32_t cmp)
 set spdcnt position compare value More...
 
static void qei_phase_cmp_set (QEI_Type *qei_x, uint32_t cmp, bool cmp_z, qei_rotation_dir_cmp_t rotation_dir)
 set Phase comparator value More...
 
static void qei_clear_status (QEI_Type *qei_x, uint32_t mask)
 clear qei status register More...
 
static uint32_t qei_get_status (QEI_Type *qei_x)
 get qei status More...
 
static bool qei_get_bit_status (QEI_Type *qei_x, uint32_t mask)
 get qei bit status More...
 
static void qei_irq_enable (QEI_Type *qei_x, uint32_t mask)
 enable qei irq More...
 
static void qei_irq_disable (QEI_Type *qei_x, uint32_t mask)
 disable qei irq More...
 
static void qei_dma_request_enable (QEI_Type *qei_x, uint32_t mask)
 enable dma request More...
 
static void qei_dma_request_disable (QEI_Type *qei_x, uint32_t mask)
 disable qei dma More...
 
static uint32_t qei_get_current_count (QEI_Type *qei_x, qei_counter_type_t type)
 get current counter value More...
 
static uint32_t qei_get_current_phase_phcnt (QEI_Type *qei_x)
 get current phcnt value More...
 
static bool qei_get_current_phase_astat (QEI_Type *qei_x)
 get current a phase status More...
 
static bool qei_get_current_phase_bstat (QEI_Type *qei_x)
 get current b phase status More...
 
static bool qei_get_current_phase_dir (QEI_Type *qei_x)
 get current phase dir More...
 
static uint32_t qei_get_count_on_read_event (QEI_Type *qei_x, qei_counter_type_t type)
 get read event count value More...
 
static uint32_t qei_get_count_on_snap0_event (QEI_Type *qei_x, qei_counter_type_t type)
 read the value of each phase snapshot 0 counter More...
 
static uint32_t qei_get_count_on_snap1_event (QEI_Type *qei_x, qei_counter_type_t type)
 read the value of each phase snapshot 1 counter More...
 
static uint32_t qei_get_speed_history (QEI_Type *qei_x, qei_speed_his_type_t hist_index)
 get speed history More...
 
static void qei_load_counter_to_read_registers (QEI_Type *qei_x)
 load phcnt, zcnt, spdcnt and tmrcnt into their read registers More...
 
static void qei_reset_counter_on_h_assert (QEI_Type *qei_x, uint32_t counter_mask)
 reset spdcnt/phcnt/zcnt More...
 
static void qei_pause_counter_on_pause (QEI_Type *qei_x, uint32_t counter_mask)
 pause spdcnt when PAUSE assert More...
 
static void qei_snap_enable (QEI_Type *qei_x)
 load phcnt, zcnt, spdcnt and tmrcnt into their snap registers More...
 
static void qei_snap_disable (QEI_Type *qei_x)
 disable snap More...
 
static void qei_counter_reset_assert (QEI_Type *qei_x)
 reset zcnt, spdcnt and tmrcnt to 0 More...
 
static void qei_counter_reset_release (QEI_Type *qei_x)
 qei counter reset release More...
 
static void qei_set_work_mode (QEI_Type *qei_x, qei_work_mode_t mode)
 set work mode More...
 

Detailed Description

QEI driver APIs.

Macro Definition Documentation

◆ QEI_EVENT_HOME_FLAG_MASK

#define QEI_EVENT_HOME_FLAG_MASK   (1U << 30)

#include <drivers/inc/hpm_qei_drv.h>

home flag

◆ QEI_EVENT_POSITIVE_COMPARE_FLAG_MASK

#define QEI_EVENT_POSITIVE_COMPARE_FLAG_MASK   (1U << 29)

#include <drivers/inc/hpm_qei_drv.h>

postion compare match flag

◆ QEI_EVENT_WDOG_FLAG_MASK

#define QEI_EVENT_WDOG_FLAG_MASK   (1U << 31)

#include <drivers/inc/hpm_qei_drv.h>

watchdog flag

◆ QEI_EVENT_Z_PHASE_FLAG_MASK

#define QEI_EVENT_Z_PHASE_FLAG_MASK   (1U << 28)

#include <drivers/inc/hpm_qei_drv.h>

z input flag

Typedef Documentation

◆ qei_counter_type_t

#include <drivers/inc/hpm_qei_drv.h>

counter type

◆ qei_rotation_dir_cmp_t

#include <drivers/inc/hpm_qei_drv.h>

motor rotation direction

◆ qei_speed_his_type_t

#include <drivers/inc/hpm_qei_drv.h>

speed history type

◆ qei_work_mode_t

#include <drivers/inc/hpm_qei_drv.h>

qei work mode

◆ qei_z_count_inc_mode_t

#include <drivers/inc/hpm_qei_drv.h>

counting mode of Z-phase counter

Enumeration Type Documentation

◆ qei_counter_type

#include <drivers/inc/hpm_qei_drv.h>

counter type

Enumerator
qei_counter_type_z 

Z counter

qei_counter_type_phase 

Phase counter

qei_counter_type_speed 

Speed counter

qei_counter_type_timer 

Timer counter

◆ qei_rotation_dir_cmp

#include <drivers/inc/hpm_qei_drv.h>

motor rotation direction

Enumerator
qei_rotation_dir_cmp_positive 

position compare need positive rotation

qei_rotation_dir_cmp_negative 

position compare need negative rotation

qei_rotation_dir_cmp_ignore 

ignore

◆ qei_speed_his_type

#include <drivers/inc/hpm_qei_drv.h>

speed history type

Enumerator
qei_speed_his0 

Speed history0

qei_speed_his1 

Speed history1

qei_speed_his2 

Speed history2

qei_speed_his3 

Speed history3

◆ qei_work_mode

#include <drivers/inc/hpm_qei_drv.h>

qei work mode

Enumerator
qei_work_mode_abz 

Orthogonal decoder mode

qei_work_mode_pd 

Directional (PD) mode

qei_work_mode_ud 

Up and Down (UD) mode

◆ qei_z_count_inc_mode

#include <drivers/inc/hpm_qei_drv.h>

counting mode of Z-phase counter

Enumerator
qei_z_count_inc_on_z_input_assert 

zcnt will increment or decrement when Z input assert

qei_z_count_inc_on_phase_count_max 

zcnt will increment when phcnt upcount to phmax, decrement when phcnt downcount to 0

Function Documentation

◆ qei_clear_status()

static void qei_clear_status ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

clear qei status register

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask

◆ qei_counter_reset_assert()

static void qei_counter_reset_assert ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

reset zcnt, spdcnt and tmrcnt to 0

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_counter_reset_release()

static void qei_counter_reset_release ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

qei counter reset release

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_dma_request_disable()

static void qei_dma_request_disable ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable qei dma

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask

◆ qei_dma_request_enable()

static void qei_dma_request_enable ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

enable dma request

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask

◆ qei_get_bit_status()

static bool qei_get_bit_status ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get qei bit status

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask
Return values
trueor false

◆ qei_get_count_on_read_event()

static uint32_t qei_get_count_on_read_event ( QEI_Type qei_x,
qei_counter_type_t  type 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get read event count value

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]typeqei_counter_type_t
Return values
countervalue

◆ qei_get_count_on_snap0_event()

static uint32_t qei_get_count_on_snap0_event ( QEI_Type qei_x,
qei_counter_type_t  type 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

read the value of each phase snapshot 0 counter

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]typeqei_counter_type_t
Return values
countervalue

◆ qei_get_count_on_snap1_event()

static uint32_t qei_get_count_on_snap1_event ( QEI_Type qei_x,
qei_counter_type_t  type 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

read the value of each phase snapshot 1 counter

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]typeqei_counter_type_t
Return values
countervalue

◆ qei_get_current_count()

static uint32_t qei_get_current_count ( QEI_Type qei_x,
qei_counter_type_t  type 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get current counter value

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]typeqei_counter_type_t
Return values
countervalue

◆ qei_get_current_phase_astat()

static bool qei_get_current_phase_astat ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get current a phase status

Parameters
qei_xQEI base address, HPM_QEIx(x=0...n)
Returns
a phase level

◆ qei_get_current_phase_bstat()

static bool qei_get_current_phase_bstat ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get current b phase status

Parameters
qei_xQEI base address, HPM_QEIx(x=0...n)
Returns
b phase level

◆ qei_get_current_phase_dir()

static bool qei_get_current_phase_dir ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get current phase dir

Parameters
qei_xQEI base address, HPM_QEIx(x=0...n)
Returns
dir

◆ qei_get_current_phase_phcnt()

static uint32_t qei_get_current_phase_phcnt ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get current phcnt value

Parameters
qei_xQEI base address, HPM_QEIx(x=0...n)
Returns
phcnt value

◆ qei_get_speed_history()

static uint32_t qei_get_speed_history ( QEI_Type qei_x,
qei_speed_his_type_t  hist_index 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get speed history

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]hist_indexqei_speed_his_type_t
Return values
speedhistory value
  • counter value

◆ qei_get_status()

static uint32_t qei_get_status ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

get qei status

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
Return values
qeistatus:

◆ qei_irq_disable()

static void qei_irq_disable ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable qei irq

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask

◆ qei_irq_enable()

static void qei_irq_enable ( QEI_Type qei_x,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

enable qei irq

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]mask

◆ qei_load_counter_to_read_registers()

static void qei_load_counter_to_read_registers ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

load phcnt, zcnt, spdcnt and tmrcnt into their read registers

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_load_read_trigger_event_disable()

static void qei_load_read_trigger_event_disable ( QEI_Type qei_x,
uint32_t  event_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable load read trigger event

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]event_mask

◆ qei_load_read_trigger_event_enable()

static void qei_load_read_trigger_event_enable ( QEI_Type qei_x,
uint32_t  event_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

enable load read trigger event

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]event_mask

◆ qei_output_trigger_event_disable()

static void qei_output_trigger_event_disable ( QEI_Type qei_x,
uint32_t  event_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable trigger event

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]event_mask

◆ qei_output_trigger_event_enable()

static void qei_output_trigger_event_enable ( QEI_Type qei_x,
uint32_t  event_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

enable trigger event

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]event_mask

◆ qei_pause_counter_on_pause()

static void qei_pause_counter_on_pause ( QEI_Type qei_x,
uint32_t  counter_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

pause spdcnt when PAUSE assert

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]counter_mask
  • 1 pause spdcnt when PAUSE assert
  • (1<<1) pause spdcnt when PAUSE assert
  • (1<<2) pause spdcnt when PAUSE assert

◆ qei_phase_cmp_set()

static void qei_phase_cmp_set ( QEI_Type qei_x,
uint32_t  cmp,
bool  cmp_z,
qei_rotation_dir_cmp_t  rotation_dir 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

set Phase comparator value

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]cmpphcnt position compare value
[in]cmp_z1- postion compare not include zcnt
[in]rotation_dirqei_rotation_dir_cmp_t

◆ qei_phase_config()

static void qei_phase_config ( QEI_Type qei_x,
uint32_t  phase_count,
qei_z_count_inc_mode_t  mode,
bool  z_calibrate 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]phase_countmaximum phcnt number, phcnt will rollover to 0 when it upcount to phmax
[in]mode
  • 1 zcnt will increment when phcnt upcount to phmax, decrement when phcnt downcount to 0
  • 0 zcnt will increment or decrement when Z input assert
[in]z_calibrate1- phcnt will set to phidx when Z input assert

◆ qei_phase_set_index()

static void qei_phase_set_index ( QEI_Type qei_x,
uint32_t  phase_index 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

set phase index

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]phase_indexphcnt reset value, phcnt will reset to phidx when phcaliz set to 1

◆ qei_reset_counter_on_h_assert()

static void qei_reset_counter_on_h_assert ( QEI_Type qei_x,
uint32_t  counter_mask 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

reset spdcnt/phcnt/zcnt

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]counter_mask
  • 1 reset zcnt when H assert
  • (1<<1) reset phcnt when H assert
  • (1<<2) reset spdcnt when H assert

◆ qei_set_work_mode()

static void qei_set_work_mode ( QEI_Type qei_x,
qei_work_mode_t  mode 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

set work mode

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]modeqei_work_mode_t

◆ qei_snap_disable()

static void qei_snap_disable ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable snap

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_snap_enable()

static void qei_snap_enable ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

load phcnt, zcnt, spdcnt and tmrcnt into their snap registers

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_speed_cmp_set()

static void qei_speed_cmp_set ( QEI_Type qei_x,
uint32_t  cmp 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

set spdcnt position compare value

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]cmpspdcnt position compare value

◆ qei_wdog_config()

static void qei_wdog_config ( QEI_Type qei_x,
uint32_t  timeout,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

config watchdog

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]timeoutwatchdog timeout time
[in]enable

◆ qei_wdog_disable()

static void qei_wdog_disable ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

disable qei watchdog

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_wdog_enable()

static void qei_wdog_enable ( QEI_Type qei_x)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

enable qei watchdog

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)

◆ qei_z_cmp_set()

static void qei_z_cmp_set ( QEI_Type qei_x,
uint32_t  cmp 
)
inlinestatic

#include <drivers/inc/hpm_qei_drv.h>

set zcnt postion compare value

Parameters
[in]qei_xQEI base address, HPM_QEIx(x=0...n)
[in]cmpzcnt postion compare value