在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CW32模塊使用 MS5611氣壓傳感器

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-12-05 12:01 ? 次閱讀

一、模塊來源

模塊實物展示:

wKgZPGdRJamAdE2CAAAlhGtYYrg435.jpg


資料下載鏈接:
https://pan.baidu.com/s/1QOrpiggCE6mBpqabJXUufg
提取碼:c2pp

二 、規格參數

工作電壓:1.8~3.6V

工作電流:0.25~23uA

溫度精度:0.8℃

溫度范圍:-40~85℃

氣壓范圍:10~1200 mbar

氣壓精度:1.5 mbar

輸出方式: IIC

管腳數量:3 Pin

以上信息見廠家資料文件

三、移植過程

我們的目標是將例程移植至CW32F030C8T6開發板上【能夠測量環境氣壓】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。

3.1查看資料

當PS引腳接高電平時,傳感器屬于IIC模式;當PS引腳接低電平時,傳感器屬于SPI模式;在原理圖上,PS引腳通過上拉電阻接了高電平,故默認為IIC模式。

wKgZO2dRJamAKxJeAABU9qUS9N4484.jpg

器件地址 = 0XEE

CSB的反補碼 即CSB引腳接高電平時, 地址為 1110 110+(讀寫位)

CSB的反補碼 即CSB引腳接低電平時, 地址為 1110 111+(讀寫位)

wKgZPGdRJamARG7SAAASjBwQs4c065.jpg

讀取氣壓與溫度的流程:開始-> 讀取出廠校準值C1至C6 -> 讀取氣壓D1和溫度D2的原始數據 -> 將D2和C1C6帶入公式求出dT和TEMP,其中TEMP為溫度數據-> 將dT和C1至C6帶入公式求出OFF、SENS和P,其中P為氣壓數據。

wKgZO2dRJaqAJw5NAADoWr_EpeE904.jpg

3.2引腳選擇

wKgZPGdRJaqABXfTAAFUnCnYQAE450.jpg

模塊接線圖

3.3移植至工程

移植步驟中的導入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_ms5611.c與bsp_ms5611.h。這里不再過多講述,移植完成后面修改相關代碼。

在文件bsp_ms5611.c中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */

#include "bsp_ms5611.h"
#include "stdio.h"
#include "board.h"

//出廠校準值
//Cal_C1_6[0]                                 = 廠家信息
//Cal_C1_6[1] ~ Cal_C1_6[6] = 校準值
//Cal_C1_6[7]                                 = 校準值的CRC校驗
uint16_t Cal_C1_6[8];


/******************************************************************
 * 函 數 名 稱:MS5611_GPIO_Init
 * 函 數 說 明:MS5611的引腳初始化
 * 函 數 形 參:無
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void MS5611_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結構體

    RCC_MS5611_ENBALE();        // 使能GPIO時鐘

    GPIO_InitStruct.Pins = GPIO_SDA|GPIO_SCL;   // GPIO引腳
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; // 開漏輸出
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;    // 輸出速度高
    GPIO_Init(PORT_MS5611, &GPIO_InitStruct);   // 初始化
}


/******************************************************************
 * 函 數 名 稱:IIC_Start
 * 函 數 說 明:IIC起始時序
 * 函 數 形 參:無
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Start(void)
{
        SDA_OUT();

        SDA(1);
        delay_us(5);
        SCL(1);
        delay_us(5);

        SDA(0);
        delay_us(5);
        SCL(0);
        delay_us(5);

}
/******************************************************************
 * 函 數 名 稱:IIC_Stop
 * 函 數 說 明:IIC停止信號
 * 函 數 形 參:無
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Stop(void)
{
        SDA_OUT();
        SCL(0);
        SDA(0);

        SCL(1);
        delay_us(5);
        SDA(1);
        delay_us(5);

}

/******************************************************************
 * 函 數 名 稱:IIC_Send_Ack
 * 函 數 說 明:主機發送應答或者非應答信號
 * 函 數 形 參:0發送應答  1發送非應答
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Send_Ack(unsigned char ack)
{
        SDA_OUT();
        SCL(0);
        SDA(0);
        delay_us(5);
        if(!ack) SDA(0);
        else         SDA(1);
        SCL(1);
        delay_us(5);
        SCL(0);
        SDA(1);
}


/******************************************************************
 * 函 數 名 稱:I2C_WaitAck
 * 函 數 說 明:等待從機應答
 * 函 數 形 參:無
 * 函 數 返 回:0有應答  1超時無應答
 * 作       者:LC
 * 備       注:無
******************************************************************/
unsigned char I2C_WaitAck(void)
{

        char ack = 0;
        unsigned char ack_flag = 10;
        SCL(0);
        SDA(1);
        SDA_IN();
        delay_us(5);
        SCL(1);
        delay_us(5);

        while( (SDA_GET()==1) && ( ack_flag ) )
        {
                ack_flag--;
                delay_us(5);
        }

        if( ack_flag <= 0 )
        {
                IIC_Stop();
                return 1;
        }
        else
        {
                SCL(0);
                SDA_OUT();
        }
        return ack;
}

