STM32 软件I2C方式读取MT6701磁编码器获取角度例程

STM32 软件I2C方式读取MT6701磁编码器获取角度例程


  • 📍相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》
  • 🌿《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》
  • 🔰MT6701芯片和AS5600从软件读取对比,只是读取的寄存器和访问的设备地址不同而已,所以稍作修改即可实现通用一个驱动模板。

📙MT6701 IIC接口电路

在这里插入图片描述
在这里插入图片描述

  • 🔖 第八引脚注意是直接接到VCC,而不是使用电阻上拉。(其内部是有上拉电阻到VCC的)

⛳MT6701 I2C 读取角度操作

MT6701做为I2C从机的地址是b’0000110(这一地址可以通过编程改为b’1000110 )。14位绝对角度数据(2的14次方,16384)保存在0x03和0x04寄存器中,请按照如图-20所示的读取0x03和0x04的角度数据。
注意:要先读0x03,再读0x04。
在这里插入图片描述

⛳注意事项

  • ✨在MT6701芯片和径向磁铁一定要保持稳定的空间距离,一旦空间距离有较大的变化,在读取MT6701芯片寄存器数据就可能出现最大值情况。在检测时,芯片和径向磁铁轴向和径向都需要相对稳定。
    在这里插入图片描述

📗读取代码实现部分

//函数:u8 MT6701_ReadOneByte(u8 ReadAddr)
//功能:从MT6701模块读取一个字节的数据
//参数:ReadAddr    要读取的地址
//返回:读取到的数据
static u8 MT6701_ReadOneByte(u8 ReadAddr)
{                  u8 temp=0;                                                                                   IIC_Start();  IIC_Send_Byte((0x06<<1)|0x00);       //IIC_Wait_Ack(); IIC_Send_Byte(ReadAddr);   //IIC_Wait_Ack();        IIC_Start();              IIC_Send_Byte((0x06<<1)|0x01);           //           IIC_Wait_Ack();     temp=IIC_Read_Byte(0);           IIC_Stop();//       return temp;
}
//读2个字节数据,获取原始角度
u16 MT6701_ReadTwoByte(u8 higher,u8 lower)
{u16 TwoByte_Data = 0;u16 hi_Data = 0,lo_Data = 0;//Read the first byte (higher address)hi_Data = MT6701_ReadOneByte(higher);//Read the second byte (lower address)lo_Data = MT6701_ReadOneByte(lower);//Combine the two bytes into a single 16-bit valueTwoByte_Data  = (uint16_t)(lo_Data>> 2);TwoByte_Data |= ((uint16_t)hi_Data << 6);//Return the 16-bit valuereturn TwoByte_Data;
}

在这里插入图片描述

  • 📝main函数代码
int main(void)
{u16 i = 0;u16 raw_num = 0;float Angle = 0.0f;u8 addr = 0;u8 ack;u8 read = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2delay_init(); //延时函数初始化uart_init(115200);	//串口初始化为115200printf("MT6701 test\r\n");printf("Scanning I2C bus:\r\n");LED_Init();	//初始化与LED连接的硬件接口IIC_Init();for(addr = 0 ; addr < 255 ; addr++) {IIC_Start();IIC_Send_Byte(addr);	//ack = IIC_Wait_Ack();if(ack == 0 && (read % 2 == 0)) {printf("write addr = 0x%x\r\n", addr);read++;} else if(ack == 0 && read % 2 == 1) {printf("read addr = 0x%x\r\n", addr);read++;}IIC_Stop();}//for(i=0x00;i<0xFF;i++)// {//	IIC_Start();//	IIC_Send_Byte(i);//	if(IIC_ACK_Read()==1)//	{//	printf("%x\r\n",i);//	count=1;//	}//	IIC_Stop();//	delay_ms(1);// }// if(count==0) printf("No IIC device found!\r\n");// count=0;while(1) {delay_ms(10);if(++i > 100) {raw_num = MT6701_ReadTwoByte(0x03, 0x04); //读取两个寄存器的值Angle = (float)(raw_num / 16384.0f) * 360.0f ; //对寄存器值进行处理得到角度值printf("MT6701 Raw_num:%d,Angle:%.1f \r\n", raw_num, Angle);LED0 = !LED0; //提示系统正在运行i = 0;}}
}

