国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

PIC32MX470 溫濕度計(jì)+RTOS+GUI:串口打印溫濕度數(shù)據(jù)解析

電子工程師 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 2018-02-01 03:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

串口可用之后,很多debug信息就可以通過(guò)串口打印輸出了,所以我打算先把讀到的溫濕度數(shù)據(jù)通過(guò)串口打印出來(lái),然后再調(diào)OLED顯示,之后再將數(shù)據(jù)通過(guò)OLED屏顯示,一步一步來(lái)。

首先還是在板子自帶的Information sheet上找到I2C的管腳,有I2C1和I2C2,但還是由于硬件老白的原因,只能用X32接口上的I2C2了。

1

看了下溫濕度的資料,最高耐壓5.5V,先接到3.3V上試一下,按如下方式連接X(jué)32和溫濕度計(jì)

2

接下來(lái)依然是通過(guò)MHC來(lái)使能I2C驅(qū)動(dòng)

1. 打開(kāi)MHC的Options選項(xiàng)卡,找到I2C對(duì)應(yīng)的driver選項(xiàng)打開(kāi)并做相應(yīng)的配置,我的配置如下

2. 打開(kāi)MHC的Pin Settings,將RF4和RF5設(shè)置為I2C2的SDA和SCL

3. 然后生成代碼,主要包含以下幾個(gè)源文件,我為了添加callback以及封裝DHT12的驅(qū)動(dòng),又添加了bsp_i2c.c和bsp_dht12.c兩個(gè)文件

5

4. 分析I2C驅(qū)動(dòng)代碼后可知在SYS_Initialize中已經(jīng)根據(jù)用戶(hù)的配置調(diào)用了I2C相關(guān)的初始化函數(shù),所以使用時(shí)只需要在我們的封裝層里直接調(diào)用drv_i2c_mapping.c中的其他API就可以了,我添加的bsp_i2c.c和bsp_dht12.c中的代碼如下,DHT12的數(shù)據(jù)還沒(méi)有做校驗(yàn)

bsp_i2c.c

#include “system/common/sys_common.h”

#include “system_config.h”

#include “system_definitions.h”

#include “driver/i2c/drv_i2c.h”

#include

#include

#define BSP_I2C_BUF_SIZE 0x10

typedef struct bsp_i2c_dev {

DRV_HANDLE I2CHandle;

OS_SEM SemLock; /* I2C Exclusive access sempahore */

OS_SEM SemWait; /* Transfer Complete signal */

CPU_INT08U TxBuf[BSP_I2C_BUF_SIZE]; /* The transfer data area */

CPU_INT08U RxBuf[BSP_I2C_BUF_SIZE]; /* The receive data area */

} BSP_I2C_DEV;

static BSP_I2C_DEV BSP_I2C_DevTbl[BSP_I2C_NBR_MAX];

static void BSP_I2C2_Callback (DRV_I2C_BUFFER_EVENT event,

DRV_I2C_BUFFER_HANDLE bufferHandle, uintptr_t context);

CPU_BOOLEAN BSP_I2C_Init (CPU_INT08U i2c_id,

CPU_INT08U i2c_mode,

CPU_INT32U bit_rate)

{

OS_ERR err;

BSP_I2C_DEV *p_i2c_dev;

switch (i2c_id) {

case BSP_I2C_ID_I2C2:

p_i2c_dev = (BSP_I2C_DEV *)&BSP_I2C_DevTbl[0];

break;

default:

return (DEF_FAIL);

}

/* Setup the I2C handle */

p_i2c_dev-》I2CHandle = DRV_I2C_Open(DRV_I2C_INDEX_0, 0);

/* -------------- CREATE OS SEMAPHORES ------------- */

OSSemCreate((OS_SEM *)&(p_i2c_dev-》SemWait), “I2C Wait”, 0, &err);

OSSemCreate((OS_SEM *)&(p_i2c_dev-》SemLock), “I2C Lock”, 1, &err);

switch (i2c_id) {

case BSP_I2C_ID_I2C2:

DRV_I2C_BufferEventHandlerSet(p_i2c_dev-》I2CHandle, BSP_I2C2_Callback, NULL);

break;

default:

return (DEF_FAIL);

}

return (DEF_OK);

}