/******************************************************************
 * 函 數 名 稱:Send_Byte
 * 函 數 說 明:寫入一個字節
 * 函 數 形 參:dat要寫人的數據
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void Send_Byte(uint8_t dat)
{
        int i = 0;
        SDA_OUT();
        SCL(0);//拉低時鐘開始數據傳輸

        for( i = 0; i < 8; i++ )
        {
                SDA( (dat & 0x80) >> 7 );
                delay_us(1);
                SCL(1);
                delay_us(5);
                SCL(0);
                delay_us(5);
                dat

在文件bsp_sht10.h中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */

#ifndef _BSP_MS5611_H_
#define _BSP_MS5611_H_

#include "board.h"


//端口移植
#define RCC_MS5611_ENBALE()        __RCC_GPIOB_CLK_ENABLE()
#define PORT_MS5611                CW_GPIOB


#define GPIO_SDA                   GPIO_PIN_9
#define GPIO_SCL                   GPIO_PIN_8

//設置SDA輸出模式
#define SDA_OUT()   {        
                        GPIO_InitTypeDef GPIO_InitStruct;                
                        GPIO_InitStruct.Pins = GPIO_SDA;                 
                        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;      
                        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         
                        GPIO_Init(PORT_MS5611, &GPIO_InitStruct);       
                     }
//設置SDA輸入模式
#define SDA_IN()    {        
                        GPIO_InitTypeDef GPIO_InitStruct;                
                        GPIO_InitStruct.Pins = GPIO_SDA;                 
                        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;         
                        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         
                        GPIO_Init(PORT_MS5611, &GPIO_InitStruct);       
                    }
//獲取SDA引腳的電平變化
#define SDA_GET()       GPIO_ReadPin(PORT_MS5611, GPIO_SDA)
//SDA與SCL輸出
#define SDA(x)          GPIO_WritePin(PORT_MS5611, GPIO_SDA, (x?GPIO_Pin_SET:GPIO_Pin_RESET) )
#define SCL(x)          GPIO_WritePin(PORT_MS5611, GPIO_SCL, (x?GPIO_Pin_SET:GPIO_Pin_RESET) )


void MS5611_GPIO_Init(void);
char MS5611_Reset(void);
void MS5611_Read_PROM(void);
float Get_TEMP(void);
float Get_pressure(void);

#endif

四、移植驗證

在自己工程中的main主函數中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_ms5611.h"

int32_t main(void)
{
    board_init();        // 開發板初始化

    uart1_init(115200);        // 串口1波特率115200

    MS5611_GPIO_Init();

    MS5611_Reset();//器件復位

    delay_ms(300);//等待初始化完成;

    MS5611_Read_PROM();//讀取出廠校準值
    printf("startrn");
    while(1)
    {
        //輸出溫度
        printf("溫度 = %.0f℃rn",Get_TEMP() );
        //輸出氣壓
        printf("氣壓 = %.2fHParn",Get_pressure() );

        printf("n");
        delay_ms(1000);

    }
}

移植現象:每隔一秒左右測量一次溫度和氣壓。

wKgZO2dRJaqAOhuNAADVTu4IipI077.jpg

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1unyWALyDcHWy02K_Y77blQ?pwd=LCKF

