写在前面:

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. Python知识点进阶——生成器
  2. Java 8怎么了:局部套用vs闭包
  3. 繁星代码生成器0.91版 【视频】
  4. (7)操作系统安全机制一
  5. PowerBI随笔(7)-lookupvalue、divide
  6. 唯品会在 Flink 容器化与平台化上的建设实践
  7. 详细透彻的分析DM9000网卡驱动程序(3)
  8. golang select总结
  9. 递归求出第n项斐波那契数列_Java
  10. php自定义类生成lib,thinkphp引入自定义封装类
  11. 我的2017:从工作再到学生
  12. core部署iis的 调试net_ASP.NET Core环境变量和启动设置的配置教程
  13. ADN8831ACPZ特征TPS63020DSJR应用 具有 4A 开关转换器
  14. idea研习录(01)——ideaIU-2017.3.7安装详解
  15. 算法基础:用递归解决排列组合问题
  16. OBLOG4.5 商业SQL版 漏洞解析
  17. upload-labs-master 通关分析
  18. BJ54坐标或者XA80坐标到WGS84坐标的转换(小工具附代码)
  19. Google Adsense 西联汇款
  20. BZOJ4200 洛谷2304 UOJ132:[NOI2015]小园丁与老司机——题解

热门文章

  1. 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)上
  2. C++最精准的RGB-HSB(HSV)-HSL的色值转换
  3. python基础代码汇总
  4. 计算机导论中复位什么意思,计算机导论期末复习资料
  5. 谭浩强C语身教程第一章---C措辞概述(2)
  6. Flutter 之简洁实用的图片编辑器
  7. 用VB6亲身开发一个Windows软件(一)小引
  8. AAAI 2022大奖出炉!9000投稿选出唯一杰出论文!中科院自动化所获Distinguished论文奖...
  9. 8. 使用 Azure Function
  10. 利用Wireless Repeater(无线中继模式)扩大你的无线网络