欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

瑞薩e2studio----RA2L1通過傳感器檢測溫濕度

RA生態(tài)工作室 ? 2022-01-04 14:38 ? 次閱讀

1.概述

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

2.硬件準(zhǔn)備

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

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

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

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

供電電壓:3.3V~5.5V DC
輸出:單總線數(shù)字信號

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

測量精度:濕度±5%RH,溫度±2%℃

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

長期穩(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ù)格式,單個數(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ā)送時序

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

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

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

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

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

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

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

通過對比時序圖可知,要判斷數(shù)據(jù)0或數(shù)據(jù)1,只要判斷拉高電平時間即可。例如,在電平被拉高的40us判斷高低電平,若此時為低電平,則為數(shù)據(jù)0。若此時為高電平,則為數(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個文件,dht11.c是驅(qū)動文件,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讀取一個位   返回值: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讀取一個字節(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

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

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

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

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

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

    關(guān)注

    146

    文章

    17363

    瀏覽量

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

    關(guān)注

    134

    文章

    9180

    瀏覽量

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

    關(guān)注

    25

    文章

    5137

    瀏覽量

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

    關(guān)注

    37

    文章

    2880

    瀏覽量

    72497
收藏 人收藏

    評論

    相關(guān)推薦

    RA2L1入門學(xué)習(xí)】2. PWM呼吸燈

    開發(fā)板:RA-Eco-RA2L1-48PIN-V1.0 IDE:e2studio 程序燒錄工具:RAFP 參考資料:“RA2L1入門教學(xué)實(shí)驗(yàn).pdf” 本次使用的是32位GPT 1.編
    發(fā)表于 01-30 21:55

    RA2L1入門學(xué)習(xí)】1. 點(diǎn)亮LED

    首次使用單片機(jī),先說一下使用感受。 本次學(xué)習(xí)使用的是RA-Eco-RA2L1-48PIN-V1.0開發(fā)板+e2studio(官方的集成開發(fā)環(huán)境)+RAFP(官方的程序燒錄工具)。
    發(fā)表于 01-29 22:17

    RA家族精品RA2L1產(chǎn)品介紹

    RA2L1MCU是RA家族RA2系列廣受歡迎的一款產(chǎn)品。RA2L1MCU專為超低功耗應(yīng)用而設(shè)
    的頭像 發(fā)表于 12-27 18:07 ?192次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b>家族精品<b class='flag-5'>RA2L1</b>產(chǎn)品介紹

    安科開關(guān)柜用無線溫濕度傳感器AHE100 提高設(shè)備使用壽命

    安科開關(guān)柜用無線溫濕度傳感器主要用于中高壓開關(guān)柜、端子箱、環(huán)網(wǎng)柜、箱變等設(shè)備內(nèi)部及配電室環(huán)境的溫濕度檢測。模塊采用專用外殼,通風(fēng)效果好,
    的頭像 發(fā)表于 12-20 10:00 ?168次閱讀
    安科<b class='flag-5'>瑞</b>開關(guān)柜用無線<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>AHE100 提高設(shè)備使用壽命

    溫濕度傳感器種類及原理的優(yōu)劣分析

    傳感器的種類 電阻式溫濕度傳感器 電阻式傳感器是基于材料的電阻隨溫度和濕度的變化而變化的原理進(jìn)行工作的。在溫度測量方面,常見的電阻式
    的頭像 發(fā)表于 10-21 15:05 ?1136次閱讀

    溫濕度傳感器是什么類型的傳感器

    溫濕度傳感器是一種能夠?qū)崟r監(jiān)測和記錄環(huán)境中溫度和濕度變化的設(shè)備或裝置。這類傳感器廣泛應(yīng)用于環(huán)境監(jiān)測、氣象觀測、農(nóng)業(yè)、工業(yè)生產(chǎn)、倉儲管理、智能家居、醫(yī)療健康等多個領(lǐng)域,為相關(guān)領(lǐng)域的研究、
    的頭像 發(fā)表于 10-21 14:53 ?690次閱讀

    RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】sht30溫濕度傳感器

    這一章節(jié),繼續(xù)探究RA0E1的硬件iic外設(shè)。來驅(qū)動SHT30溫濕度傳感器,該款溫濕度傳感器具有高精度穩(wěn)定性,可以精確到0.125度的分辨率
    發(fā)表于 10-14 23:40

    e2studio(1)----芯片之搭建FSP環(huán)境

    視頻教學(xué) 樣品申請 請勿添加外鏈 e2studio軟件 e2studio的集成開發(fā)環(huán)境,F(xiàn)SP 提供了眾多可提高效率的工具,用于開發(fā)針對
    發(fā)表于 09-30 15:28

    溫濕度傳感器怎么調(diào)試

    的工作原理 溫度測量原理 溫濕度傳感器中的溫度測量通常采用熱敏電阻或熱電偶。熱敏電阻的阻值隨溫度的變化而變化,通過測量電阻值可以計算出溫度值。熱電偶則是利用兩種不同金屬或合金的接觸點(diǎn)產(chǎn)生的熱電勢來測量溫度。
    的頭像 發(fā)表于 08-19 15:04 ?1202次閱讀

    溫濕度傳感器技術(shù)參數(shù)有哪些

    、功耗、輸出接口等。 傳感器類型 溫濕度傳感器主要分為兩大類:接觸式和非接觸式。接觸式傳感器通過與被測物體接觸來測量溫度和
    的頭像 發(fā)表于 08-19 15:03 ?1456次閱讀

    想要準(zhǔn)確地測量環(huán)境溫濕度?溫濕度傳感器是關(guān)鍵!

    的應(yīng)用十分廣泛。 ?溫濕度傳感器的工作原理 溫濕度傳感器的工作原理主要基于幾種不同的物理效應(yīng): 電 阻式: 電阻式溫濕度
    的頭像 發(fā)表于 07-04 08:48 ?675次閱讀

    RA2L1系列CAN通信應(yīng)用

    RA2L1系列CAN通信應(yīng)用
    的頭像 發(fā)表于 06-26 08:06 ?724次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA2L1</b>系列CAN通信應(yīng)用

    安科AHE100無線溫濕度傳感器 35mm導(dǎo)軌安裝 安裝于斷路觸頭 母排電流處

    安科 程瑜 01 產(chǎn)品概述 AHE100無線溫濕度傳感器主要用于中高壓開關(guān)柜、端子箱、環(huán)網(wǎng)柜、箱變等設(shè)備內(nèi)部及配電室環(huán)境的溫濕度檢測。模
    的頭像 發(fā)表于 03-27 16:15 ?609次閱讀
    安科<b class='flag-5'>瑞</b>AHE100無線<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b> 35mm導(dǎo)軌安裝 安裝于斷路<b class='flag-5'>器</b>觸頭 母排電流處

    溫濕度傳感器有哪些應(yīng)用場景?

    溫濕度傳感器在眾多領(lǐng)域,特別是在實(shí)時記錄溫濕度變化的工作中最為廣泛。溫濕度傳感器可以根據(jù)所記錄的內(nèi)容,對其進(jìn)行科學(xué)有效的管理、分析和歸納。下
    的頭像 發(fā)表于 02-19 16:28 ?1501次閱讀
    <b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>有哪些應(yīng)用場景?

    溫濕度傳感器工作原理 溫濕度傳感器的接線方法

    溫濕度傳感器是一種用于測量環(huán)境溫度和相對濕度的裝置。它通常用于工業(yè)、農(nóng)業(yè)、氣象、室內(nèi)空調(diào)等領(lǐng)域。本文將詳細(xì)介紹溫濕度傳感器的工作原理和接線方
    的頭像 發(fā)表于 02-14 18:00 ?1w次閱讀