提取碼:LCKF

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51097

    瀏覽量

    753529
  • 氣壓傳感器
    +關注

    關注

    4

    文章

    136

    瀏覽量

    21079
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    640
收藏 人收藏

    評論

    相關推薦

    氣壓傳感器的分類與應用

    ? 傳感器技術已成為現代工業、科研及日常生活中不可或缺的重要部分。其中,氣壓傳感器作為能夠精確測量大氣壓力的設備,其應用廣泛且日益重要。本文將深入探討
    的頭像 發表于 12-20 09:22 ?133次閱讀
    <b class='flag-5'>氣壓</b><b class='flag-5'>傳感器</b>的分類與應用

    CW32模塊使用 人體紅外傳感器

    人體紅外感應模塊使用的是熱釋電紅外傳感器,它是利用溫度變化的特征來探測紅外線的輻射,利用雙靈敏元互補的方法抑制溫度變化產生的干擾,提高了傳感器的工作穩定性。產品應用廣泛,例如:保險裝置、防盜報警
    的頭像 發表于 12-05 15:09 ?165次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 人體紅外<b class='flag-5'>傳感器</b>

    CW32模塊使用 BMP180氣壓傳感器

    CW32F030C8T6開發板上【能夠測量環境溫度、氣壓、高度】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。 3.1查看資料 BMP180共有四種
    的頭像 發表于 12-05 12:06 ?131次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 BMP180<b class='flag-5'>氣壓</b><b class='flag-5'>傳感器</b>

    CW32模塊使用】微波多普勒無線雷達傳感器

    微波運動傳感器是利用多普勒雷達原理設計的微波移動物體探測。不同于一般的紅外探測,微波傳感器通過通過檢測物體反射的微波來探測物體的運動狀況,檢測對象將并不會局限于人體,還有很多其他的
    的頭像 發表于 11-28 17:24 ?776次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】微波多普勒無線雷達<b class='flag-5'>傳感器</b>

    小型氣壓傳感器的應用 工業氣壓傳感器的選購技巧

    小型氣壓傳感器的應用 氣壓傳感器是一種能夠將大氣壓力轉換為電信號的裝置,它們在現代工業和日常生活中扮演著越來越重要的角色。小型
    的頭像 發表于 11-28 13:52 ?167次閱讀

    氣壓傳感器選型指南 精密氣壓傳感器的優勢

    氣壓傳感器選型指南 1. 確定應用場景 在選型之前,首先要明確氣壓傳感器的應用場景。不同的應用場景對傳感器的精度、響應速度、穩定性、環境適應
    的頭像 發表于 11-28 13:46 ?294次閱讀

    氣壓傳感器與溫度傳感器的區別

    1. 定義與工作原理 氣壓傳感器氣壓傳感器是一種能夠檢測和測量大氣壓力的設備。大氣壓力是指
    的頭像 發表于 11-28 13:43 ?244次閱讀

    氣壓傳感器應用領域分析 如何選擇氣壓傳感器

    氣壓傳感器作為現代科技中不可或缺的一部分,其精確測量大氣壓力的能力對于許多行業至關重要。 一、氣壓傳感器的應用領域 氣象監測 氣象站使用
    的頭像 發表于 11-28 13:40 ?328次閱讀

    CW32模塊使用】雨滴傳感器

    雨滴傳感器主要是用來檢測是否下雨及雨量的大小。主要用于汽車智能燈光(AFS)系統、汽車自動雨刷系統、智能車窗系統。 該雨滴傳感器基本上是一塊板,上面以線形形式涂覆鎳。雨滴傳感器常見的工作原理是通過
    的頭像 發表于 11-28 11:23 ?2138次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】雨滴<b class='flag-5'>傳感器</b>

    基于CW32模塊的雨滴傳感器設計

    雨滴傳感器主要是用來檢測是否下雨及雨量的大小。主要用于汽車智能燈光(AFS)系統、汽車自動雨刷系統、智能車窗系統。
    的頭像 發表于 11-26 17:22 ?256次閱讀
    基于<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>的雨滴<b class='flag-5'>傳感器</b>設計

    CW32模塊使用】紅外測距傳感器

    GP2Y0A02YKOF是夏普的一款距離測量傳感器模塊。它由PSD(position sensitive detector)和IRED(infrared emitting diode)以及信號處理
    的頭像 發表于 09-23 09:53 ?356次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】紅外測距<b class='flag-5'>傳感器</b>

    CW32模塊使用 紅外循跡傳感器

    ,調節方向與固定方便易用,使用寬電壓LM393比較,信號干凈,波形好,驅動能力強,超過15mA。可以應用于機器人避障、機器人進行白線或者黑線的跟蹤,可以檢測白底中的黑線,也可以檢測黑底中的白線,是尋線機器人的必備傳感器。 01模塊
    的頭像 發表于 09-18 14:31 ?388次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 紅外循跡<b class='flag-5'>傳感器</b>

    【項目展示】基于CW32的遙控循跡小車

    CW32循跡小車.zip_免費高速下載|百度網盤-分享無限制? 一、概述 CW32循跡、遙控小車具有循跡和遙控兩種功能,小車的硬件模塊CW32F030C8T6小藍板、智能小車控制底板
    的頭像 發表于 05-31 17:33 ?1316次閱讀
    【項目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    CW32量產燒錄工具

    本節主要介紹CW32微控制的燒錄CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄
    的頭像 發表于 04-25 15:22 ?1405次閱讀
    <b class='flag-5'>CW32</b>量產燒錄工具

    CW32快速開發入門

    CW32快速開發入門
    的頭像 發表于 04-24 18:56 ?1964次閱讀
    <b class='flag-5'>CW32</b>快速開發入門
    主站蜘蛛池模板: 天堂网成人| 久久免费国产视频| 国产亚洲视频在线| 欧美成人猛男性色生活| 亚洲国产精品丝袜在线观看 | 亚色中文| 黄色网页在线观看| 四虎亚洲精品| 91亚色视频| 制服丝袜国产精品| 日本黄色www| 天天插狠狠干| 99久久99久久久精品齐齐鬼色| 可以直接看的黄址 | 欧美福利精品| 奇米影视四色7777久久精品| 免费的黄视频| 久久电影福利| 69色视频| 色接久久| 天天干天天看| 中文字幕天堂在线| 国产欧美色图| 黑人xxxx精品| 免费一级做a爰片久久毛片| 免费一级毛片清高播放| 一级@片| 6080伦理久久亚洲精品| 日本三级黄在线观看| 久久人视频| 99草精品视频| 日本三级视频| 好吊色7777sao在线视频观看 | 亚洲福利午夜| 久久99热久久精品| 国产精品久久久久aaaa| 69日本xxxxxxxxx18| 久久婷婷综合五月一区二区| 成年香蕉大黄美女美女| 日韩特级毛片| 久久久免费视频播放|