日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

瑞薩e2studio----RA2L1通過傳感器檢測(cè)溫濕度

RA生態(tài)工作室 ? 2022-01-04 14:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.概述

本篇文章主要介紹如何使用芯片型號(hào)R7FA2L1AB2DFL的開發(fā)板外接溫濕度傳感器進(jìn)行溫濕度檢測(cè),并通過串口顯示溫濕度。

2.硬件準(zhǔn)備

這里我們準(zhǔn)備的是芯片型號(hào)R7FA2L1AB2DFL的開發(fā)板,DHT11溫濕度傳感器模塊。

5e16e074-6b23-11ec-ad3b-dac502259ad0.png

3.溫濕度傳感器參數(shù)

5e85e758-6b23-11ec-ad3b-dac502259ad0.png

供電電壓:3.3V~5.5V DC
輸出:?jiǎn)慰偩€數(shù)字信號(hào)

測(cè)量范圍:濕度 20~90%RH,溫度 0~50℃

測(cè)量精度:濕度±5%RH,溫度±2%℃

分辨率:濕度1%RH,溫度1℃

長(zhǎng)期穩(wěn)定性:<±1%RH/年

4.新建工程

5e950e0e-6b23-11ec-ad3b-dac502259ad0.png

5.工程模板

5ecf24ea-6b23-11ec-ad3b-dac502259ad0.png


6.保存工程路徑

5ee049dc-6b23-11ec-ad3b-dac502259ad0.png

7.芯片配置

5eedd2e6-6b23-11ec-ad3b-dac502259ad0.png

8.工程模板選擇

5f1fa8f2-6b23-11ec-ad3b-dac502259ad0.png


9.UART配置

點(diǎn)擊Stacks->NewStack->Driver->Connectivity -> UART Driver on r_sci_uart。

5f2e986c-6b23-11ec-ad3b-dac502259ad0.png


10.UART屬性配置

5f4116cc-6b23-11ec-ad3b-dac502259ad0.png

11.設(shè)置e2studio堆棧

5f53f1e8-6b23-11ec-ad3b-dac502259ad0.png

12.e2studio的重定向printf設(shè)置

5fb8bf92-6b23-11ec-ad3b-dac502259ad0.png

C++ 構(gòu)建->設(shè)置->GNU ARM Cross CLinker->Miscellaneous去掉Other linker flags中的 “--specs=rdimon.specs”

5fccdfea-6b23-11ec-ad3b-dac502259ad0.png

13.printf輸出重定向到串口

打印最常用的方法是printf,所以要解決的問題是將printf的輸出重定向到串口,然后通過串口將數(shù)據(jù)發(fā)送出去。

注意一定要加上頭文件#include

#ifdef __GNUC__                                 //串口重定向
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
        err = R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
        if(FSP_SUCCESS != err) __BKPT();
        while(uart_send_complete_flag == false){}
        uart_send_complete_flag = false;
        return ch;
}

int _write(int fd,char *pBuffer,int size)
{
    for(int i=0;i;i++)>


14.DHT11鏈接圖

由下圖我們可以得知,我們將DATA接在了P208引腳上。

5fddc012-6b23-11ec-ad3b-dac502259ad0.png

15.IO配置

可以給P208命名,并將P208引腳設(shè)置為輸入模式。

5fecea7e-6b23-11ec-ad3b-dac502259ad0.png


16.DHT11數(shù)據(jù)傳輸

DHT11數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。

數(shù)據(jù)格式為:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和。

5ffe7e10-6b23-11ec-ad3b-dac502259ad0.png

數(shù)據(jù)傳送正確,則byte4+byte3+byte2+byte1=byte0。

17.數(shù)據(jù)發(fā)送時(shí)序

首先主機(jī)發(fā)送開始信號(hào),主機(jī)變?yōu)檩敵瞿J嚼蛿?shù)據(jù)線,保持至少18ms時(shí)間,再拉高數(shù)據(jù)線20~40us時(shí)間,然后主機(jī)變?yōu)檩斎肽J阶x取DHT11的響應(yīng)。DHT11接收到主機(jī)發(fā)送的開始信號(hào),DHT11會(huì)拉低數(shù)據(jù)線,保持80us時(shí)間,作為響應(yīng)信號(hào),然后DHT11拉高數(shù)據(jù)線,保持80us時(shí)間后,開始輸出數(shù)據(jù)。待40bit數(shù)據(jù)傳輸結(jié)束后,上拉電阻拉高總線。

