PLB QEI编码器组件使用方法

PLB_QEI_Encoder 组件使用方法

功能

该组件支持如下功能:

  • AB脉冲计数,最大支持32bit
  • 圈数计数, 最大支持32bit
  • 指定脉冲数后,在该范围内循环计数
  • z相信号io输入
  • z相信号校准脉冲数
  • 输入信号滤波

资源占用

用户需要深入理解不同的配置会有不同的资源占用情况,资源占用的大小决定了PLB模块可以产生多少路QEI。有如下两种不同的资源占用情况,以HPM6Exx系列举例。

  • plb_ab_mode 只占用一个PLB通道,支持8路QEI,需要AB两个IO,支持如下功能
    • AB脉冲计数,最大支持32bit
    • 指定脉冲数后,在该范围内循环计数
    • 输入信号滤波
  • plb_abz_mode占用两个PLB通道,支持4路QEI,IO有两种情况
    • 只占用AB两个IO,支持如下功能
      • AB脉冲计数,最大支持32bit
      • 圈数计数, 最大支持32bit
      • 指定脉冲数后,在该范围内循环计数
      • 输入信号滤波
    • 占用ABZ三个IO,支持全部功能

配置说明

以如下代码为例

  • PHASE_COUNT_DEFAULT 配置的是 指定脉冲数后,在该范围内循环计数 中描述的脉冲数
  • QEI_XX_PIN_SOURCE 配置的是 xx相信号io输入 中描述的IO,来自于trgmux
  • cfg.mode 配置的是 plb_ab_mode or plb_abz_mode
  • FILTER_LENGTH_DEFAULT 配置的是 输入信号滤波 中描述的滤波长度
  • enable_z_pin 配置的是是否使能z相信号io输入
  • enable_phase 配置的是是否使能圈数计数
  • PLB_ABZ_USE_CHANNEL 配置的是PLB通道,可以在任何没有使用的通道中选择,注意不要与其他模块冲突。如果使用的是plb_abz_mode,则该初始化函数会自动占用你所选择的通道的下一个通道

    cfg.phase_cnt = PHASE_COUNT_DEFAULT;
    cfg.trgm_input.qei_a = QEI_A_PIN_SOURCE;
    cfg.trgm_input.qei_b = QEI_B_PIN_SOURCE;
    cfg.trgm_input.qei_z = QEI_Z_PIN_SOURCE;
    cfg.mode = plb_abz_mode;
    cfg.filter_length = FILTER_LENGTH_DEFAULT;
    cfg.enable_z_pin = false;
    cfg.enable_phase = true;
    plb_qei_encoder_init(BOARD_PLB_COUNTER, BOARD_PLB_TRGM, PLB_ABZ_USE_CHANNEL, &cfg);

接口说明

  • plb_qei_encoder_init 初始化函数,需要传入PLB通道和TRGM通道,以及配置结构体。
  • plb_qei_encoder_get_phase_count 获取指定脉冲数后,在该范围内循环计数,返回的是32bit无符号数。
  • plb_qei_encoder_get_laps_count 获取圈数计数,返回的是32bit无符号数。
  • plb_qei_encoder_set_phase_count 设置指定脉冲数,会从该值进行后续操作。
  • plb_qei_encoder_set_laps_count 设置圈数计数,会从该值进行后续操作。