• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 瑞薩RA0單片機連載——面向對象編程之SHT31溫度計

    瑞薩RA0單片機連載——面向對象編程之SHT31溫度計

    作者:lulugl 時間:2025-05-22 來源:EEPW 收藏


    本文引用地址:http://www.czjhyjcfj.com/article/202505/470718.htm

    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》



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 浦北县| 盐山县| 云龙县| 周至县| 陆良县| 凌源市| 黑龙江省| 冷水江市| 那坡县| 贵阳市| 庆云县| 开封市| 阿克陶县| 抚松县| 常德市| 军事| 汉中市| 枣庄市| 西乌| 庆安县| 泸定县| 江津市| 图木舒克市| 桂东县| 萝北县| 夏邑县| 同江市| 镶黄旗| 改则县| 太仆寺旗| 龙游县| 施秉县| 永吉县| 富宁县| 西乌| 漠河县| 化德县| 五河县| 同江市| 巢湖市| 敖汉旗|