瑞萨RA0单片机连载——面向对象编程之SHT31温度计
SHT3X是一款优秀的温湿度计。他采用I2C 接口,地址为0x44。它的驱动与原理的讲解非常的丰富,网上也有非多的现成的代码,我这里不做过多的阐述。本篇的主要特点是在前面OLED驱动的前提下,对sht31进行面向对象的编程方式进行讲解。
1 前提
在OLED驱动之中,我已经初始化了I2C的总线,所以有总线驱动在本篇没有做,如果是使用spi 或者其他的方式进行数据展示,那么需要加上对I2C 总线进行初始化。
2 实现步骤
2.1 创建sensor.h,在其中创建结构体
2.2 创建drv_sensor.c
首先实例化
接下来编写发送、接收超时函数
为了验证读取的温度与数据是否正确,编写CRC函数如下:
在读取温度的函数中首先向sht31发送开始转换命令0x2400, 我将他封装在一个数据中,使用R_SAU_I2C_Write进行一次性发送。当然由于总线上有SSD1306 操作时他的g_sau_i2c_master_ctrl 的从机地址是SSD1306的0x3c所以,需要先配置sht31的地址,他的发送数据转换命令如下:
由于转换需要一段时间,需要延时。
延时之后,我一次读取6位数据,如果获取数据成功,则进行CRC并进行float转换,转换成功后放到结构体中,并更新状态:整个获取数据的代码如下:
3 数据展示
在主函数中编写测试代码如下,如果获取到温度数据则显示温湿度,如果获取出错则显示EEROR, 其代码如下:
4 实验效果
5 总结
使用面向对象对sht31的驱动进行封装,在瑞萨的FSP驱动中,可以快速实现驱动,同时只需要提供驱动的接口,可以实现低耦合的功能。
( 本文来源于《EEPW》202505)

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码