CPU_BOOLEAN BSP_I2C_WrRd (CPU_INT08U i2c_id,

CPU_INT08U i2c_addr,

CPU_INT08U *offset_buf,

CPU_INT08U offset_len,

CPU_INT08U *p_buf,

CPU_INT16U nbr_bytes)

{

OS_ERR err;

BSP_I2C_DEV *p_i2c_dev;

if ((offset_buf == (CPU_INT08U *)0) || (p_buf == (CPU_INT08U *)0)) {

return (DEF_FAIL);

}

if ((nbr_bytes 《 1) ||

((offset_len + 1) 》 BSP_I2C_BUF_SIZE) ||

((nbr_bytes + 1) 》 BSP_I2C_BUF_SIZE)) {

return (DEF_FAIL);

}

switch (i2c_id) {

case BSP_I2C_ID_I2C2:

p_i2c_dev = (BSP_I2C_DEV *)&BSP_I2C_DevTbl[0];

break;

default:

return (DEF_FAIL);

}

/* Lock the I2C peripheral */

OSSemPend(&(p_i2c_dev-》SemLock), 0, OS_OPT_PEND_BLOCKING, 0, &err);

/* Do master write transfer */

DRV_I2C_TransmitThenReceive(p_i2c_dev-》I2CHandle, i2c_addr,

offset_buf, offset_len, p_buf, nbr_bytes, NULL);

/* Wait until the transfer completes */

OSSemPend(&(p_i2c_dev-》SemWait), 1000, OS_OPT_PEND_BLOCKING, 0, &err);

OSSemPost(&(p_i2c_dev-》SemLock), OS_OPT_POST_1, &err); /* Release the I2C Peripheral */

return DEF_OK;

}

static void BSP_I2C2_Callback (DRV_I2C_BUFFER_EVENT event,

DRV_I2C_BUFFER_HANDLE bufferHandle, uintptr_t context)

{

OS_ERR err;

BSP_I2C_DEV *p_i2c_dev;

p_i2c_dev = (BSP_I2C_DEV *)&BSP_I2C_DevTbl[0];

OSSemPost(&(p_i2c_dev-》SemWait), OS_OPT_POST_1, &err); /* Post to the sempahore */

}

bsp_dht12.c

#include “system/common/sys_common.h”

#include “system_config.h”

#include “system_definitions.h”

#include

#include

CPU_BOOLEAN BSP_DHT12_Read (CPU_INT08U *hum_high,

CPU_INT08U *hum_low,

CPU_INT08U *temp_high,

CPU_INT08U *temp_low)

{

CPU_BOOLEAN ret;

CPU_INT08U byte_addr = 0;

CPU_INT08U data_buf[4];

ret = BSP_I2C_WrRd(BSP_I2C_ID_I2C2, 0xB8, &byte_addr, 1, data_buf, 4);

if (ret) {

*hum_high = data_buf[0];

*hum_low = data_buf[1];

*temp_high = data_buf[2];

*temp_low = data_buf[3];

}

return ret;

}

5. 在_SYS_Tasks任務(wù)中添加我們自己代碼的初始化

6. 最后在A(yíng)PP_Tasks中添加讀溫濕度數(shù)據(jù)的處理,每秒讀一次并通過(guò)串口打印出來(lái)

串口打印輸出如下

223816fz7rn1mooo1rbyu9