📚驱动测试代码

链接:https://pan.baidu.com/s/1YRTLFoUJvrdWfcs6dL-qdg?pwd=fsif 
提取码:fsif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2978568.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX——Promise-链式调用

1.Promise链式调用 概念&#xff1a;依靠then()方法会返回一个新生成的Promise对象特性&#xff0c;继续串联下一环任务&#xff0c;知道结束 细节&#xff1a;then()回调函数中的返回值&#xff0c;会影响新生成的Promise对象最终状态和结果 好处&#xff1a;通过链式调用&…

恒峰智慧科技—森林消防泵:既可灭除火灾,又可清理水患

在广袤的森林中&#xff0c;火灾与水患如同潜伏的猛兽&#xff0c;时刻威胁着生态的安全。然而&#xff0c;随着科技的进步&#xff0c;我们有了更强大的武器来对抗这些威胁——森林消防泵。这款神奇的设备不仅能迅速扑灭火灾&#xff0c;还能在雨季到来时清理水患&#xff0c;…

ragflow 大模型RAG知识库使用案例

参考: https://github.com/infiniflow/ragflow/blob/main/README_zh.md 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据, 网页等。 运行步骤: 1、确保 vm.max_map_count 不小于 262144 【更多】: 如需确认 vm.…

磐石云外呼系统使用注意事项

磐石云外呼系统是一种基于云计算技术的电话外呼服务&#xff0c;旨在帮助企业提高外呼效率&#xff0c;增强客户沟通和服务能力。在使用过程中&#xff0c;企业需要注意系统的选择、安装、配置、使用方法以及数据安全和合规性等方面的问题。 使用前的准备 在使用磐石云外呼系统…

Apifox 最新功能更新:OAuth 2.0 支持及高级Mock选项

看看本次版本更新主要涵盖的重点内容&#xff0c;有没有你所关注的功能特性&#xff1a; 支持配置 OAuth 2.0 并直接获取访问令牌校验响应设置细化「多分支」支持 Mock自动化测试批量运行可设置统一环境Dubbo 项目调试支持发送 Attachment 隐式参数用户反馈优化 提升加载速度…

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型

电子信息制造工厂5G智能制造数字孪生可视化平台&#xff0c;推进数字化转型。5G智能制造数字孪生可视化平台利用5G网络的高速、低延迟特性&#xff0c;结合数字孪生技术和可视化界面&#xff0c;为电子信息制造工厂提供了一种全新的生产管理模式。不仅提升生产效率&#xff0c;…

arm架构,django4.2.7适配达梦8数据库

【Python相关包版本信息】 Django 4.2.7 django-dmPython 3.1.7 dmPython 2.5.5 【达梦数据库版本】 DM Database Server 64 V8 DB Version: 0x7000c 适配过程中发现的问题如下&#xff1a; 错误一&#xff1a;d…

抢先看!LEADTOOLS V23 全新版发布,预览全新产品线布局!

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

基于高斯壳映射的高效三维人体生成

Gaussian Shell Maps for Efficient 3D Human Generation 基于高斯壳映射的高效三维人体生成 Rameen Abdal*1  Wang Yifan*1  Zifan Shi*†1,2  Yinghao Xu1  Ryan Po1  Zhengfei Kuang1 Rameen Abdal *1 王一凡 *1 Zifan Shi *†1,2 Yinghao Xu 1 Ryan Po 1 Jengfei Kuan…

java对接IPFS系统-以nft.storage为列

引言 之前我们已经说过了、NFT.Storage是一个基于IPFS的分布式存储服务&#xff0c;专门用于存储和管理非同质化代币&#xff08;NFT&#xff09;相关的数据和资产。它是由Protocol Labs和Pinata共同推出的服务。今天我们基于nft.storage为列、使用java对接打通这个ipfs分布式存…

