写在前面:

MT6701 是 MagnTek 推出的新一代基于差分霍尔感应原理的磁性角度编码器芯片。值得一提的是 MT6701不仅提供 0~360° 的角度信号,而且还提供了一个“按压”输出,以实现单芯片的按钮(旋转+按压)功能。

本文介绍使用 STM32 HAL 库驱动 MT6701

  • IIC 方式驱动( 此方法仅能读取角度信息 )
#define SlaveAddress    0X0C        //MT6701 地址
#define ReadAddress1    0X03        //数据高位寄存器地址
#define ReadAddress2    0X04        //数据低位寄存器地址/** IIC 方式读取角度信息* 返回数据为 0 ~ 360 之间的浮点数* STM32 开启 IIC 高速模式*/
double ReadAngleIIC(void)
{uint32_t angle = 0;double fangle = 0;uint8_t ReadBuffer1,ReadBuffer2;HAL_I2C_Mem_Read(&hi2c1,SlaveAddress,ReadAddress1,I2C_MEMADD_SIZE_8BIT,&ReadBuffer1,1,0XFF);angle = ReadBuffer1;angle <<= 8;HAL_I2C_Mem_Read(&hi2c1,SlaveAddress,ReadAddress2,I2C_MEMADD_SIZE_8BIT,&ReadBuffer2,1,0XFF);angle += ReadBuffer2;angle >>= 2;            //取数据高 14 位fangle = (double)(angle * 360.0) / 16384.0;return fangle;
}
  • SSI 方式读取(此方式可以读取磁场信息)
#define Loss_of_Track       4
#define Button_Detected     3
#define Field_Weak          2
#define Field_Strong        1
#define Normal              0/** SSI 方式读取信息* mode == 0 返回角度信息,0~360 浮点数* mode == 1 返回磁场信息*/
double ReadDataSSI(uint8_t mode)
{uint8_t RawData[25] = {0};uint16_t angle = 0;double fangle = 0;HAL_GPIO_WritePin(SSI_CSN_GPIO_Port,SSI_CSN_Pin,GPIO_PIN_RESET);        //起始信号Delay_us(2);HAL_GPIO_WritePin(SSI_CLK_GPIO_Port,SSI_CLK_Pin,GPIO_PIN_RESET);        //跳过第一个时钟沿Delay_us(2);HAL_GPIO_WritePin(SSI_CLK_GPIO_Port,SSI_CLK_Pin,GPIO_PIN_SET);Delay_us(2);for(uint8_t i = 0; i < 25; i++)                                                                 //读取数据{HAL_GPIO_WritePin(SSI_CLK_GPIO_Port,SSI_CLK_Pin,GPIO_PIN_RESET);RawData[i] = HAL_GPIO_ReadPin(SSI_DI_GPIO_Port,SSI_DI_Pin);HAL_GPIO_WritePin(SSI_CLK_GPIO_Port,SSI_CLK_Pin,GPIO_PIN_SET);Delay_us(2);}HAL_GPIO_WritePin(SSI_CSN_GPIO_Port,SSI_CSN_Pin,GPIO_PIN_SET);          //结束信号for(uint8_t i = 0; i < 14; i++)angle += RawData[i] * (2 << (13 - i));fangle = (double)(angle * 180.0) / 16384.0;     //角度信息switch (mode){case 0:return fangle;case 1:{if(RawData[14])return Loss_of_Track;else if(RawData[15])return Button_Detected;else if(RawData[16])return Field_Weak;else if(RawData[17])return Field_Strong;elsereturn Normal;}default:return 0;}
}

这里先介绍两种常用的读取方式,对于一些简单的应用应该是足够了。

按钮” 输出使用十分便捷,芯片在检测到磁场变化后, PUSH 引脚直接输出低电平,如果有更高精度要求可以查看手册对其编程。

详细程序放在这里:

https://github.com/BaldnessBaby/MT6701_STM32_HAL