600ab00e-6b23-11ec-ad3b-dac502259ad0.png

18.數(shù)據(jù)0&數(shù)據(jù)1

數(shù)據(jù)1時(shí)序圖:

601b162e-6b23-11ec-ad3b-dac502259ad0.png

數(shù)據(jù)0時(shí)序圖:

602c985e-6b23-11ec-ad3b-dac502259ad0.png

通過對(duì)比時(shí)序圖可知,要判斷數(shù)據(jù)0或數(shù)據(jù)1,只要判斷拉高電平時(shí)間即可。例如,在電平被拉高的40us判斷高低電平,若此時(shí)為低電平,則為數(shù)據(jù)0。若此時(shí)為高電平,則為數(shù)據(jù)1。

19.R_IOPORT_PortDirectionSet()函數(shù)原型

603910c0-6b23-11ec-ad3b-dac502259ad0.png

故可以通過R_IOPORT_PortDirectionSet()函數(shù)設(shè)置端口IO方向,設(shè)置方法如下所示。


//設(shè)置P208為輸入
R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 0<<8, 1<<8);

//設(shè)置P208為輸出
R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 1<<8, 1<<8);


20.dht11.c& dht11.h

添加2個(gè)文件,dht11.c是驅(qū)動(dòng)文件,dht11.h是頭文件。

604c3fa6-6b23-11ec-ad3b-dac502259ad0.png

dht11.c 代碼:

#include "hal_data.h"
#include 
#include "dht11.h"

uint8_t Temp;
uint8_t Humi;
uint8_t flag=0;
uint8_t retry=0;
bsp_io_level_t p_port_value_dht11;

void DHT11_Rst()
{
    DHT11_IO_OUT();//SET OUTPUT
    DHT11_DQ_LOW;//拉低DQ
    R_BSP_SoftwareDelay(18, BSP_DELAY_UNITS_MILLISECONDS);//拉低至少18ms
    DHT11_DQ_HIGH;//DQ=1
    R_BSP_SoftwareDelay(20, BSP_DELAY_UNITS_MICROSECONDS);//主機(jī)拉高20~40us
}

void DHT11_Check()
{
    DHT11_IO_IN();//SET INPUT
    retry=0;
    R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
    while(p_port_value_dht11&&retry<100)
    {
          R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
          retry++;
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
    }
    if(retry>=100)flag=1;
    else retry=0;
    while(!p_port_value_dht11&&retry<100)
    {
          R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
          retry++;
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
    }
    if(retry>=100)flag=1;
    if(flag==1)
    {
        printf("No dht11\n");
        R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
    }
}

void DHT11_Read_Data()
{
        uint8_t buf[5];
        uint8_t i;
        flag=0;

        DHT11_Rst();
        DHT11_Check();
        if(flag==0)
        {
               for(i=0;i<5;i++)//讀取40位數(shù)據(jù)
               {
                     buf[i]=DHT11_Read_Byte();
               }
               if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])//校驗(yàn)讀的溫濕度結(jié)果是否正確
               {
                     Humi=buf[0];
                     Temp=buf[2];
                     printf("Humi=%d\n",Humi);
                     printf("Temp=%d\n",Temp);
               }
               else printf("Receive error\n");
        }
        R_BSP_SoftwareDelay(2, BSP_DELAY_UNITS_SECONDS);

}
//從DHT11讀取一個(gè)位   返回值:1/0
uint8_t DHT11_Read_Bit(void)
{
      retry=0;

      while(p_port_value_dht11&&retry<100)//等待變?yōu)榈碗娖?      {
             R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
             retry++;
             R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
      }

      retry=0;

      while(!p_port_value_dht11&&retry<100)//等待變?yōu)楦唠娖?      {
             R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
             retry++;
             R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
      }

      R_BSP_SoftwareDelay(30, BSP_DELAY_UNITS_MICROSECONDS);
      R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
      if(p_port_value_dht11)return 1;
      else return 0;
}
//從DHT11讀取一個(gè)字節(jié)   //返回值:讀到的數(shù)據(jù)
uint8_t DHT11_Read_Byte(void)
{
    uint8_t i,dat;
    dat=0;
   for (i=0;i<8;i++)
  {
      dat<<=1;
      dat|=DHT11_Read_Bit();
    }
    return dat;
}

dht11.h 代碼:


#ifndef _DHT11_H_
#define _DHT11_H_

