国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32Cubemxhal庫(kù)硬件IIC驅(qū)動(dòng)SHT40溫濕度傳感器

這篇具有很好參考價(jià)值的文章主要介紹了STM32Cubemxhal庫(kù)硬件IIC驅(qū)動(dòng)SHT40溫濕度傳感器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

STM32cubemx配置硬件IIC如圖所示

sht40驅(qū)動(dòng),stm32,單片機(jī),嵌入式硬件,c語(yǔ)言,mcu

?SHT40的驅(qū)動(dòng)代碼

#include "SHT40.h"


#include "i2c.h"

#include <rtthread.h>
#include <rtdbg.h>

#define SHT40_ADDR_WRITE    0x44<<1         //10001000
#define SHT40_ADDR_READ     (0x44<<1)+1     //10001011

#define CRC8_POLYNOMIAL 0x31

uint8_t SHT40_CheckCrc8(uint8_t* const message, uint8_t initial_value)
{
    uint8_t  remainder;     //余數(shù)
    uint8_t  i = 0, j = 0;  //循環(huán)變量

    /* 初始化 */
    remainder = initial_value;

    for(j = 0; j < 2;j++)
    {
        remainder ^= message[j];

        /* 從最高位開(kāi)始依次計(jì)算  */
        for (i = 0; i < 8; i++)
        {
            if (remainder & 0x80)
            {
                remainder = (remainder << 1)^CRC8_POLYNOMIAL;
            }
            else
            {
                remainder = (remainder << 1);
            }
        }
    }

    /* 返回計(jì)算的CRC碼 */
    return remainder;
}
/**
 * @brief   向SHT40發(fā)送一條指令(16bit)
 * @param   cmd —— SHT40指令(在etCommands中枚舉定義)
 * @retval  成功返回HAL_OK
*/
static uint8_t  SHT40_Send_Cmd(SHT40Command cmd)
{
    uint8_t cmd_buffer = 0;
    cmd_buffer = cmd ;
    return HAL_I2C_Master_Transmit(&hi2c1, SHT40_ADDR_WRITE, (uint8_t*)&cmd_buffer, 1, 0x00FF);
}
/**
 * @brief   復(fù)位SHT40
 * @param   none
 * @retval  none
*/
void SHT40_reset(void)
{
    SHT40_Send_Cmd(SHT4X_CMD_SOFT_RESET);
//    HAL_Delay(20);
		rt_thread_mdelay(20);
}
/**
 * @brief   初始化SHT40
 * @param   none
 * @retval  成功返回HAL_OK
 * @note    周期測(cè)量模式
*/
uint8_t SHT40_Init(void)
{
    return SHT40_Send_Cmd(SHT4X_CMD_MEASURE_HPM);
}
/**
 * @brief   從SHT40讀取一次數(shù)據(jù)
 * @param   dat —— 存儲(chǔ)讀取數(shù)據(jù)的地址(6個(gè)字節(jié)數(shù)組)
 * @retval  成功 —— 返回HAL_OK
*/
uint8_t SHT40_Read_Dat(uint8_t* dat)
{
    SHT40_Send_Cmd(SHT4X_CMD_MEASURE_HPM);
		rt_thread_mdelay(10);
    return HAL_I2C_Master_Receive(&hi2c1, SHT40_ADDR_READ, dat, 6, 0xFFFF);
}
/**
 * @brief   將SHT40接收的6個(gè)字節(jié)數(shù)據(jù)進(jìn)行CRC校驗(yàn),并轉(zhuǎn)換為溫度值和濕度值
 * @param   dat  —— 存儲(chǔ)接收數(shù)據(jù)的地址(6個(gè)字節(jié)數(shù)組)
 * @retval  校驗(yàn)成功  —— 返回0
 *          校驗(yàn)失敗  —— 返回1,并設(shè)置溫度值和濕度值為0
*/
uint8_t SHT40_Dat_To_Float(uint8_t* const dat, float* temperature, float* humidity)
{
    uint16_t recv_temperature = 0;
    uint16_t recv_humidity = 0;

    /* 校驗(yàn)溫度數(shù)據(jù)和濕度數(shù)據(jù)是否接收正確 */
    if(SHT40_CheckCrc8(dat, 0xFF) != dat[2] || SHT40_CheckCrc8(&dat[3], 0xFF) != dat[5])
        return 1;

    /* 轉(zhuǎn)換溫度數(shù)據(jù) */
    recv_temperature = ((uint16_t)dat[0]<<8)|dat[1];
    *temperature = -45 + 175*((float)recv_temperature/65535);

    /* 轉(zhuǎn)換濕度數(shù)據(jù) */
    recv_humidity = ((uint16_t)dat[3]<<8)|dat[4];
    *humidity = -6 + 125 * ((float)recv_humidity / 65535);
		if(*humidity>=100)   //根據(jù)數(shù)據(jù)手冊(cè)編寫
				*humidity=100;
		else if(*humidity<=0)
				*humidity=0;
    return 0;
}


