本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设,读取SHT30温湿度传感器的数据并通过串口发送。
1. 准备工作
SHT30的原理图如下:
Keil MDK和串口助手Serial Port Utility 的安装包都可以在文末关注公众号获取,回复关键字获取相应的安装包:
2.生成MDK工程
打开STM32CubeMX,打开MCU选择器:
搜索并选中芯片:
这里我都使用外部时钟:
小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:
这里我将开关拨到模式,使PC的串口与USART1之间连接。
接下来开始配置:
查看小熊派E53接口的原理图:
接下来开始配置I2C接口1:
STM32L4的最高主频到80M,所以配置PLL,最后使即可:
最后设置生成独立的初始化文件:
点击即可生成MDK-V5工程:
3. 在MDK中编写、编译、下载用户代码
参考:。
4. 编写SHT30驱动程序
参考『SHT30 datasheet.pdf』进行编程。
先来编写头文件,SHT30的器件地址由端口的高低电平决定:
注意数据手册中给出了8位数据,只有低7位用作地址,结合原理图,可以定义如下:
参考数据手册,在头文件中给出如下枚举定义:
从SHT30数据手册中可以得到在周期测量模式下读取一次数据的时序,如图:
根据该时序可以看出,首先要发送读数据的命令,然后接收6个字节的数据,编写程序如下:
在数据手册中可知,SHT30分别在温度数据和湿度数据之后发送了8-CRC校验码,确保了数据可靠性。
关于CRC校验请参考我的另一篇博客:如何通俗的理解CRC校验并用C语言实现(公众号没有发表所以不能放超链接,如果有兴趣,可以访问我的博客www.mculover666.cn查看)。
CRC-8校验程序如下:
计算温度值和湿度值的公式在数据手册中已给出,如图:
接下来编写解析数据的函数:
5. 测试SHT30驱动程序
在main函数中对该驱动进行测试,在中添加如下代码:
测试结果如图:
至此,我们已经学会如何使用硬件IIC接口读取温湿度传感器数据并使用软件CRC校验(SHT30),下一节将讲述如何使用硬件CRC校验SHT30的数据。
到此这篇时钟代码怎么写(时钟配置代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/12962.html