STM32 HAL库 驱动 MT6701 磁编码器
写在前面:
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 磁编码器相关推荐
- VL53L0x TOF激光测距的 stm32 HAL库驱动代码
VL53L0x 是ST公司生成的 TOF激光测距传感器,得益于非常小巧的尺寸,很容易放入手机.无人机中,提供更加精准.稳定的测距方式. 本文代码,使用 STM32F4xx的 HAL库. VL53L0x ...
- stm32 hal库 AS5600磁编码器IIC通信读取角度
stm32 hal库 AS5600磁编码器IIC通信读取角度 下载
- STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机
STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的 ...
- VL6810X驱动 距离和光线传感器 stm32 HAL库
VL6810X驱动 距离和光线传感器 stm32 HAL库 代码 库文件和官方文档 注意事项 1. 2. 3. 这是一款ST出品的传感器,感觉用的人不多 网上没什么驱动代码,所以自己根据st的官方资料 ...
- 【春节歌曲回味 | STM32小音乐盒 】PWM+定时器驱动无源蜂鸣器(STM32 HAL库)
l STM32通过PWM与定时器方式控制无源蜂鸣器鸣响 l STM32小音乐盒,歌曲进度条图形显示与百分比显示,歌曲切换 l 编程使用STM32 HAL库 l IIC OLED界面编程,动画实 ...
- STM32 HAL库实现编码器测速
STM32 HAL库实现编码器测速 (还开了串口1用来调试,下文没写:然后那个short的用法就是看平衡小车之家(就是喵呜实验室的文档里头的,用法确实惊艳),文末贴了工程) 编码器接口模式 TI1和T ...
- STM32 HAL库IIC驱动
1. STM32上IIC的一些争议 关于STM32的IIC驱动,网上有很多争论,究竟是使用STM32自带的硬件IIC还是用IO口和软件模拟IIC呢?下面这个图形象展示了这些争论.总结一些:ST为了规避 ...
- STM32 HAL库
STM32 HAL库 第三章 MDK5 软件入门 bug解决 关键文件介绍 程序仿真 User Keywords 语法提示 代码编辑/查看技巧 第四章 STM32F1 基础知识入门 MDK 下 C 语 ...
- 基于STM32 HAL库的遥控小车
目录 前言 一.材料清单 二.系统概述 三.硬件设计 1.HC-SR04超声波模块 2.HC-05/06蓝牙模块 3.L298n电机驱动模块 四.代码 1.引脚设置 2.遥控部分 3.超声波报警部分 ...
最新文章
- stm32数据手册中文_浅聊STM32系统构架
- OCP换题库了,052新加的考题及答案整理-第16题
- [html] 你知道什么是粘性布局吗?
- UML类图画法及类之间几种关系
- SublimeText2使用笔记
- Redis中的键值过期操作
- Cisco单臂路由实验
- acctype mysql assoc_dedeCMS数据库类的一些常见的使用方法
- Php超出高度隐藏,html字符超出指定高度后省略显示_html/css_WEB-ITnose
- 拓端tecdat|Python用Markowitz马克维兹有效边界构建最优投资组合可视化分析四只股票
- 400,404,500报错页面总结
- 基于单片机的老人防摔GSM报警
- 锁定计算机和睡眠有什么区别,电脑休眠和睡眠哪个好?电脑计算机睡眠和休眠有什么区别...
- 学习是对自己最好的投资
- 2020期中考试总结
- TorchScript (将动态图转为静态图)(模型部署)(jit)(torch.jit.trace)(torch.jit.script)
- 5:实战2:微信自动加好友 JavaAppium
- 第二块显示屏(扩展屏)左右调整
- matlab对数函数ln5,ln5(ln55怎么算的求过程)
- 测试设计点-pc端和移动端微信加入群聊
热门文章
- unity字符串信息加密
- 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件
- 2022-11-01 网工进阶(三十四) IP组播协议(PIM)-模式概述、组播分发树的分类、PIM路由表项、PIM-DM工作原理(组播分发树的形成、配置举例)
- 动作捕捉系统用于微创手术
- 组件化开发之路由器模块详解(ActivityRouter源码详解)
- 【Linux】Linux网络编程(含常见服务器模型,上篇)
- Maven - Error:java: Annotation processing is not supported for module cycles. Please ensure that all
- HTML5七夕情人节表白网页_圣诞节3d相册(含音乐开关)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码
- 扩增子图片解读7三元图
- VQA系列论文(三)