#ifndef   __SHT40_H__
#define   __SHT40_H__

#include "main.h"

// Sensor Commands
typedef enum {
		SHT4X_CMD_MEASURE_HPM = 0xFD,   //measure T & RH with high precision (high repeatability)
		SHT4X_CMD_MEASURE_MPM = 0xF6,   //measure T & RH with medium precision (medium repeatability)
		SHT4X_CMD_MEASURE_LPM = 0xE0,   //measure T & RH with lowest precision (low repeatability)
		SHT4X_CMD_READ_SERIAL = 0x89,   //read serial number
		SHT4X_CMD_SOFT_RESET  = 0x94,   //soft reset
		SHT4X_CMD_200W_1S = 0x39,       //activate heater with 200mW for 1s, including a high precision measurement just before deactivation
		SHT4X_CMD_200W_01S = 0x32,      //activate heater with 200mW for 0.1s including a high precision measurement just before deactivation
	  SHT4X_CMD_110W_1S = 0x2F,       //activate heater with 110mW for 1s including a high precision measurement just before deactivation
		SHT4X_CMD_110W_01S = 0x24,      //activate heater with 110mW for 0.1s including a high precision measurement just before deactivation
		SHT4X_CMD_20W_1S = 0x1E,        //activate heater with 20mW for 1s including a high precision measurement just before deactivation
		SHT4X_CMD_20W_01S = 0x15,       //activate heater with 20mW for 0.1s including a high precision measurement just before deactivation
}SHT40Command; 




uint8_t SHT40_CheckCrc8(uint8_t* const message, uint8_t initial_value);
	

uint8_t SHT40_Init(void);
void SHT40_reset(void);
uint8_t SHT40_Read_Dat(uint8_t* dat);
uint8_t SHT40_Dat_To_Float(uint8_t* const dat, float* temperature, float* humidity);





















#endif

注意:在讀sht40的寄存器之后一定要加10幾個(gè)ms的延時(shí)

sht40驅(qū)動(dòng),stm32,單片機(jī),嵌入式硬件,c語(yǔ)言,mcu文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656120.html