STM32 HAL库 驱动 MT6701 磁编码器相关推荐

  1. VL53L0x TOF激光测距的 stm32 HAL库驱动代码

    VL53L0x 是ST公司生成的 TOF激光测距传感器,得益于非常小巧的尺寸,很容易放入手机.无人机中,提供更加精准.稳定的测距方式. 本文代码,使用 STM32F4xx的 HAL库. VL53L0x ...

  2. stm32 hal库 AS5600磁编码器IIC通信读取角度

    stm32 hal库 AS5600磁编码器IIC通信读取角度 下载

  3. STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的 ...

  4. VL6810X驱动 距离和光线传感器 stm32 HAL库

    VL6810X驱动 距离和光线传感器 stm32 HAL库 代码 库文件和官方文档 注意事项 1. 2. 3. 这是一款ST出品的传感器,感觉用的人不多 网上没什么驱动代码,所以自己根据st的官方资料 ...

  5. 【春节歌曲回味 | STM32小音乐盒 】PWM+定时器驱动无源蜂鸣器(STM32 HAL库)

    l  STM32通过PWM与定时器方式控制无源蜂鸣器鸣响 l  STM32小音乐盒,歌曲进度条图形显示与百分比显示,歌曲切换 l  编程使用STM32 HAL库 l  IIC OLED界面编程,动画实 ...

  6. STM32 HAL库实现编码器测速

    STM32 HAL库实现编码器测速 (还开了串口1用来调试,下文没写:然后那个short的用法就是看平衡小车之家(就是喵呜实验室的文档里头的,用法确实惊艳),文末贴了工程) 编码器接口模式 TI1和T ...

  7. STM32 HAL库IIC驱动

    1. STM32上IIC的一些争议 关于STM32的IIC驱动,网上有很多争论,究竟是使用STM32自带的硬件IIC还是用IO口和软件模拟IIC呢?下面这个图形象展示了这些争论.总结一些:ST为了规避 ...

  8. STM32 HAL库

    STM32 HAL库 第三章 MDK5 软件入门 bug解决 关键文件介绍 程序仿真 User Keywords 语法提示 代码编辑/查看技巧 第四章 STM32F1 基础知识入门 MDK 下 C 语 ...

  9. 基于STM32 HAL库的遥控小车

    目录 前言 一.材料清单 二.系统概述 三.硬件设计 1.HC-SR04超声波模块 2.HC-05/06蓝牙模块 3.L298n电机驱动模块 四.代码 1.引脚设置 2.遥控部分 3.超声波报警部分 ...

最新文章

  1. stm32数据手册中文_浅聊STM32系统构架
  2. OCP换题库了,052新加的考题及答案整理-第16题
  3. [html] 你知道什么是粘性布局吗?
  4. UML类图画法及类之间几种关系
  5. SublimeText2使用笔记
  6. Redis中的键值过期操作
  7. Cisco单臂路由实验
  8. acctype mysql assoc_dedeCMS数据库类的一些常见的使用方法
  9. Php超出高度隐藏,html字符超出指定高度后省略显示_html/css_WEB-ITnose
  10. 拓端tecdat|Python用Markowitz马克维兹有效边界构建最优投资组合可视化分析四只股票
  11. 400,404,500报错页面总结
  12. 基于单片机的老人防摔GSM报警
  13. 锁定计算机和睡眠有什么区别,电脑休眠和睡眠哪个好?电脑计算机睡眠和休眠有什么区别...
  14. 学习是对自己最好的投资
  15. 2020期中考试总结
  16. TorchScript (将动态图转为静态图)(模型部署)(jit)(torch.jit.trace)(torch.jit.script)
  17. 5:实战2:微信自动加好友 JavaAppium
  18. 第二块显示屏(扩展屏)左右调整
  19. matlab对数函数ln5,ln5(ln55怎么算的求过程)
  20. 测试设计点-pc端和移动端微信加入群聊

热门文章

  1. unity字符串信息加密
  2. 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件
  3. 2022-11-01 网工进阶(三十四) IP组播协议(PIM)-模式概述、组播分发树的分类、PIM路由表项、PIM-DM工作原理(组播分发树的形成、配置举例)
  4. 动作捕捉系统用于微创手术
  5. 组件化开发之路由器模块详解(ActivityRouter源码详解)
  6. 【Linux】Linux网络编程(含常见服务器模型,上篇)
  7. Maven - Error:java: Annotation processing is not supported for module cycles. Please ensure that all
  8. HTML5七夕情人节表白网页_圣诞节3d相册(含音乐开关)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码
  9. 扩增子图片解读7三元图
  10. VQA系列论文(三)