STM32基于CubeMX与Simulink的模块开发——MT6701和EEPROM的IIC实现

数据手册

image-20241021160456087

image-20241021160526836

通过数据手册可知:

MT6701的I2从机地址为0X06(b’0000110,b:Binary表示二进制)

MT6701数据手册中给的读取方式为单字节读取,先读0X03再读0X04获取角度

IIC也可进行多字节读取:将0X03与0X04的数据一同取出(第三节IIC)

参考:

STM32基于CubeMX与Simulink的模块开发——IIC官方例程学习-CSDN博客

MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600-CSDN博客

模块设计

官方帮助:使用 I2C 将数据读取和写入 STM32 处理器板上的加速度计 – MATLAB & Simulink – MathWorks 中国

单个字节读取

参考官方示例的单个字节读取的设计:

img

设计MT6701的模型:

1.完成单个数据读取模型搭建

先向外设地址为0X06,寄存器地址为0X03读取数据,再向外设地址为0X06,寄存器地址为0X04读取数据

image-20241024151816955

存在报错:

image-20241024154240085

解决方法:

修改输出类型

image-20241024154350837

2.处理读取数据

image-20241021160526836

如图所示,将0X03取出的数据左移六位,0X04取出的数据右移两位,组合再除以16384乘以360将是最后的角度信息

2.1新建一个子系统

Subsystem 模块:对各模块进行分组以创建模型层次结构

模块帮助:Subsystem – 对各模块进行分组以创建模型层次结构 – Simulink – MathWorks 中国

image-20241024153424052

2.2在子系统中实现左移右移

使用Shift Arithmetic模块:移动输入信号中的数位和/或二进制小数点

模块帮助:Shift Arithmetic – 移动信号的位或二进制小数点 – Simulink – MathWorks 中国

image-20241024232314126

2.3计算出角度

image-20241024232342892

3.模型搭建完成

image-20241024155610572

CubeMX配置

1.基本配置

参考:STM32基于CubeMX与Simulink的模块开发——新建工程-CSDN博客

image-20241024160010604

image-20241024160028302

image-20241024160045597

image-20241024160239366

image-20241024160259672

image-20241024160312742

2.IIC配置

MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600-CSDN博客

image-20241024161325937

标准模式速度为100000HZ,10us,完全够用

image-20241024161545173

重新修改一下

image-20241024161833283

image-20241024161843124

测试

1.先配置一下模型设置

image-20241024162203160

image-20241024162234509

image-20241024162259356

2.测试一下子系统的计算

问题1:发现右移六位导致数据溢出,因为数据为8位数据

image-20241024232436098

解决:进行一下数据转换,转换成uint16

Data Type Conversion模块:将输入信号转换为指定的数据类型

模块帮助:Data Type Conversion – 将输入信号转换为指定的数据类型 – Simulink – MathWorks 中国

image-20241024232508554

image-20241024163615237

子系统测试完成

image-20241024232527062

image-20241024164118999

3.HIL测试

参考:STM32基于CubeMX与Simulink的模块开发——PIL和HIL实现-CSDN博客

3.1先配置一下串口

Cuebemx

image-20241024170203836

image-20241024170213214

image-20241024170231980

image-20241024170249520

image-20241024170255532

记得保存一下!!!!

Simulink

image-20241024170625098

image-20241024170720649

3.2MT6701传感器验证

先拿Arduino Mega2560测试一下传感器有没有问题(防止我代码没问题,传感器有问题)

Arduino 驱动MT6701磁编码器并读取角度数据-CSDN博客

2929f476fc1ac5542b96b972dba8633

image-20241024192327825

没问题啊

3.3 EEPROM模块验证

因为我的开发板上(野火霸天虎)集成了EEPROM,想先拿这个来验证一下我的模块

按照上述流程配置了一下CubeMX,唯一不一样的是IIC的引脚:

image-20241024224606717

所以改了一下配置

image-20241024224626681

照着网上的验证步骤:先写入在把写入的数据读出来,搭建模型并编译

image-20241024225012032

image-20241024224805738

拿逻辑分析仪看看数据:

image-20241024225043011

很完美!!!!

网盘链接:通过网盘分享的文件:EEPROM.zip
链接: https://pan.baidu.com/s/16cJsxyHAAA0hQtCLdYC9aw?pwd=qefw 提取码: qefw
–来自百度网盘超级会员v7的分享

3.4 MT6701实现

image-20241024232611928

image-20241024231847179

注意:使用dispaly和scope一定要把这个关了

image-20241024231912632

拿逻辑分析仪看看:

image-20241024232018017

完美!!!

百度网盘链接:通过网盘分享的文件:MT6701.zip
链接: https://pan.baidu.com/s/1lg1_4iFcBy16YnPzUv_dPQ?pwd=6rgr 提取码: 6rgr
–来自百度网盘超级会员v7的分享

作者:实验室的看门人

物联沃分享整理
物联沃-IOTWORD物联网 » STM32基于CubeMX与Simulink的模块开发——MT6701和EEPROM的IIC实现

发表回复