//IO方向設(shè)置
#define DHT11_IO_IN()  R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 0<<8, 1<<8)
#define DHT11_IO_OUT() R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 1<<8, 1<<8)
//IO操作
#define DHT11_DQ_LOW   R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_LOW) //數(shù)據(jù)端口   PA0
#define DHT11_DQ_HIGH  R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_HIGH)  //數(shù)據(jù)端口   PA0

void DHT11_Rst(void);
void DHT11_Check(void);
void DHT11_Read_Data(void);
uint8_t DHT11_Read_Bit(void);
uint8_t DHT11_Read_Byte(void);

#endif

21.hal_entry.c

hal_entry.c代碼:


#include "hal_data.h"
#include 
#include "dht11.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

fsp_err_t err = FSP_SUCCESS;
unsigned char send_buff[100];
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{
    if(p_args->event == UART_EVENT_TX_COMPLETE)
    {
        uart_send_complete_flag = true;
    }
}

#ifdef __GNUC__                                 //串口重定向
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
        err = R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
        if(FSP_SUCCESS != err) __BKPT();
        while(uart_send_complete_flag == false){}
        uart_send_complete_flag = false;
        return ch;
}

int _write(int fd,char *pBuffer,int size)
{
    for(int i=0;i;i++)>

22.結(jié)果演示

605f5406-6b23-11ec-ad3b-dac502259ad0.png

上圖是我們測(cè)出來的溫濕度,下圖是當(dāng)?shù)販貪穸???梢钥闯鲞€是在誤差范圍內(nèi)的。

60a4f402-6b23-11ec-ad3b-dac502259ad0.png

當(dāng)我們沒有接上DHT11時(shí):

