欢迎来到纳米网!
首页 > 公众号文章>正文

FPGA FOC编码器模块详解:AS5047P与MT6835驱动方案

以下文章来源于FPGA之旅,作者电击小子

一. 简介

在使用有感FOC算法的时候,离不开使用编码器来获取电机角度,编码器的种类非常多,常见的有AS5600、AS5047P和MT6835等等,它们的驱动方式可以分为IIC、SPI、ABZ和HALL,其中最简单的就是ABZ方式了,因为它对于任意编码器来说,驱动方式都是一样的,只需要将脉冲对应的角度分辨率修改一下即可,而IIC和SPI则会根据不同的芯片,内部寄存器地址和位宽的不一样,驱动上会存在一些差异,针对这种驱动方式,如何能够在更换芯片后,对原工程的改动量最小,代码开发量最小,这正是本篇文章所要介绍的内容。

二. 编码器模块介绍

在多路FOC驱动板上,一共是支持了两种编码器和两种角度获取方式,分别是AS5047P和MT6835,SPI和ABZ。AS5047P的精度是14bit,MT6835的精度是21bit,它们的价格差不多,大家可以根据自己的需求进行选择,个人感觉精度越高的编码器调试起来越难(达到编码器精度所对应的效果),不知道大家是否有同样的感觉。

整个编码器模块的结构如下图所示,输入端为ABZ、SPI的引脚信号,则为角度、速度等信息。ABZ模块、SPI驱动模块和角度..检测模块为固定模块,更换编码器后也不需要进行修改,而AS5047P_SPI模块和MT6835_SPI模块则需要根据外接编码器类型进行选择。

6f6ec160-89e8-11f0-8c8f-92fbcf53809c.png

这样一来换新编码器的时候,只需要很小的开发工作就可以完成新编码器的驱动了。另外这三个角度获取模块通过generate条件编译控制,根据外部parameter参数即可选择对应的模块生效。

6fc7fb54-89e8-11f0-8c8f-92fbcf53809c.png

SPI驱动模块

SPI驱动模块的端口信号如下图所示,CPOL、CPHA控制SPI的模式,SCLK_DIV控制SPI的通信速率,DATA_WIDTH控制单次SPI通信的数据位宽,这样基本可以满足所有通过SPI的方式来获取角度的编码器了。

70288032-89e8-11f0-8c8f-92fbcf53809c.png

2. AS5047P_SPI模块

AS5047p读角度信息的过程可以通过数据手册来获取,一共需要发起两次的SPI传输,上一次发起的SPI回读数据会在下一次SPI传输时输出,过程如下图所示。

7081df9c-89e8-11f0-8c8f-92fbcf53809c.png

角度获取有两个寄存器可以读,分别是0x3FFF和0x3FFE,本次使用的是0x3FFF寄存器,然后NOP指令什么也不操作,最开始设计的时候也没有考虑那么多,直接先发送一个0x3FFF,然后发送一个NOP,这样就可以获取到角度信息了,刚开始用的时候,基本没有什么问题。

70e130e6-89e8-11f0-8c8f-92fbcf53809c.png

但是在后面继续用的时候,就出现了非常严重的bug,AS5047P会一直读到错误的数据,需要断电一下编码器才行。通过debug发现是回传数据的EF位拉高了,导致无法获取到正确的数据,而该状态信息是无法自行清除的,所以只要EF拉高了,在后续的通信过程中会一直拉高,导致角度获取异常。

通过数据手册可以看到,通过读ERRFL可以将错误状态信息给清除,那么我们可以将第二阶段的NOP指令换成ERRFL指令就可以了,这样即使在通信的过程中出现了问题,也会在下一次角度获取的时候,可以正常通信。

713f8c54-89e8-11f0-8c8f-92fbcf53809c.png

AS5047P的SPI精度为14bit,所以将获取到的原始数据转化为角度信息还需要将其乘上1440(扩大65536)即可。

3. MT6835_SPI模块

MT6835的角度获取过程会比AS5047P的先对而已简单许多,只需要一次SPI传输即可,传输过程如下图所示,在获取到数据之后,按照手册给的信息拼接成完整的角度。MT6835获取到的原始数据数据为21bit,将其转为角度需要乘上11.25即可。

719bbd3a-89e8-11f0-8c8f-92fbcf53809c.png

71f6b0dc-89e8-11f0-8c8f-92fbcf53809c.png

4.角度、速度、位置检测模块

角度信息在输入进模块的时候就已经是角度了,直接将信息输入即可。

速度信息采用单位时间内角度变化量进行求解,单位时间的选择不宜过大也不宜过小,本设计采用的是100us,角度输入的单位是°,直接计算出来的话是°/s,速度一般采用RPM转每分钟作为衡量单位,因此需要进行单位的转换,转换过程如下图所示。

10000为100us的倒数。

speed_angle_gap_sum为角度间隔总和

0.000015为每一个speed_angle_gap_sum代表的角度值, 转换方式为 1/(360*65536)

最后将角度信息扩大100倍进行输出

72521d82-89e8-11f0-8c8f-92fbcf53809c.png

位置控制由两个信号进行控制,一个是使能信号,当该信号使能后,模块才会累加角度间隔,避免在切换到位置控制的时候,目标角度和实际角度误差过大的问题。另外一个就是设置当前位置为初始位置,也就是将位置信息置零。

72a82cd6-89e8-11f0-8c8f-92fbcf53809c.png

5. ABZ模块

三.小结

本次主要给大家介绍了一下FPGA FOC驱动编码器模块的所有内容,和设计过程。在后续新型号的编码器添加进来的话,可以以最小的代价完成这项工作。

原文标题:FPGA FOC编码器(库)模块详解

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^