【NUCLEO-WBA52CG STM32无线产品家族新系列】+2、硬件i2c驱动温湿度传感器SHT40
本帖最后由 dql2016 于 2023-7-30 22:04 编辑<p>手头有一个Grove SHT40传感器模块,如下图所示,正好利用它学习一下STM32WBA52CG 硬件I2C的用法。</p>
<div style="text-align: center;"></div>
<p>SHT40是精度高达±1.8% / max. ±3.5% RH的数字温湿度传感器,主要参数如下:</p>
<table data-v-6ccbd39f="">
<thead data-v-6ccbd39f="">
<tr data-v-6ccbd39f="">
<th data-v-6ccbd39f="">湿度</th>
</tr>
</thead>
<tbody data-v-6ccbd39f="">
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">典型的相对湿度精度</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">1.8</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">%RH</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">操作相对湿度范围</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">0 - 100</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">%RH</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">响应时间 (τ63%)</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">4</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">s</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">校准证书</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">工厂校准</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
</tbody>
</table>
<table data-v-6ccbd39f="">
<thead data-v-6ccbd39f="">
<tr data-v-6ccbd39f="">
<th data-v-6ccbd39f="">温度</th>
</tr>
</thead>
<tbody data-v-6ccbd39f="">
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">典型温度精度</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">0.2</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">°C</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">工作温度范围</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">-40 - 125</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">°C</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">响应时间 (τ63%)</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">2</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">s</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
</tbody>
</table>
<table data-v-6ccbd39f="">
<thead data-v-6ccbd39f="">
<tr data-v-6ccbd39f="">
<th data-v-6ccbd39f="">普通的</th>
</tr>
</thead>
<tbody data-v-6ccbd39f="">
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">电源电压</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">1.08 - 3.6</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">V</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">平均供应电流</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">0.4</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">uA</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">接口</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">I²C</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">尺寸 (长x宽x高)</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">1.5 x 1.5 x 0.5</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">mm³</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
<tr data-v-04f3640a="" data-v-6ccbd39f="">
<td colspan="2" data-v-04f3640a="" data-v-6ccbd39f="">包装尺寸</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">2500, 10000</td>
<td data-v-04f3640a="" data-v-6ccbd39f="">pcs (T&R)</td>
<td data-v-04f3640a="" data-v-6ccbd39f=""> </td>
</tr>
</tbody>
</table>
<p>官方资料</p>
<p><a href="https://sensirion.com/cn/products/product-catalog/SHT40/" target="_blank">https://sensirion.com/cn/products/product-catalog/SHT40/</a></p>
<p>官方提供了驱动参考下载</p>
<p><a href="https://github.com/Sensirion/embedded-i2c-sht4x" target="_blank">https://github.com/Sensirion/embedded-i2c-sht4x</a></p>
<p>首先使用Stm32cubemx基于开发板创建工程,基于开发板创建的好处是板载外设如LED、按键等都帮你初始化配置好了:</p>
<div style="text-align: center;"></div>
<p>打开串口配置,方便打印日志:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>开启硬件I2C,参数设置十分简单,直接使用默认的即可:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>配置好后生成工程即可。</p>
<p>接下来对照下原理图,确定I2C1引脚的位置:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>连接好线路: </p>
<div style="text-align: center;"> </div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"></div>
<p>将在盛思锐官方下载的驱动包解压,然后将对应文件复制到stm32的工程目录:</p>
<p> </p>
<div style="text-align: center;"></div>
<p> </p>
<p>参考驱动复制过来替换:</p>
<div style="text-align: center;"></div>
<p> </p>
<p>keil里面新建分组,加入这些文件:</p>
<div style="text-align: center;"></div>
<p>将驱动抽象层中的初始化去掉,因为stm32cubemx已经生成了i2c的驱动:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>主函数调用测试代码:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>串口驱动里面加入printf打印支持:</p>
<p> </p>
<div style="text-align: center;"></div>
<p>最终效果:</p>
<p> </p>
<div style="text-align: center;"></div>
<p> </p>
<p> </p>
<p>附上源码包:</p>
<div></div>
<p> </p>
<p>目前有个bug,stm32cubemx重新生成keil工程后,自己添加的分组被删除了。。。以前玩别的stm32芯片是没有这个问题。</p>
大佬一出手,这帖子果然精彩,感谢分享,这SHT40,价格不菲吧! lugl4313820 发表于 2023-8-1 06:46
大佬一出手,这帖子果然精彩,感谢分享,这SHT40,价格不菲吧!
<p>几十块,有点贵</p><br/> <p>给力给力@@@@!!!!</p>
页:
[1]