60b0acd4-6b23-11ec-ad3b-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404732
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    135

    文章

    9589

    瀏覽量

    393778
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6433

    瀏覽量

    121184
  • 瑞薩電子
    +關(guān)注

    關(guān)注

    39

    文章

    2987

    瀏覽量

    74530
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RA2L1入門學(xué)習(xí)】開箱 + 點(diǎn)亮LED燈

    寬電壓工作范圍** ,集成了電容觸摸、高精度模擬和多種定時(shí)資源。 收到開發(fā)板后,包裝比較簡(jiǎn)潔,主要包括: RA2L1 開發(fā)板 二、開發(fā)環(huán)境準(zhǔn)備 官方推薦使用:
    發(fā)表于 04-28 15:24

    RA2L1微控制:架構(gòu)特點(diǎn)及應(yīng)用分析

    RA2L1微控制:架構(gòu)特點(diǎn)及應(yīng)用分析 在當(dāng)前電子設(shè)備不斷追求低功耗與高性能的大趨勢(shì)下,
    的頭像 發(fā)表于 04-01 11:20 ?187次閱讀

    基于R7FA2L1AB2DFL單片機(jī)的水位檢測(cè)器制作方案

    文章主要介紹如何使用e2studio靈活軟件包(FSP)對(duì)R7FA2L1AB2DFL單片機(jī)開發(fā)板進(jìn)行ADC單通道采集電壓,評(píng)估AD功能,以及制作水位
    的頭像 發(fā)表于 03-26 14:55 ?6946次閱讀
    基于<b class='flag-5'>瑞</b><b class='flag-5'>薩</b>R7FA<b class='flag-5'>2L1AB2</b>DFL單片機(jī)的水位<b class='flag-5'>檢測(cè)器</b>制作方案

    RA-Eco-RA2E1-V1.0開發(fā)板試用】開箱

    需求。 開發(fā)層面,RA_EcoRA2L 做了全方位的易用性設(shè)計(jì):板載 SWD 調(diào)試接口,支持 E2/E2 Lite、Segger J-L
    發(fā)表于 02-04 19:54

    FPB-RA6E2試用】【FPB-RA6E2】Zephyr-驅(qū)動(dòng)-DHT11-溫濕度傳感器及設(shè)備樹理解

    FPB-RA6E2】Zephyr-驅(qū)動(dòng)-DHT11-溫濕度傳感器及設(shè)備樹理解 0、視頻教程 視頻教程地址: https://www.b
    發(fā)表于 01-13 14:54

    RA6E2地奇星開發(fā)板試用】開發(fā)板介紹及環(huán)境搭建

    物聯(lián)網(wǎng)、工業(yè)控制、智能硬件等場(chǎng)景。 核心參數(shù)一覽 項(xiàng)目 規(guī)格 主控芯片 R7FA6E2BB3CNE( RA6E2 系列) 內(nèi)核 Arm Cortex-M33(帶 TrustZone
    發(fā)表于 12-22 00:40

    RA6E2地奇星開發(fā)板試用】DHT11 測(cè)量溫濕度

    使用 RA6E2 微控制,實(shí)現(xiàn) DHT11 溫濕度傳感器的數(shù)據(jù)采集,并
    發(fā)表于 12-19 18:50

    RA6E2地奇星開發(fā)板試用】SHT30傳感器串口調(diào)試學(xué)習(xí)和驗(yàn)證

    v2.3 https://gitcode.com/Universal-Tool/131ce 總結(jié) 本文介紹了【 RA6E2 地奇星開發(fā)板】驅(qū)動(dòng) SHT30 傳感器實(shí)現(xiàn)串口打印環(huán)境
    發(fā)表于 12-11 14:49

    RA6E2E2S軟件安裝過程,等待過程玩下97_e2 studio_ZGZZ

    ;amp;vd_source=7ab92f6a337b22fda39554fd6e70f01a 本報(bào)告旨在記錄基于RA6E2 MCU評(píng)估板的初步開發(fā)體驗(yàn)。主要內(nèi)容包括: 軟件開發(fā)環(huán)
    發(fā)表于 12-01 22:42

    RA2L1 MCU e2 studio和FSP的使用指南

    本期“RA MCU眾測(cè)寶典” 繼續(xù)聚焦 “環(huán)境搭建” 專題,帶大家走進(jìn)【RA-Eco-RA2L1-48PIN-V1.0】的世界,查看e2 studio和FSP的下載、安裝及使用指南從零
    的頭像 發(fā)表于 08-04 13:45 ?3234次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA2L1</b> MCU <b class='flag-5'>e</b>2 <b class='flag-5'>studio</b>和FSP的使用指南

    什么是溫濕度傳感器的水合?

    溫濕度傳感器需要進(jìn)行水合處理(Hydration),主要是為了優(yōu)化傳感器的性能、穩(wěn)定性和長(zhǎng)期可靠性。以下是具體原因和作用的詳細(xì)解釋:1.穩(wěn)定濕度
    的頭像 發(fā)表于 07-11 12:10 ?1294次閱讀
    什么是<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的水合?

    常見的溫濕度傳感器類型?

    ),溫度精度為±0.2℃(典型)。濕度和溫度數(shù)據(jù)可以通過MCU、藍(lán)牙芯片或SoC芯片通過數(shù)字接口直接讀取。它與SMBus、I2C接口兼容。非常適合用于暖通空調(diào)、環(huán)境監(jiān)測(cè)等。 在選擇
    發(fā)表于 06-24 09:24

    RA4L1-SENSOR】RA4L1-SENSOR開發(fā)版開箱評(píng)測(cè)+e2studio軟件安裝

    RA4L1-SENSOR開發(fā)板。如下圖所示 拿出里面的開發(fā)板,可以看到3件套,接上USB線, 二、e2studio軟件安裝 e2 studio (簡(jiǎn)稱為
    發(fā)表于 06-12 23:23

    RA單片機(jī)在e2 studio環(huán)境下printf編譯出錯(cuò)的問題解析

    最近看到有一些網(wǎng)友在討論關(guān)于:RA單片機(jī)在e2 studio環(huán)境下printf編譯出錯(cuò)的問題。
    的頭像 發(fā)表于 05-24 15:51 ?1758次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b>單片機(jī)在<b class='flag-5'>e2</b> <b class='flag-5'>studio</b>環(huán)境下printf編譯出錯(cuò)的問題解析

    RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】RT-Thread上驅(qū)動(dòng)I2C溫濕度傳感器

    I2C Bus0 uart9 Character Device2 pinPin Device0 msh /> 最后用RT-Thread sensor框架自帶的測(cè)試cmd測(cè)試下溫濕度
    發(fā)表于 05-08 22:42
    重庆市| 文水县| 德庆县| 汝阳县| 乐昌市| 郴州市| 永川市| 青岛市| 济阳县| 囊谦县| 南漳县| 利辛县| 汝州市| 遵义市| 五台县| 永福县| 两当县| 舒兰市| 安乡县| 静海县| 博乐市| 白朗县| 玉林市| 大港区| 崇明县| 吉安市| 新乡县| 新蔡县| 江油市| 新源县| 兰西县| 开江县| 西宁市| 平乐县| 万载县| 茌平县| 资溪县| 城步| 原阳县| 牙克石市| 塔城市|