经验分享 | 巧用QEI,计数更灵活

2024-03-22
浏览量:
158

工程苗小兵

先楫资深FAE工程师


电力电子与电力传动专业硕士研究生,一个从事了20多年的功率控制的工程小兵,有多年的电机驱动和电源控制经验,专注电力电子控制方向。

HPM67/63/62系列中几个常见应用需求


  • 输出固定个数的脉冲

  • 伺服应用中需要输出正交的固定脉冲反馈当前运动位置
  • 步进电机控制应用需要MCU输出指定脉冲个数,配置运行步长
  • 常规方法是配置PWM或GPTIMER,在每个脉冲输出后在中断中计数,最后软件封波
  • 高速、大数据量ADC采样

  • 光伏上拉弧检测需要采集多路ADC通道实现FFT运算,采集数据量大,采样频率高

  • 电能质量检测需要采集多路电流电压数据

  • ADC模块中虽然有序列采样DMA模式,但没有序列模式DMA转换完成中断,需要通过HDMA实现转换搬移,需要占用DMA通道。对于HPM67/63/62只有8个通道,会影响到其他应用使用DMA

  • LED显示屏驱动

  • 大屏LED显示需要确定固定脉冲个数和相位

  • 通常只能靠硬件指令控制延迟

  • 本文以正交输出脉冲和ADC序列采样为例介绍QEI灵活计数功能

QEI功能简介



  • 支持A,B,Z,H四个信号输入

  • 输入信号来自互联管理器TRGM

  • 来自TRGM的输入输出IO

  • 来自其他片上模块

  • 多种计数方式

  • 支持单相、两相 (正交/上下/方向脉冲)方波输入

  • 多个计数器

  • 相位计数器,即位置计数器

  • Z相计数器,即周数计数器测速计数器

  • 测定A,B相信号保持特定状态的时长,可反应电机转速信息

  • 位置匹配

  • 支持位置进行匹配检测。当电机运行到指定位置时,产生位置匹配标志事件

  • 该事件可以触发中断,DMA 请求,也可以作为事件输出

  • 定时器计数器

  • 32位,全局计数器

输出固定脉冲原理



  • 程序中使用了PWM、互联管理器、QEI三个模块

  • PWM负责输出脉冲和通过故障输入封锁脉冲

  • 互联管理器负责实现模块之间互联

  • QEI负责脉冲计数和计数比较产生故障信号,用于封波控制

  • 通过软件配置,不需要额外中断,内部连接不需要外部引脚连线

交脉冲输出的PWM配置



  • 正交脉冲输出配置

  • 配置比较器值位于周期的1/4和3/4处

  • 每个输出都包含2个比较器,A相为比较器0、1,B相为比较器2、3

  • 封波状态

  • 封波时输出电平均为低

  • 封波后需通过软件恢复输出



  • QEI脉冲输入配置

  • 配置比较输出通道8作为内部输出,与A、B脉冲输出独立,配置相位时更灵活

  • 通过比较器配置可以选择封波时刻

  • 使能内部故障封波

  • 使能内部故障0作为封波信号

  • 禁止硬件恢复脉冲输出


正交脉冲输出的QEI配置



  • QEI模式

  • 设置为方向+脉冲模式

  • 脉冲计数时是上下沿同时计数,即单个脉冲计两次

  • 禁止Z信号复位相位计数器

  • 使能位置匹配功能

  • 使能位置匹配功能,并允许匹配事件输出


正交脉冲输出的互联管理器配置



  • 互联管理器功能

  • 多路复选器(MUX)阵列

  • 支持多个输入和多个输出

  • 每个输出都可以单独配置,从众多输入中选择

  • 输入信号数字滤波器

  • 输出信号极性取反

  • 信号边沿到脉冲转换

  • DMA 请求管理,管理 PWMT,QDEC 和 HALL 的 DMA 请求

  • 互联管理器配置

  • 关联PWM 8通道输出至QEI脉冲输入

  • 禁止QEI的Z信号和方向信号

  • 关联QEI事件输出至PWM故障信号0


设置输出脉冲个数



  • PWM设置

  • 停止PWM模块,复位时基

  • 根据方向配置A、B相输出相位

  • 软件恢复PWM输出

  • 恢复PWM时需注意:GCR寄存器的FAULTCLR写1后,故障清除;随后需要把FAULTCLR位清0,否则再下一次故障发生后,当故障消除后PWM还会自动恢复

  • 启动PWM

  • QEI配置

  • 复位QEI计数器

  • 配置计数比较器,考虑QEI为上下沿计数,配置计数值为:计数值*2-1

  • 开启计数


正交脉冲输出波形



  • 上图是正交脉冲输出的波形

  • 棕色是A相输出、灰色是B相输出、红色是QEI计数事件

  • 程序设置为输出10个脉冲、正转

  • 不增加中断需求,减少软件开销


ADC序列模式中DMA连续转换



  • 程序中使用了PWM、互联管理器、ADC、QEI四个模块

  • PWM负责定时输出脉冲

  • 互联管理器负责实现模块之间互联

  • ADC启动序列DMA转换,最多转换4906个数据

  • QEI负责脉冲计数并产生计数比较中断,中断切换DMA存储地址


  • 选用ADC内部DMA,不占用HDMA通道


ADC序列模式中DMA连续转换代码



  • PWM、互联管理器、QEI配置与前文相似


  • 在QEI匹配中断中切换DMA目标地址

  • 无论是通过HDMA还是ADC内部DMA,在完成大数据量转换后都需要进入中断快速处理,QEI+ADC序列模式并不增加额外中断需求

  • 切换内部DMA目标地址时,需要复位内部DMA位;否则周期(Cycle)位将无法正确显示当前转换


总结


  • QEI可以实现更灵活的计数,并产生相应的计数事件匹配。

  • 互联管理器的内部互联更加自由,不占用外部引脚,可以产生中断或内部事件。

  • PWM模块包含多个比较器,可以实现多相位输出脉冲,控制更灵活、相位精度更高。

  • 通过多种组合用户可以根据实际应用实现更多功能。



END



“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,总部位于上海,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市张江高科技园区,并在天津、苏州、深圳和杭州均设立分公司。核心团队来自世界知名半导体公司管理团队,具有15年以上,超过20个SoC的丰富的研发及管理经验。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产的高性能通用MCU产品包含HPM6700/6400、HPM6300、HPM6200、HPM5300及HPM6800系列,性能领先国际同类产品并通过AEC-Q100认证。公司已完成ISO9001质量管理认证和ISO 26262/IEC61508功能安全管理体系双认证,全力服务中国乃至全球的工业、汽车和能源市场。更多信息,请访问 https://hpmicro.com/