最近在用ST的传感器和开发板做东西,在这里写点移植的教程给学弟参考用,参考了好多帖子和文章,可能有雷同,如有错误请大佬指出
所用板卡:nucleo-H563ZI
所用传感器:MK192(lsm6dso)
开发环境:STM32CUBEIDE
在cubeide里新建一个工程,选择板卡为H563:
双击Middleware 中的MEMS进入包选择LSM6DSOX,通信方式选择I2C:
使能ACCGYR,并连接到I2C上,我用的IKS01A1的mems板,故引脚为PB8\PB9
保存以生成代码,H5有icache,我们这里不用,直接生成代码
这样工程就建好了,不过还没有传感器的驱动,需要再新建一个示例工程:
这里以 U575的"Active Time "为例:
这个工程导入后如图,我们需要移植图中的三个文件到H5的工程目录下
复制如图的几个文件:
复制后还需要导入到工程中:
同时在SOURE里添加代码所在的文件夹
先写这样 ,备考四六级去了,等我回来再更新
本帖最后由 电子烂人 于 2024-6-14 14:08 编辑
st传感器的例程封装挺深的,会移植也是很不错的~
引用: lugl4313820 发表于 2024-6-15 06:19 用多了mdk,感觉eclipse下面添加文件,也是挺麻烦的事。
eclipse下面添加文件是不是不用主动添加啊,只要放到文件夹上刷新一下就出来了
引用: 秦天qintian0303 发表于 2024-6-17 09:11 eclipse下面添加文件是不是不用主动添加啊,只要放到文件夹上刷新一下就出来了
有时会提示找不到文件,可能我没有用习惯,有时好象给的是快捷方式。
引用: lugl4313820 发表于 2024-6-17 10:13 有时会提示找不到文件,可能我没有用习惯,有时好象给的是快捷方式。
一定要放到已经添加路径下面,找不到文件可能就是没有添加路径
继续回来更新:
生成代码后会发现,根目录多了一个x-cube-mems1的文件夹,里面包含几种传感器
先来介绍下这三个代码文件的含义:
1.Custom_mems_conf_app.h:这里面包含了传感器的几种参数,如量程、速度等;
#ifdef USE_CUSTOM_MOTION_SENSOR_LSM6DSO_0
#if (USE_CUSTOM_MOTION_SENSOR_LSM6DSO_0 == 1)
#ifndef CUSTOM_ACC_INSTANCE_0
#define CUSTOM_ACC_INSTANCE_0 CUSTOM_LSM6DSO_0
#define CUSTOM_ACC_INSTANCE_NAME_0 "LSM6DSO"
#define CUSTOM_ACC_INSTANCE_ODR_0 {10, 12.5, 26, 52, 104, 208, 417, 833, 1667, 3333, 6667} /* Hz */
#define CUSTOM_ACC_INSTANCE_FS_0 {4, 2, 4, 8, 16} /* g */
#ifndef ACC_GYR_UNICLEO_ID
#define ACC_GYR_UNICLEO_ID LSM6DSO_UNICLEO_ID
#endif
#endif
#ifndef CUSTOM_GYR_INSTANCE_0
#define CUSTOM_GYR_INSTANCE_0 CUSTOM_LSM6DSO_0
#define CUSTOM_GYR_INSTANCE_NAME_0 "LSM6DSO"
#define CUSTOM_GYR_INSTANCE_ODR_0 {10, 12.5, 26, 52, 104, 208, 417, 833, 1667, 3333, 6667} /* Hz */
#define CUSTOM_GYR_INSTANCE_FS_0 {5, 125, 250, 500, 1000, 2000} /* dps */
#ifndef ACC_GYR_UNICLEO_ID
#define ACC_GYR_UNICLEO_ID LSM6DSO_UNICLEO_ID
#endif
#endif
#endif
#endif
2. Custom_mems_conf.h:这里面包含着传感器的初始化、读取写入等指令操作
#define USE_CUSTOM_MOTION_SENSOR_LSM6DSO_0 0U
#define CUSTOM_LSM6DSO_0_I2C_Init BSP_I2C1_Init
#define CUSTOM_LSM6DSO_0_I2C_DeInit BSP_I2C1_DeInit
#define CUSTOM_LSM6DSO_0_I2C_ReadReg BSP_I2C1_ReadReg
#define CUSTOM_LSM6DSO_0_I2C_WriteReg BSP_I2C1_WriteReg
#ifdef __cplusplus
}
#endif
3.sensor_unicleo.h:这里面包含着诸多传感器的UNICLEO_ID,用于 Unicleo-GUI 应用程序区分诸多传感器。
#define LSM6DSO_UNICLEO_ID 7
本帖最后由 电子烂人 于 2024-6-21 01:44 编辑