max30102使用(max30102使用AT指令)

max30102使用(max30102使用AT指令)介绍一下开发环境及关键字 MCU S32K314 MCAL EB 配置 使用 NXP 提供的 MCAL V2 0 3 AS4 4 0 IAM20381 加速计 X Y Z 轴 2g 4g 8g 16g 16 LGA 3x3 I2C 主机模式 与 IAM20381 连接 Port 配置为开漏



介绍一下开发环境及关键字:

MCU: S32K314

MCAL: EB配置,使用NXP提供的MCAL ,V2.0.3, AS4.4.0

IAM20381:加速计 X,Y,Z 轴 ±2g,4g,8g,16g 16-LGA(3x3)

I2C : 主机模式,与IAM20381连接,Port配置为开漏

I2C的数据传输方式先使用中断来传输,后续再更新为DMA,配置如下:

需要开启I2C的接收发送中断回调和错误回调,以便应用确认当前的传输状态

下面的I2C超时DEM的接口我们先不考虑,如果需要记录DTC可以打开;

选择好参考时钟,速率会自动帮你换算;

这里我们选择48M 64分频,得到125k的速率;

这个速率后期需要再根据MCU的时钟树来分频得到我们想要的大小,这里先不微调;

其他的参数可以根据对应调试芯片的参数来动态调整;

下面的高速模式,从机模式,10bit地址,先不配置后续更新;

如果使用autosar配置工具,请使能I2C中断:

中断标号:

S32K3XXRM.pdf S32K3xx_interrupt_map.XLSX

或者在Platform 使能I2C中断:

IAM-20381是一款三轴运动跟踪加速计

资料在官网,有提供官网例程,这里我们将官方提供的驱动移植到我们的设备上;

手册:ds-000216-iam-20381-typ-v1.0.pdf (tdk.com.cn)

例程:Software Downloads | InvenSense Developers (tdk.com) 找到如下卡片:

点击上述框内开始下载工程压缩包:eMD-SmartMotion-IAM20381-1.0.0-MP 

下载完毕解压缩,工程目录如下:

Streamlined_eMD_IAM20381_Software_Guide.pdf : 软件手册,主要是对基于EVB的开发的说明和对3个例程的功能解释;

驱动路径如下: EMD-CoresourcesInvnDevicesDriversIAM20381

主要实现4个接口函数:

延时函数:

 

I2C写数据和读数据函数:

通过 SetupInvDevice注册

 

延时函数利用autosar的WaitEvent,GetEvent,ClearEvent实现

通过WaitEvent的等待时间来控制延迟的时间,

通过配置创建一个Extended类型 的task,创建两个事件,1.闹钟形式1ms触发一次处理数据,2触发事件等待初始化20381,

 

延时函数实现:

 

I2C接口实现:

 
 

 

I2C死锁问题:

       I2C死锁一般发生在系统初始化、mcu软复位,硬件线路电平不稳定等情况下,从机设备将SDA拉低,而SCL保持为高,总线一直被占用,主机只能被动等待,无法对从及设备做控制,这时需要解锁;

1. 在初始化I2C之前,将SDA SCL初始化为IO,拉低拉高10次,解除锁定;

2.当产生I2C_MASTER_EVENT_PIN_LOW_TIMEOUT事件时,我们需要将i2c重新解锁;

我们需要配置如下参数:

设置为12个周期 :

10bit地址 + 1bit R/W + 1bit ACK 

当产生I2C_MASTER_EVENT_PIN_LOW_TIMEOUT事件时,可以认为发生了死锁,我们需要在

I2C_CALLBACK 中去检查事件,当发生事件,则SetEvent在task AppTask_Sensor中处理;

初始化函数实现:

 

例程选择的23081的i2c pin配置为推挽输出,这里我们需要修改一下pin设置为开漏输出根据20381手册:

新增寄存器设置pin函数:

 

在inv_iam20381_init中最后一步添加:

 

编程小号
上一篇 2025-03-21 12:01
下一篇 2025-02-27 14:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/21244.html