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,支持全部功能
- 只占用AB两个IO,支持如下功能
配置说明
以如下代码为例
- PHASE_COUNT_DEFAULT 配置的是
指定脉冲数后,在该范围内循环计数
中描述的脉冲数 - QEI_XX_PIN_SOURCE 配置的是
xx相信号io输入
中描述的IO,来自于trgmux - cfg.mode 配置的是
plb_ab_mode
orplb_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 设置圈数计数,会从该值进行后续操作。