简介MT6701中文版数据手册是一份面向电机控制、机器人关节及非接触式旋钮等应用的磁性角度传感器技术文档适合嵌入式工程师、硬件开发者及电子相关专业学生阅读参考。资源包含1个PDF文件压缩包整体大小1.27MB完整收录芯片的引脚定义、功能框图、极限参数、电气性能、各输出模式时序、寄存器表及封装信息内容覆盖全面。已有824人学习下载可供快速查阅。该芯片基于差分霍尔原理实现0360°绝对角度位置检测支持I2C、SSI、ABZ、UVW、模拟电压、PWM及Z轴按压检测等多种输出方式最高转速55,000转/分钟角度延时小于5微秒。文档还重点说明了EEPROM编程注意事项、PUSH按压检测机制以及SOP-8和QFN3x3-16L封装差异对开展高精度磁感应方案选型、硬件设计或固件调试具有较强的实用参考价值。1. 从光电编码器换到磁编码MT6701这颗芯片能顶多少事如果你做过闭环步进或者BLDC的转子位置反馈大概率被光电编码器的安装精度折磨过——码盘要同心、光轴不能偏、震动一大就丢码。MT6701这颗基于差分霍尔原理的磁性角度传感器芯片用一个6mm径向充磁磁铁加一颗SOP-8或者QFN3x3-16L封装的小芯片直接输出0~360°绝对角度最高支持55,000转/分钟系统延时小于5微秒增量ABZ输出最高1024脉冲/圈。这个参数组合意味着它可以替掉相当一部分传统光电编码器而且对安装公差宽容得多。它解决的痛点是用一个低压差分霍尔方案拿到绝对角度、增量信号、换相信号还能带按压检测适合做闭环步进、BLDC控制、机器人关节、非接触旋钮和非接触电位计。下文从原理到接线再到EEPROM烧写把这份手册里真正能落地的东西拆开讲。2. 原理与选型差分霍尔电桥与光电编码器的替代边界2.1 内部结构两对90°电桥如何同时给出正弦和余弦MT6701检测的不是磁铁总磁场强度而是磁铁在芯片X-Y平面上旋转时Z轴方向的磁场分量。芯片内部放了两对互成90°放置的差分霍尔惠斯通电桥磁铁旋转时两对电桥分别感应出随角度变化的正弦和余弦电压后面接前端放大器、ADC、DSP角度计算单元最后通过DAC或者数字接口输出。差分结构的核心价值在于抗共模干扰——外部杂散磁场如果同时作用在两个桥臂上差分输出会把它抵消掉这也是它比单霍尔方案抗杂散磁场能力强的根本原因。信号链路里还有个容易忽略的细节供电端集成有LDO时钟由内部RC振荡器提供出厂校准参数和客户配置都存在内置EEPROM里。也就是说整颗芯片外围只需要一个0.1uF去耦电容就能跑不需要外部基准源也不需要外部晶振。这个集成度意味着PCB面积可以做得非常小对于非接触旋钮、机器人关节这类空间受限的场合很关键。系统上电准备时间手册给的是最大32ms。这个数值在最终产品设计里要当成一条硬约束——如果上电后MCU立即读角度要么软件延时要么等第一帧数据稳定后再启用否则拿到的是无效数据。2.2 关键参数对照转速、延时、精度与防护MT6701在磁场参数那一节给了明确的推荐安装条件磁铁直径6mm、厚度2.5mm、磁铁表面在芯片处的磁场强度200~1000 Gauss、磁铁与芯片表面间隙0.5~2.0mm推荐1.0mm、磁体中心与芯片感应中心偏心不超过0.3mm。这些数字不是随便写的直接决定INL和DNL能到多少。电气性能里ABZ模式积分非线性INL典型值±1.0°、最大值±1.5°差分非线性DNL典型值±0.02°瞬态噪声0.01°rms25℃。对于1024脉冲/圈的增量输出来说这个精度足够覆盖大多数闭环步进场景。角度输出的系统延时典型值小于5us意味着高速旋转时角度滞后很小用在高转速BLDC控制里不会因为传感器本身拖后腿。极限参数值得注意VDD脚耐压-0.5~7V工作温度-40~125℃ESD防护HBM模式±6kV。这些给的是可靠性的边界设计电路时要留裕量不要把VDD卡在5.5V附近跑。2.3 型号表怎么读脉冲/圈、方向与封装的默认组合手册里面有两个大系列的型号SOP-8的CT系列和QFN3x3-16L的QT系列。默认型号MT6701CT-STD是AB1脉冲/圈、Z1 LSB、模拟输出0~360°、逆时针转角度增加MT6701QT-STD则多了UVW1对极/圈。再往上CT-AKD是1000脉冲/圈、CT-ACD是1024脉冲/圈、CT-A600是600脉冲/圈后缀里的三位数字基本上是ABZ脉冲/圈数。选型时先确定你需要的增量分辨率再确认旋转方向STD后缀是逆时针角度增加STV是顺时针角度增加最后确认封装和湿敏等级。SOP-8是MSL-3QFN-16是MSL-1后者对回流焊湿度控制要求更宽松。3. 引脚复用与输出配置从SOP-8到QFN-16的接法清单3.1 引脚复用表与模式选择MODE引脚不是随便接的SOP-8总共8个脚其中6、7、8三个脚复用了I2C/SSI/ABZ/UVW四组功能。默认状态下MODE引脚内部有200KΩ上拉把它拉低选择ABZ模式悬空或者接高电平选择I2C/SSI模式。手册里对这个选择逻辑写得比较直接MODE接不同的电平决定6、7、8脚的角色。SOP-8的引脚功能复用关系如下表引脚I2CSSIABZUVWPWM/模拟其他3----OUT模拟/PWM输出5-----PUSH6SDADOAU--7SCLCLKBV--8-CSNZW-内置200K上拉QFN-16的复用更复杂6、7、8脚同样是I2C/SSI/ABZ共用但UVW和差分ABZ被拆到了9、11、12脚。手册第10页的I/O配置表把QFN-16的差分ABZ-A、-B、-Z单独列出来了如果你用差分信号做长线传输抗干扰QFN-16才是更合适的选择。实际项目中我一般优先选SOP-8手工焊接方便只有需要差分输出时才切到QFN-16。3.2 ABZ输出分辨率、Z脉冲宽度与上电行为ABZ模式的A、B两路是正交脉冲逆时针转动时B上升沿领先A上升沿1/4周期顺时针则反过来。Z脉冲每圈只出一个出现在零位。Z脉冲的宽度由寄存器Z_PUL_WID[2:0]控制可选1、2、4、8、12、16 LSB还可以选180°。分辨率由10比特的ABZ_RES[9:0]寄存器控制支持1~1024脉冲/圈任意整数。/* * 以MT6701 SOP-8为例配置ABZ分辨率为1024脉冲/圈 * 注意ABZ_RES是10位寄存器需要拆成两个字节写入 */ void mt6701_set_abz_res_1024(void) { // 假设I2C寄存器访问函数已经封装好 // 第1步写ABZ_RES低字节 i2c_write_reg(ABZ_RES_LOW_ADDR, 0x00); // 第2步写ABZ_RES高字节 // 1024 0x0400所以高字节写入0x04 i2c_write_reg(ABZ_RES_HIGH_ADDR, 0x04); // 第3步等待至少10ms让内部参数生效 delay_ms(10); }这段配置代码的关键在ABZ_RES的位宽手册里明确它是10比特寄存器所以1024脉冲/圈对应的是0x0400而不是0x0400放到8位寄存器里。很多开发者按8位习惯去写结果分辨率不对回头查寄存器才发现高位字节没处理。如果你要200脉冲/圈直接把0x00C8拆成低字节0xC8、高字节0x00写入即可。上电行为这里有两个版本的区别。默认配置下芯片上电后50ms以内ABZ不输出任何脉冲之后才输出稳定信号。手册里还有一种可配模式上电后AB会先输出一串先快后慢的脉冲序列对这串脉冲累加可以算出上电瞬时的绝对位置50ms内输出完成。如果你的系统上电后需要立刻知道转子在哪儿这个配置比单纯等50ms更实用。3.3 UVW/模拟/PWM换向、钳位与单线12位输出UVW模式提供互成120°的三相换相信号对极数由UVW_RES[3:0]寄存器控制1~16对极可编程。这个功能直接替代开关霍尔的位置反馈BLDC的方波控制里少三颗霍尔传感器的成本和布线。注意UVW的波形是U、V、W三路每圈的对极数越多电气角度分辨率越高但机械角度一圈要重复多次。模拟输出内部是一个12位DAC输出电压与绝对角度成线性关系默认0°对应0、360°对应VDD。手册给了两个可编程边界曲线起点A_Start、终点A_Stop还有钳位低电压0%或10%、钳位高电压100%或90%。这块是很多人忽略的默认曲线虽然够用但如果后端ADC参考电压范围不是0~VDD把输出曲线压缩到10%~90%反而更好匹配。PWM输出是单线12位绝对角度帧频率994.4Hz和497.2Hz可选出厂默认994.4Hz。一整帧分成4119份开头16个最小时钟周期固定高电平结尾8个最小时钟周期固定低电平中间4095份对应0~360°高电平个数与角度成线性关系。最小单位时钟周期默认244ns换算过来一个LSB是0.088°。需要注意的是PWM帧里那16个高电平是起始标志MCU解码时要先找到这个同步头不是一上来就数PWM占空比。4. 角度读取与EEPROM编程I2C/SSI时序与烧写电压边界4.1 I2C读14位角度两字节拼一个0~360°I2C接口是标准的芯片作为从机MCU作为主机。角度数据是14位分装在高字节和低字节里。手册的I2C读角度章节里强调的是连续读3个字节前两个字节是角度数据第三字节是状态位或者磁场强度信息。第一位的数据组装方式我按通用处理写成下面的代码/* * I2C读取MT6701 14位绝对角度 * 返回0~16383换算成角度用 degree raw * 360.0 / 16384.0 */ uint16_t mt6701_read_angle_i2c(void) { uint8_t buf[3]; uint16_t raw; // 连续读取3个字节 i2c_start(); i2c_send_byte((MT6701_I2C_ADDR 1) | 0x01); buf[0] i2c_read_byte(ACK); buf[1] i2c_read_byte(ACK); buf[2] i2c_read_byte(NACK); i2c_stop(); // 14位角度放在前两个字节高字节低6位有效 raw ((uint16_t)(buf[0] 0x3F) 8) | buf[1]; return raw; }关键在掩码处理buf[0]的高两位可能是状态标志位必须用0x3F把它mask掉否则角度会叠加上不可预料的跳变值。角度换算用float还是定点看你的MCU算力对精度要求不高的场合用raw 2转成12位也能跑。4.2 SSI接口CSN/CLK/DO三线时序SSI接口在SOP-8上对应6DO、7CLK、8CSN和I2C是同一组引脚两者只能选一个。读时序的典型做法是CSN拉低后在CLK的边沿同步锁存DO上的数据一次传输输出14位角度加若干状态位。手册里SSI时序图在7.8.1节实际用的时候我建议拿逻辑分析仪抓一次波形确认数据位顺序再写解析代码——尤其注意最高位在前还是最低位在前不同批次固件可能不一样。和I2C相比SSI的优点是时序更简单、更适合实时性强的控制循环因为CSN拉低后数据是纯硬件移位输出不需要应答读一帧的时间更短。缺点是占用三个IO而且线长时容易受干扰所以长距离走差分ABZ反而更稳。4.3 EEPROM编程VDD4.5V的烧写步骤与寄存器布局这是整份手册里最容易翻车的一节也是标题里反复强调的那句烧写时需要保证VDD4.5V的真正原因。芯片正常工作区间是3.0~5.5V但EEPROM编程电压要求VDD必须高于4.5V。很多板子用3.3V给MCU供电顺手把MT6701也接在3.3V上结果写配置写不进去或者写入成功后时不时丢配置大概率就是这个原因。下面是EEPROM编程的典型流程以写ABZ分辨率1024、Z脉冲宽度4LSB为例/* * MT6701 EEPROM编程示例 * 前提条件VDD已经升到4.5V以上 */ void mt6701_eeprom_program(void) { // 第1步写ABZ_RES低位寄存器 i2c_write_reg(0x00, 0x00); // 第2步写ABZ_RES高位寄存器1024 0x0400 i2c_write_reg(0x01, 0x04); // 第3步写Zero_MSB寄存器 // bit[6:4]Z_PUL_WID010表示4LSB宽度 // bit[3:0]ZERO[11:8]高4位默认0 i2c_write_reg(0x02, (0x02 4) | 0x00); // 第4步写Zero_LSB寄存器 // 零点位置低8位默认0 i2c_write_reg(0x03, 0x00); // 第5步触发EEPROM烧写命令 // 常见做法是向指定命令寄存器写入使能位 i2c_write_reg(EEPROM_CMD_ADDR, 0x01); // 第6步等待烧写完成 delay_ms(20); }寄存器地址这里我没有用具体的页地址因为不同Rev版本的手册寄存器表会有微调实际做产品时先拿你手里的Rev.1.6手册第8章逐条对一遍。烧写流程的通用逻辑是先把配置写进RAM镜像再发烧写命令把RAM内容固化到EEPROM最后断电重新上电验证。烧写期间如果VDD跌到4.5V以下可能出现写入一半的情况芯片内部参数错乱只能再烧一次恢复。EEPROM支持反复多次擦写这点对量产比较友好可以在产线先烧写再贴装也可以贴装后通过预留测试点烧。手册里没有给出具体擦写寿命数值但既然是EEPROM保守按1000次设计不会有问题。5. 常见问题与排查5个最容易让磁性方案翻车的坑5.1 EEPROM写了没生效先查VDD有没有到4.5V现象ABZ分辨率怎么配都是默认的1脉冲/圈Z脉冲宽度改来改去没变化。原因板子上MT6701接的是3.3V电源EEPROM编程电压不够写入命令根本没进去。手册明确写了烧写时需要保证VDD4.5V这个4.5V不是启动电压而是烧写电压。解决烧写时把VDD切到5V写完再切回3.3V正常工作。批量产线可以用一个LDO切换电路或者直接把MT6701供电设计成5VMCU侧用I2C电平转换隔开。5.2 上电50ms无ABZ输出别当成芯片故障现象系统上电后MCU立刻初始化编码器接口发现ABZ没有脉冲判定编码器不工作进入错误状态。原因MT6701默认配置下上电后50ms以内ABZ不输出脉冲这期间芯片在算初始位置不是故障。手册7.3节专门画了时序图50ms后才输出稳定信号。解决软件里加一个上电等待比如先延时60ms再启用编码器中断。如果你的系统要求上电立即知道位置改用带绝对位置脉冲序列的配置或者直接走I2C读一次绝对角度。5.3 角度跳动或换向错乱磁铁偏心永远是第一怀疑对象现象低速时角度输出还算稳定速度一起来角度跳变几个度或者正向转着转着突然反向。原因磁铁中心和芯片感应中心偏心超过0.3mm。手册的安装图给了明确约束偏心越大霍尔电桥感应到的磁场越不对称角度误差随转速放大。解决重新检查机械结构磁铁轴和芯片中心的同轴度控制在0.3mm以内。如果结构上做不到至少把间隙AG调到推荐值1.0mm附近因为间隙越大偏心带来的磁场畸变相对越小。实在不行就用QFN-16封装做回流焊焊盘定位精度比SOP-8手工焊高很多。5.4 模拟输出钳位不对12位DAC的曲线起点终点没配对现象模拟输出电压范围不对要么低端抬不起来要么高端提前饱和角度刻度不均匀。原因模拟输出模式的Clamp_Low、Clamp_High和A_Start、A_Stop四个参数是配套设置的只改起点不改终点输出曲线就被压缩了。默认配置是0%和100%如果你改了其中一个另一个也要按比例调。解决确定后端ADC的实际采样范围比如ADC参考电压是0~3.3V而VDD是5V那就把模拟输出配置成10%~90%钳位再用A_Start/A_Stop把机械角度映射到有效区间内。5.5 I2C地址冲突或读值跳变上拉与总线时序的隐藏坑现象多个I2C设备挂同一总线MT6701偶尔读取返回0xFFFF或者角度值周期性跳变。原因MT6701的SCL、SDA在SOP-8封装上和ABZ复用如果MODE引脚配成了ABZ模式这两个脚就不是I2C功能。另外手册参考电路里SCL、SDA各画了4.7K上拉如果MCU内部已经带强上拉总线时序会畸变。解决确认MODE电平状态I2C模式时MODE必须接高或者悬空。总线上加4.7K上拉MCU侧关掉内部上拉。读角度时连续读两次比较如果差值超过阈值就丢弃重读。6. 验证方法磁场强度、Z脉冲与最终整机测试6.1 用磁场强度寄存器快速判断装配MT6701内部可以读取磁场强度值这个功能平时容易被忽略但实际调试非常有用。芯片要求磁铁在芯片表面产生的磁场强度在200~1000 Gauss之间间隙过小磁场超上限间隙过大磁场掉到下限额以下两种情况角度精度都会恶化。调试步骤是装配完成后通过I2C读磁场强度寄存器如果数值在正常区间说明磁铁间隙和同心度基本没问题如果数值明显偏阈值先调间隙再查偏心。这套检查比单纯看角度输出更直接角度输出正常不代表磁场工作点最优磁场强度才是前因。6.2 Z脉冲实测与零点微调Z脉冲的位置决定了机械零点参考示波器或者逻辑分析仪挂上Z引脚手动缓慢旋转磁铁找到Z脉冲出现的角度。如果需要把零点挪到特定机械位置用Zero_MSB和Zero_LSB两个寄存器去配12位零点对应0~360°。注意Z_WIDTH位在Zero_MSB的高三位区域和ZERO高位共用同一个寄存器写的时候要小心不要互相覆盖。最后的整机验证我一般固定按两步走第一步常温下用I2C读角度和ABZ脉冲同时记录确认机械0°对应Z脉冲并且正反转时A/B相位关系正确第二步把速度拉到额定转速的80%看角度曲线是否圆滑、ABZ有没有丢脉冲。从那以后我每次换磁铁批次或者改机械结构都强制走一遍这个流程几分钟的验证能省掉后面整机调试的好几天。希望帮到你。本文还有配套的精品资源点击获取