到了這里,關(guān)于STM32Cubemxhal庫(kù)硬件IIC驅(qū)動(dòng)SHT40溫濕度傳感器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32(HAL庫(kù))驅(qū)動(dòng)SHT30溫濕度傳感器通過(guò)串口進(jìn)行打印

    STM32(HAL庫(kù))驅(qū)動(dòng)SHT30溫濕度傳感器通過(guò)串口進(jìn)行打印

    目錄 1、簡(jiǎn)介 2、CubeMX初始化配置 2.1 基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2 軟件IIC引腳配置 2.3?串口外設(shè)配置 ?2.4 項(xiàng)目生成 ?3、KEIL端程序整合 3.1 串口重映射 3.2 SHT30驅(qū)動(dòng)添加 3.3 主函數(shù)代 3.4 效果展示 本文通過(guò)STM32F103C8T6單片機(jī)通過(guò)HAL庫(kù)方式對(duì)SHT30傳感器進(jìn)行數(shù)據(jù)的讀取,并

    2024年02月16日
    瀏覽(27)
  • STM32 SHT40驅(qū)動(dòng)源碼(使用硬件I2C)

    STM32 SHT40驅(qū)動(dòng)源碼(使用硬件I2C)

    目錄 簡(jiǎn)介: SHT40.c: SHT40.h 測(cè)試結(jié)果: ? ? ? ? SHT40是瑞士Sensirion公司推出的第四代溫濕度傳感器,內(nèi)部集成加熱器用于去除表面微小液滴。集成I2C接口,典型的相對(duì)濕度精度1.8%RH,典型溫度精度0.2℃,運(yùn)行在0-100%RH和-40-125℃的環(huán)境中。 主控:STM32H7B0VBT6 平臺(tái):STM32CubeIDE SHT4

    2024年03月19日
    瀏覽(131)
  • 嵌入式 STM32 SHT31溫濕度傳感器

    嵌入式 STM32 SHT31溫濕度傳感器

    目錄 簡(jiǎn)介 1、原理圖? 2、時(shí)序說(shuō)明? 數(shù)據(jù)傳輸 起始信號(hào)? 結(jié)束信號(hào)? 3、SHT31讀寫數(shù)據(jù)? SHT31指令集 讀數(shù)據(jù)? 溫濕度轉(zhuǎn)換 4、溫濕度轉(zhuǎn)換應(yīng)用? sht3x初始化 讀取溫濕度? 什么是SHT31?? 一主機(jī)多從機(jī)--通過(guò)尋址的方式--每個(gè)從機(jī)都有唯一的地址(器件地址0x44+引腳地址)1 + 讀寫位

    2024年02月01日
    瀏覽(17)
  • linux添加sht3x溫濕度傳感器驅(qū)動(dòng)記錄

    linux添加sht3x溫濕度傳感器驅(qū)動(dòng)記錄

    ? ? ? ?最近拿到一塊imx6ull板子,上面有一顆溫濕度傳感器sht30,需要讀取其數(shù)值。本人能力有限,自己寫驅(qū)動(dòng)還有一點(diǎn)困難,好在?linux內(nèi)核里自帶了很多器件的驅(qū)動(dòng),只需要找到相關(guān)的驅(qū)動(dòng)文件根據(jù)要求修改一下設(shè)備樹(shù)、添加進(jìn)內(nèi)核里編譯就可以。 ? ? ? ? 目前新版本的l

    2024年02月10日
    瀏覽(22)
  • ARM開(kāi)發(fā),stm32mp157a-A7核IIC實(shí)驗(yàn)(采集溫濕度傳感器值)

    ARM開(kāi)發(fā),stm32mp157a-A7核IIC實(shí)驗(yàn)(采集溫濕度傳感器值)

    ---iic.h封裝時(shí)序協(xié)議頭文件--- ---iic.c封裝時(shí)序函數(shù)實(shí)現(xiàn)--- ---si7006.h讀取溫濕度頭文件--- ---si7006.c讀取溫濕度函數(shù)--- ---main.c主函數(shù)測(cè)試---

    2024年02月11日
    瀏覽(50)
  • STM32驅(qū)動(dòng)AHT10&OLED顯示溫濕度

    STM32驅(qū)動(dòng)AHT10&OLED顯示溫濕度

    AHT10是新一代的溫濕度傳感器,使用SMD封裝,上面有一個(gè)改進(jìn)型的MEMS半導(dǎo)體電容式濕度傳感器和一個(gè)標(biāo)準(zhǔn)的片上溫度傳感器原件,可用于空調(diào),除濕器等溫濕度控制領(lǐng)域的檢測(cè)。 電氣參數(shù) AHT10模塊 工作電壓 DC1.8-3.3V 通訊接口 IIC 濕度 分辨率:0.024 %RH 誤差:±2%RH 溫度 分辨率

    2024年02月01日
    瀏覽(29)
  • STM32 F103C8T6學(xué)習(xí)筆記13:IIC通信—AHT10溫濕度傳感器模塊

    STM32 F103C8T6學(xué)習(xí)筆記13:IIC通信—AHT10溫濕度傳感器模塊

    今日學(xué)習(xí)一下這款A(yù)HT10 溫濕度傳感器模塊,給我的OLED手環(huán)添加上測(cè)溫濕度的功能。 文章提供源碼、測(cè)試工程下載、測(cè)試效果圖。 目錄 AHT10溫濕度傳感器: 特性: 連接方式: 適用場(chǎng)所范圍: 程序設(shè)計(jì): 設(shè)計(jì)目標(biāo): ?程序設(shè)計(jì)注意點(diǎn): AHT10代碼: ?主函數(shù)代碼: 測(cè)試效果:

    2024年02月11日
    瀏覽(26)
  • 驅(qū)動(dòng)開(kāi)發(fā)11-1 編寫IIC驅(qū)動(dòng)-讀取溫濕度數(shù)據(jù)
  • STM32驅(qū)動(dòng)dht11檢測(cè)溫濕度由OLED12864顯示

    本次實(shí)驗(yàn)所使用的硬件環(huán)境如下: STM32F103C8T6開(kāi)發(fā)板 DHT11溫濕度傳感器 OLED12864顯示屏 杜邦線若干 軟件環(huán)境 本次實(shí)驗(yàn)所使用的軟件環(huán)境如下: Keil C51編譯器 ST-LINK V2下載器 ST-LINK Utility軟件 硬件連接 首先,將STM32F103C8T6開(kāi)發(fā)板、DHT11溫濕度傳感器和OLED12864顯示屏分別連接在一起

    2023年04月13日
    瀏覽(22)
  • Clion開(kāi)發(fā)Stm32之溫濕度傳感器(DHT11)驅(qū)動(dòng)編寫

    涵蓋之前文章: Clion開(kāi)發(fā)STM32之HAL庫(kù)GPIO宏定義封裝(最新版) Clion開(kāi)發(fā)stm32之微妙延遲(采用nop指令實(shí)現(xiàn)) Clion開(kāi)發(fā)STM32之日志模塊(參考RT-Thread) 頭文件 源文件

    2024年02月15日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包