53. QEO
53.1. Overview
QEO (Quadrature Encoder Output) is a peripheral for generating quadrature encoder signals. QEO peripheral can generate various types of output signals based on input position information:
ABZ quadrature encoder signals
Waveform signals (cosine wave, triangle wave, saddle wave, etc.)
PWM commutation control signals
53.2. Features
- Position Input Support:
Position input from system position manager
Software position injection
Support for position compensation and line number conversion
- Waveform Output Features:
Support for 4 waveform types: cosine wave, triangle wave, saddle wave, sawtooth wave
3 independent output channels with configurable phase shift
Support for VD/VQ control
Support for waveform scaling, limiting, and deadzone compensation
Analog signal output through DAC
- ABZ Output Features:
- Support for 4 output modes:
A/B quadrature output with internal position
High-speed pulse (Pulse&Revise) output
Up&Down output
A/B quadrature output without internal position
Built-in position manager with position synchronization
Configurable minimum pulse width
Watchdog function support
- PWM Output Features:
Support for 8 groups of PWM force output control signals
Configurable up to 12-phase commutation table
Safety mode configuration support
Support for three-phase BLDC and two-phase stepper motor control
53.3. API Description
53.3.1. Waveform Output APIs
/* Get default configuration for wave mode */
void qeo_wave_get_default_mode_config(QEO_Type *ptr, qeo_wave_mode_t *config);
/* Configure wave mode */
void qeo_wave_config_mode(QEO_Type *ptr, qeo_wave_mode_t *config);
/* Set wave resolution lines */
void qeo_wave_set_resolution_lines(QEO_Type *ptr, uint32_t lines);
/* Set wave phase shift */
void qeo_wave_set_phase_shift(QEO_Type *ptr, uint8_t wave_index, uint32_t phase_shift);
/* Get wave output value */
uint16_t qeo_get_wave_output_val(QEO_Type *ptr, uint8_t wave_index);
53.3.2. ABZ Output APIs
/* Get default configuration for ABZ mode */
void qeo_abz_get_default_mode_config(QEO_Type *ptr, qeo_abz_mode_t *config);
/* Configure ABZ mode */
void qeo_abz_config_mode(QEO_Type *ptr, qeo_abz_mode_t *config);
/* Set ABZ resolution lines */
void qeo_abz_set_resolution_lines(QEO_Type *ptr, uint32_t lines);
/* Set ABZ maximum output frequency */
hpm_stat_t qeo_abz_set_max_frequency(QEO_Type *ptr, uint32_t src_freq_hz, uint32_t max_freq_hz);
/* Configure ABZ position synchronization */
void qeo_abz_position_sync(QEO_Type *ptr, uint32_t position);
53.3.3. PWM Output APIs
/* Get default configuration for PWM mode */
void qeo_pwm_get_default_mode_config(QEO_Type *ptr, qeo_pwm_mode_t *config);
/* Configure PWM mode */
void qeo_pwm_config_mode(QEO_Type *ptr, qeo_pwm_mode_t *config);
/* Set PWM resolution lines */
void qeo_pwm_set_resolution_lines(QEO_Type *ptr, uint32_t lines);
/* Configure PWM phase table */
void qeo_pwm_config_phase_table(QEO_Type *ptr, uint8_t phase_num, uint8_t *phase_table);
53.3.4. Position Control APIs
/* Enable software position injection */
void qeo_enable_software_position_inject(QEO_Type *ptr);
/* Disable software position injection */
void qeo_disable_software_position_inject(QEO_Type *ptr);
/* Inject position value through software */
void qeo_software_position_inject(QEO_Type *ptr, uint32_t position);