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.超声波报警部分 ...
最新文章
- Python知识点进阶——生成器
- Java 8怎么了:局部套用vs闭包
- 繁星代码生成器0.91版 【视频】
- (7)操作系统安全机制一
- PowerBI随笔(7)-lookupvalue、divide
- 唯品会在 Flink 容器化与平台化上的建设实践
- 详细透彻的分析DM9000网卡驱动程序(3)
- golang select总结
- 递归求出第n项斐波那契数列_Java
- php自定义类生成lib,thinkphp引入自定义封装类
- 我的2017:从工作再到学生
- core部署iis的 调试net_ASP.NET Core环境变量和启动设置的配置教程
- ADN8831ACPZ特征TPS63020DSJR应用 具有 4A 开关转换器
- idea研习录(01)——ideaIU-2017.3.7安装详解
- 算法基础:用递归解决排列组合问题
- OBLOG4.5 商业SQL版 漏洞解析
- upload-labs-master 通关分析
- BJ54坐标或者XA80坐标到WGS84坐标的转换(小工具附代码)
- Google Adsense 西联汇款
- BZOJ4200 洛谷2304 UOJ132:[NOI2015]小园丁与老司机——题解
热门文章
- 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)上
- C++最精准的RGB-HSB(HSV)-HSL的色值转换
- python基础代码汇总
- 计算机导论中复位什么意思,计算机导论期末复习资料
- 谭浩强C语身教程第一章---C措辞概述(2)
- Flutter 之简洁实用的图片编辑器
- 用VB6亲身开发一个Windows软件(一)小引
- AAAI 2022大奖出炉!9000投稿选出唯一杰出论文!中科院自动化所获Distinguished论文奖...
- 8. 使用 Azure Function
- 利用Wireless Repeater(无线中继模式)扩大你的无线网络