ST-MEMS传感器驱动移植
<div class='showpostmsg'> 本帖最后由 电子烂人 于 2024-6-14 14:08 编辑<p>最近在用ST的传感器和开发板做东西,在这里写点移植的教程给学弟参考用,参考了好多帖子和文章,可能有雷同,如有错误请大佬指出</p>
<p> </p>
<p>所用板卡:nucleo-H563ZI</p>
<p>所用传感器:MK192(lsm6dso)</p>
<p>开发环境:STM32CUBEIDE</p>
<p> </p>
<p>在cubeide里新建一个工程,选择板卡为H563:</p>
<div style="text-align: center;"></div>
<div>这个板卡的晶振是配置好的,只需要配置基本的DEBUG</div>
<div>
<div style="text-align: center;"></div>
<div>由于需要和传感器通信,所以额外配置一组I2C,速度选择FAST(400KHZ):</div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"> </div>
<p>双击Middleware 中的MEMS进入包选择LSM6DSOX,通信方式选择I2C:</p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"> </p>
<p>使能ACCGYR,并连接到I2C上,我用的IKS01A1的mems板,故引脚为PB8\PB9</p>
<p style="text-align: center;"> </p>
<p>保存以生成代码,H5有icache,我们这里不用,直接生成代码</p>
<p>这样工程就建好了,不过还没有传感器的驱动,需要再新建一个示例工程:</p>
<p>这里以 U575的"Active Time "为例:</p>
<p style="text-align: center;"> </p>
<p>这个工程导入后如图,我们需要移植图中的三个文件到H5的工程目录下</p>
<p style="text-align: center;"> </p>
<p>复制如图的几个文件:</p>
<p> </p>
<p>复制后还需要导入到工程中:</p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"> </p>
<p>同时在SOURE里添加代码所在的文件夹</p>
<p style="text-align: center;"> </p>
<p>先写这样 ,备考四六级去了,等我回来再更新</p>
</div>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>四六级一起备考啊</p>
<p>祝楼主考好,归来继续更新,哈哈</p>
<p>st传感器的例程封装挺深的,会移植也是很不错的~</p>
用多了mdk,感觉eclipse下面添加文件,也是挺麻烦的事。 lugl4313820 发表于 2024-6-15 06:19
用多了mdk,感觉eclipse下面添加文件,也是挺麻烦的事。
<p>eclipse下面添加文件是不是不用主动添加啊,只要放到文件夹上刷新一下就出来了</p>
秦天qintian0303 发表于 2024-6-17 09:11
eclipse下面添加文件是不是不用主动添加啊,只要放到文件夹上刷新一下就出来了
<p>有时会提示找不到文件,可能我没有用习惯,有时好象给的是快捷方式。</p>
lugl4313820 发表于 2024-6-17 10:13
有时会提示找不到文件,可能我没有用习惯,有时好象给的是快捷方式。
<p>一定要放到已经添加路径下面,找不到文件可能就是没有添加路径</p>
本帖最后由 电子烂人 于 2024-6-21 01:44 编辑
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><span style="font-family:"微软雅黑",sans-serif">继续回来更新:<br />
生成代码后会发现,根目录多了一个</span>x-cube-mems1<span style="font-family:"微软雅黑",sans-serif">的文件夹,里面包含几种传感器</span></span></span> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线"><span style="font-family:"微软雅黑",sans-serif">先来介绍下这三个代码文件的含义:</span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">1.Custom_mems_conf_app.h:<span style="font-family:"微软雅黑",sans-serif">这里面包含了传感器的几种参数,如量程、速度等;</span></span></span></p>
<pre>
<code class="language-cpp">
#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</code></pre>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">2. Custom_mems_conf.h:<span style="font-family:"微软雅黑",sans-serif">这里面包含着传感器的初始化、读取写入等指令操作</span></span></span></p>
<pre>
<code class="language-cpp">#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</code></pre>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:等线">3.sensor_unicleo.h:<span style="font-family:"微软雅黑",sans-serif">这里面包含着诸多传感器的</span><span lang="EN-US" style="font-size:9.5pt"><span style="font-family:Consolas"><span style="color:#1f2328">UNICLEO_ID</span></span></span><span style="font-size:9.5pt"><span style="font-family:"微软雅黑",sans-serif"><span style="color:#1f2328">,</span></span></span><span style="font-size:11.5pt"><span style="background:white"><span style="font-family:"微软雅黑",sans-serif"><span style="color:#1f2328">用于</span></span></span></span><span lang="EN-US" style="font-size:11.5pt"><span style="background:white"><span style="font-family:"Segoe UI",sans-serif"><span style="color:#1f2328"> Unicleo-GUI </span></span></span></span><span style="font-size:11.5pt"><span style="background:white"><span style="font-family:"微软雅黑",sans-serif"><span style="color:#1f2328">应用程序区分诸多传感器。</span></span></span></span></span></span></p>
<pre>
<code class="language-cpp">#define LSM6DSO_UNICLEO_ID 7</code></pre>
<p> </p>
页:
[1]