串口定時(shí)地將溫濕度數(shù)據(jù)打印出來(lái),也算是一個(gè)簡(jiǎn)陋的溫濕度計(jì)吧。下一步就是調(diào)試SPI和OLED屏,給我們的溫濕度計(jì)做一個(gè)好看一點(diǎn)的輸出界面,畢竟這是一個(gè)實(shí)(kao)力(lian)說(shuō)(chi)話(huà)(fan)的時(shí)代。

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

    關(guān)注

    0

    文章

    5

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    HDC2010:低功耗溫濕度數(shù)字傳感器的卓越之選

    HDC2010:低功耗溫濕度數(shù)字傳感器的卓越之選 在電子設(shè)備的設(shè)計(jì)中,溫濕度傳感器是不可或缺的一部分,它廣泛應(yīng)用于各種環(huán)境監(jiān)測(cè)和控制場(chǎng)景。今天,我們就來(lái)深入了解一下德州儀器(TI)的 HDC2010
    的頭像 發(fā)表于 02-12 11:25 ?286次閱讀

    紡織車(chē)間溫濕度數(shù)據(jù)采集遠(yuǎn)程監(jiān)控系統(tǒng)方案

    對(duì)精細(xì)化的紡織工業(yè)來(lái)說(shuō),確保適宜的溫濕度是保證成紗質(zhì)量的關(guān)鍵。保持適宜的溫濕度條件,可以有效提高纖維剛性和彈性,減少纖維與機(jī)器部件之間的摩擦及堵塞現(xiàn)象。如果車(chē)間相對(duì)濕度過(guò)低,不僅容易產(chǎn)生靜電,導(dǎo)致棉
    的頭像 發(fā)表于 02-05 15:07 ?165次閱讀
    紡織車(chē)間<b class='flag-5'>溫濕度數(shù)據(jù)</b>采集遠(yuǎn)程監(jiān)控系統(tǒng)方案

    2025溫濕度變送器選購(gòu)指南與傳感器應(yīng)用方案解析

    溫濕度變送器作為環(huán)境監(jiān)測(cè)和工業(yè)控制領(lǐng)域的重要設(shè)備,廣泛應(yīng)用于農(nóng)業(yè)、醫(yī)療、工業(yè)制造、物聯(lián)網(wǎng)等眾多行業(yè)。2025年,伴隨著傳感器技術(shù)的進(jìn)一步發(fā)展,溫濕度變送器的性能不斷提升,市場(chǎng)需求也持續(xù)增長(zhǎng)。本文將基于權(quán)威數(shù)據(jù)平臺(tái)的市場(chǎng)分析,詳細(xì)
    的頭像 發(fā)表于 02-01 10:44 ?823次閱讀

    冷庫(kù)溫濕度監(jiān)控系統(tǒng)物聯(lián)網(wǎng)解決方案

    響應(yīng)滯后,易導(dǎo)致物資變質(zhì)損耗;數(shù)據(jù)缺乏實(shí)時(shí)記錄與追溯,無(wú)法滿(mǎn)足行業(yè)監(jiān)管要求;局部溫濕度不均問(wèn)題難以發(fā)現(xiàn),影響整體存儲(chǔ)質(zhì)量。
    的頭像 發(fā)表于 01-19 16:57 ?482次閱讀

    溫濕度傳感器HTU31D在溫濕度控器中的應(yīng)用優(yōu)勢(shì)

    對(duì)環(huán)境溫濕度即時(shí)采樣,當(dāng)環(huán)境溫度高于控制設(shè)定值時(shí)控制電路停止或者通過(guò)PWM降低加熱功率,將溫度恒定在設(shè)置值附近,同樣,濕度也是類(lèi)如如此控制方式。為了準(zhǔn)確控制溫濕度,需要一顆能夠提供可靠的溫濕度
    的頭像 發(fā)表于 11-06 14:38 ?339次閱讀
    <b class='flag-5'>溫濕度</b>傳感器HTU31D在<b class='flag-5'>溫濕度</b>控器中的應(yīng)用優(yōu)勢(shì)

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】4、使用藍(lán)牙模塊讀取小米溫濕度計(jì)數(shù)據(jù)

    雖然設(shè)備上沒(méi)有藍(lán)牙模塊,我們依舊可以通過(guò)USB的星閃模組實(shí)現(xiàn)藍(lán)牙ble相關(guān)的功能,例如讀取小米溫濕度計(jì)數(shù)據(jù)。 首先需要加載對(duì)應(yīng)的模塊,這些模塊在前面一個(gè)章節(jié)已經(jīng)編譯好了。 insmod
    發(fā)表于 08-25 22:16

    【上海晶珩睿莓1開(kāi)發(fā)板試用體驗(yàn)】Home Assistant 物聯(lián)網(wǎng)溫濕度計(jì)

    【上海晶珩睿莓1開(kāi)發(fā)板試用體驗(yàn)】Home Assistant 物聯(lián)網(wǎng)溫濕度計(jì) 本文介紹了上海晶珩睿莓 1 開(kāi)發(fā)板通過(guò) AHT10 傳感器實(shí)現(xiàn)環(huán)境溫濕度采集,結(jié)合 WiFi 和 MQTT 協(xié)議實(shí)現(xiàn)數(shù)據(jù)
    發(fā)表于 08-18 13:55

    功耗創(chuàng)新低!涂鴉產(chǎn)品級(jí)Zigbee 3.0溫濕度計(jì)開(kāi)發(fā)包,開(kāi)箱即用、完全開(kāi)源

    溫濕度計(jì)作為智能家居環(huán)境感知的核心組件,通過(guò)實(shí)時(shí)檢測(cè)溫濕度信息,可主動(dòng)聯(lián)動(dòng)暖通、加濕器等設(shè)備,幫助提升居住舒適度、降低能源消耗。這類(lèi)產(chǎn)品通常是由電池供電,對(duì)低功耗的要求較高。而Zigbee天然支持
    的頭像 發(fā)表于 07-31 19:13 ?841次閱讀
    功耗創(chuàng)新低!涂鴉產(chǎn)品級(jí)Zigbee 3.0<b class='flag-5'>溫濕度計(jì)</b>開(kāi)發(fā)包,開(kāi)箱即用、完全開(kāi)源

    常見(jiàn)的溫濕度傳感器類(lèi)型?

    ),溫度精度為±0.2℃(典型)。濕度和溫度數(shù)據(jù)可以通過(guò)MCU、藍(lán)牙芯片或SoC芯片通過(guò)數(shù)字接口直接讀取。它與SMBus、I2C接口兼容。非常適合用于暖通空調(diào)、環(huán)境監(jiān)測(cè)等。 在選擇溫濕度傳感器時(shí),應(yīng)根據(jù)具體的使用場(chǎng)景和需求綜合考
    發(fā)表于 06-24 09:24

    溫濕度變送器功能有哪些?一文詳細(xì)解析

    功能就是精準(zhǔn)測(cè)量環(huán)境中的溫度和濕度。它采用高精度的傳感器,能夠快速、準(zhǔn)確地感知環(huán)境溫濕度的變化,并將這些數(shù)據(jù)轉(zhuǎn)化為可識(shí)別的電信號(hào)。無(wú)論是在實(shí)驗(yàn)室、倉(cāng)庫(kù),還是在生產(chǎn)車(chē)間,都能為用戶(hù)提供可靠的溫濕
    發(fā)表于 06-03 10:56

    智能倉(cāng)儲(chǔ):溫濕度監(jiān)控方案應(yīng)用

    隨著倉(cāng)儲(chǔ)環(huán)境要求提高,溫濕度監(jiān)控對(duì)保障貨物品質(zhì)至關(guān)重要。本文介紹一個(gè)工廠(chǎng)倉(cāng)庫(kù)溫濕度監(jiān)控方案,利用溫濕度變送器、LoRa技術(shù)和智能監(jiān)測(cè)平臺(tái),為倉(cāng)庫(kù)業(yè)主提供高效、可靠的監(jiān)測(cè)解決方案。倉(cāng)庫(kù)溫濕度
    的頭像 發(fā)表于 05-29 11:35 ?792次閱讀
    智能倉(cāng)儲(chǔ):<b class='flag-5'>溫濕度</b>監(jiān)控方案應(yīng)用

    用樹(shù)莓派RP2350 DIY 桌面動(dòng)態(tài)溫濕度計(jì)

    桌面動(dòng)態(tài)溫濕度計(jì)本文介紹了DFrobotBeetleRP2350開(kāi)發(fā)板結(jié)合DHT11模塊、鋰電池模塊、隨機(jī)眨眼動(dòng)畫(huà),實(shí)現(xiàn)OLED顯示的桌面動(dòng)態(tài)溫濕度計(jì)的項(xiàng)目設(shè)計(jì)。一、項(xiàng)目介紹本項(xiàng)目包括工作原理:ADC電壓采集與電量轉(zhuǎn)換工程調(diào)試:電量獲取
    的頭像 發(fā)表于 05-27 08:05 ?923次閱讀
    用樹(shù)莓派RP2350 DIY 桌面動(dòng)態(tài)<b class='flag-5'>溫濕度計(jì)</b>

    LoRa無(wú)線(xiàn)技術(shù)的溫濕度監(jiān)測(cè)預(yù)警系統(tǒng)

    LoRa無(wú)線(xiàn)技術(shù)的溫濕度監(jiān)測(cè)預(yù)警系統(tǒng)采用LoRa采集器和LoRa網(wǎng)關(guān)實(shí)現(xiàn)監(jiān)控區(qū)域內(nèi)的全覆蓋,同時(shí)在倉(cāng)儲(chǔ)區(qū)各個(gè)數(shù)據(jù)采集節(jié)點(diǎn)安裝溫濕度傳感器,實(shí)現(xiàn)對(duì)監(jiān)測(cè)區(qū)域的溫濕度數(shù)據(jù)動(dòng)態(tài)全采集,并根據(jù)倉(cāng)
    的頭像 發(fā)表于 05-14 16:06 ?861次閱讀
    LoRa無(wú)線(xiàn)技術(shù)的<b class='flag-5'>溫濕度</b>監(jiān)測(cè)預(yù)警系統(tǒng)

    溫濕度傳感器:核心原理與跨領(lǐng)域應(yīng)用解析

    、農(nóng)業(yè)種植、醫(yī)療倉(cāng)儲(chǔ)等領(lǐng)域。根據(jù)市場(chǎng)研究機(jī)構(gòu)的數(shù)據(jù),2025 年全球溫濕度傳感器市場(chǎng)規(guī)模預(yù)計(jì)突破 50 億美元,年復(fù)合增長(zhǎng)率達(dá) 8.7%。 二、工作原理與技術(shù)分類(lèi) 溫度測(cè)量模塊 熱電偶技術(shù) :利用兩種不同金屬的熱電效應(yīng),將溫度差轉(zhuǎn)化為電
    的頭像 發(fā)表于 03-27 11:21 ?2243次閱讀
    <b class='flag-5'>溫濕度</b>傳感器:核心原理與跨領(lǐng)域應(yīng)用<b class='flag-5'>解析</b>

    制藥車(chē)間溫濕度數(shù)據(jù)采集監(jiān)控管理方案

    在制藥生產(chǎn)過(guò)程中,溫濕度對(duì)藥品質(zhì)量起著關(guān)鍵作用。不穩(wěn)定的溫濕度環(huán)境可能導(dǎo)致藥品原料變質(zhì)、藥品制劑的穩(wěn)定性下降,甚至影響藥品的療效和安全性。因此,構(gòu)建一套精準(zhǔn)、可靠的溫濕度數(shù)據(jù)采集監(jiān)控管理方案,對(duì)制藥
    的頭像 發(fā)表于 03-25 14:08 ?987次閱讀
    制藥車(chē)間<b class='flag-5'>溫濕度數(shù)據(jù)</b>采集監(jiān)控管理方案