瑞萨RA0单片机连载——面向对象编程之SHT31温度计

  作者:lulugl 时间:2025-05-22来源:EEPW


SHT3X是一款优秀的温湿度计。他采用I2C 接口,地址为0x44。它的驱动与原理的讲解非常的丰富,网上也有非多的现成的代码,我这里不做过多的阐述。本篇的主要特点是在前面OLED驱动的前提下,对sht31进行面向对象的编程方式进行讲解。

1   前提

在OLED驱动之中,我已经初始化了I2C的总线,所以有总线驱动在本篇没有做,如果是使用spi 或者其他的方式进行数据展示,那么需要加上对I2C 总线进行初始化。

2 实现步骤

2.1 创建sensor.h,在其中创建结构体

image.png

2.2 创建drv_sensor.c

首先实例化

image.png

接下来编写发送、接收超时函数

image.png

image.png

为了验证读取的温度与数据是否正确,编写CRC函数如下:

image.png

1747967803246854.png

在读取温度的函数中首先向sht31发送开始转换命令0x2400, 我将他封装在一个数据中,使用R_SAU_I2C_Write进行一次性发送。当然由于总线上有SSD1306 操作时他的g_sau_i2c_master_ctrl 的从机地址是SSD1306的0x3c所以,需要先配置sht31的地址,他的发送数据转换命令如下:

image.png

由于转换需要一段时间,需要延时。

延时之后,我一次读取6位数据,如果获取数据成功,则进行CRC并进行float转换,转换成功后放到结构体中,并更新状态:整个获取数据的代码如下:

image.png

image.png

image.png

3   数据展示

在主函数中编写测试代码如下,如果获取到温度数据则显示温湿度,如果获取出错则显示EEROR, 其代码如下:

image.png

image.png

image.png

4   实验效果

image.png

5   总结

使用面向对象对sht31的驱动进行封装,在瑞萨的FSP驱动中,可以快速实现驱动,同时只需要提供驱动的接口,可以实现低耦合的功能。

( 本文来源于《EEPW》202505)

关键词: 202505 瑞萨 单片机 温度计 RA0

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版