OmniFocus Pro 4.2.1正式激活版 最好用的GTD效率工具

OmniFocus 是一款功能强大的任务管理软件&#xff0c;适合忙碌的专业人士。借助有助于平息混乱的工具&#xff0c;您可以在正确的时间专注于正确的任务。 OmniFocus Pro 4.2.1正式激活版下载 随时随地轻松创建任务&#xff0c;并通过项目、标签和日期进行整理。在任何设备上&am…

埋点,自己写插件,自己写的按钮埋点,掘金同款投递简历

20分钟掌握 Vite 插件开发 - 掘金 vite的生命周期啥的 1.浏览器的控制台输出有样式的字 // const randomLetterPlugin ()>{ // const letters [wwwwwww,000000000000,888888888888]; // //随机获取一个字符并打印 // const printRandomLetter ()>{ // …

【基础算法总结】双指针算法一

双指针 1.移动零2.复写零3.快乐数4.盛水最多的容器 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.移动零 题目链接&#xff1a;283. 移动…

40. UE5 RPG给火球术增加特效和音效

前面&#xff0c;我们将火球的转向和人物的转向问题解决了&#xff0c;火球术可以按照我们的想法朝向目标发射。现在&#xff0c;我们解决接下来的问题&#xff0c;在角色释放火球术时&#xff0c;会产生释放音效&#xff0c;火球也会产生对应的音效&#xff0c;在火球击中目标…

蓝桥杯2024年第十五届省赛真题-拔河

审题可能会遇到的问题&#xff1a;认为所有人都必须参与拔河&#xff0c;但其实不用&#xff0c;只要符合l1<r1<l2<r2就行&#xff0c;不一定要全部人上场&#xff0c;比如只上场a1和a2他们的力量差是1其实也可以。 正解思路&#xff1a;前缀和枚举二分。枚举左区间&…

【Unity学习笔记】第十三 · tag与layer(运行时创建tag和layer)

参考&#xff1a; Unity手册 标签Unity手册 LayersIs it possible to create a tag programmatically?脚本自动添加tag和Layer 注&#xff1a;本文使用Unity版本是2022.3.23f1 转载引用请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/de…

HarmonyOS-静态库(SDK)的创建和使用

文章目录 一、静态库&#xff08;SDK&#xff09;二、创建静态库1.新建静态库模块2. 开发静态库内容3. 编译静态库 三、使用静态库1. 配置项目依赖2. 在应用中使用静态库3. 注意事项 四、打包错误1. library引用本地har包错误 一、静态库&#xff08;SDK&#xff09; 在Harmon…

[XR806开发板试用] ‍ 母婴看板

存在的问题&#xff1a;在家做月子时候&#xff0c;家人希望时不时地进屋里看小孩&#xff0c;但是如果这时候小孩子在睡觉&#xff0c;或者妈妈在哺乳&#xff0c;如果贸然地进来是不是很不礼貌&#xff0c;纵使是敲门&#xff0c;这时候会不会吵到小孩子呢。 解决问题的思路…

COZY: Stylized Weather 3

远离枯燥的现实主义,一个精美手工制作的程式化天气系统。 从一天中的不同时间到一年中的不同季节,从蓬松的云朵到狂风暴雨,从晴朗的日子到浓雾弥漫,COZY都能轻松做到! ✅ 3.0中的新功能 HDRP支持 物理上精确的月球系统 8K 星形纹理 新的豪华云风格融合了纹理,创造出高性…

图搜索算法详解:广度优先搜索与深度优先搜索的探索之旅

图搜索算法详解&#xff1a;广度优先搜索与深度优先搜索的探索之旅 1. 广度优先搜索&#xff08;BFS&#xff09;1.1 伪代码1.2 C语言实现 2. 深度优先搜索&#xff08;DFS&#xff09;2.1 伪代码2.2 C语言实现 3. 总结 图搜索算法是计算机科学中用于在图结构中查找路径的算法。…