基於I2C的溫濕度採集

2021-10-12 12:57:57 字數 2322 閱讀 7627

二、aht20溫濕度感測器的資料採集

實驗要求:

學習i2c匯流排通訊協議,完成基於i2c硬體協議的aht20溫濕度感測器的資料採集,並將採集的溫度-濕度值通過串列埠輸出。具體任務:

1)解釋什麼是「軟體i2c」和「硬體i2c」? (閱讀野火配套教材的第4章「i2c–讀寫eeprom」原理章節)

i2c 通訊協議(inter-integrated circuit)是由 phiilps 公司開發的,由於它引腳少,硬體實現簡單,可擴充套件性強,不需要usart、can 等通訊協議的外部收發裝置,現在被廣泛 地使用在系統內多個積體電路(ic)間的通訊。在電腦科學裡,大部分複雜的問題都可以通過分層來簡化。如晶元被分為核心層和 片上外設;stm32標準庫則是在暫存器與使用者**之間的軟體層。對於通訊協議,我們也以分層的方式來理解,最基本的是把它分為物理層和協議層。物理層規定通訊系統中具有 機械、電子功能部分的特性,確保原始資料在物理**的傳輸。協議層主要規定通訊邏輯, 統一收發雙方的資料打包、解包標準。簡單來說物理層規定我們用嘴巴還是用肢體來交流, 協議層則規定我們用中文還是英文來交流。

i2c 匯流排只有乙個工作模式,時鐘線 scl 和資料線 sda 之間的時序關係很簡單直觀:當空閒的時候,sda 和 scl 都是高電平,只有 sda 變為低電平,接著 scl 也變為低電平時,才開始 i2c 匯流排的資料傳輸。當 sda 和 scl 都變為低電平時,就是告訴匯流排上的所有接收裝置資料報的傳輸開始了,在 scl 變為低電平後,sda 才傳送第乙個有效資料位,這稱為開始條件。對於被傳輸的每一位,當 scl 為低電平時在 sda 上必須變為有效,該位是在 scl 的上公升沿對 sda 上的資料位進行取樣的,也必須一直保持有效直到 scl 再次變為低電平,然後 sda 就在 scl 再次變為高電平之前傳輸下一位。最後,scl 變為高電平,接著 sda 也變為高電平,資料傳輸結束。這被稱為結束條件。

具體工作原理參考

**i2c匯流排

野火提供的資料《零死角玩轉stm32—f103指南者》第24章i2c–讀寫eeprom。

硬體i2c:對應晶元上的i2c外設,有相應i2c驅動電路,其所使用的i2c管腳也是專用的,因而效率要遠高於軟體模擬的i2c;一般也較為穩定,但是程式較為繁瑣。硬體i2c是直接呼叫內部暫存器進行配置;而軟體i2c是沒有暫存器這個概念的。

軟體i2c:一般是使用gpio管腳,用軟體控制scl,sda線輸出高低電平,模擬i2c協議的時序。

主要對比:

1.硬體i2c用法比較複雜,模擬iic的流程更清楚一些。

2.硬體i2c速度比模擬快,並且可以用dma

3.模擬i2c可以在任何管腳上,而硬體只能在固定管腳上0

軟體i2c是程式設計師使用程式控制scl,sda線輸出高低電平,模擬i2c協議的時序。一般較硬體i2c穩定,但是程式較為繁瑣,但不難。

硬體i2c程式設計師只要呼叫i2c的控制函式即可,不用直接的去控制scl,sda高低電平的輸出。但是有些微控制器的硬體i2c不太穩定,除錯問題較多。

使用器件:野火核心板stm32f103指南者

所需**檔案:

#include

"delay.h"

#include

"temhum.h"

#include

"sys.h"

#include

"usart.h"

intmain

(void);

volatile

float hum=

0,tem=0;

delay_init()

;//延時函式初始化

nvic_prioritygroupconfig

(nvic_prioritygroup_2)

;//設定nvic中斷分組2:2位搶占優先順序,2位響應優先順序

uart_init

(115200);

//串列埠初始化為115200

temphum_init()

;//ath20初始化

while(1

)}

aht20晶元連線在stm32指南者開發板對應板塊上,aht20上的scl端、sda端、vcc端、gnd端分別對應接b6、b7、3v3、gnd。

將hex檔案燒錄

最終結果

開啟 串列埠除錯助手在途中對aht20晶元哈氣後溫度明顯上公升

基於I2C的溫濕度採集

實驗要求 一 解釋 軟體i2c 和 硬體i2c 二 程式設計實現溫濕度採集 三 結果 學習i2c匯流排通訊協議,完成基於i2c硬體協議的aht20溫濕度感測器的資料採集,並將採集的溫度 濕度值通過串列埠輸出。具體任務 1 解釋什麼是 軟體i2c 和 硬體i2c 閱讀野火配套教材的第23章 i2c 讀...

基於IIC實現溫濕度採集

2 aht20溫濕度感測器 3 實現溫濕度採集 4 總結 iic inter integrated circuit 其實是iicbus簡稱,所以中文應該叫積體電路匯流排,它是一種序列通訊匯流排,使用多主從架構,速率較低。iic就是i2c正確讀法為 i平方c 其有兩個物理介面分別為scl和sda sc...

基於STM32,AHT20溫濕度採集

總結學習i2c匯流排通訊協議,完成基於i2c硬體協議的aht20溫濕度感測器的資料採集,並將採集的溫度 濕度值通過串列埠輸出。具體任務 1 解釋什麼是 軟體i2c 和 硬體i2c 閱讀野火配套教材的第23章 i2c 讀寫eeprom 原理章節 2 閱讀aht20資料手冊,程式設計實現 每隔2秒鐘採集...