i2c通訊協議(inter—integrated circuit)是由philps公司開發的,由於它引腳少,硬體實現簡單,可擴充套件性強,不需要usart、can等通訊協議的外部收發裝置,現在被廣泛地使用在系統內多個積體電路(ic)間的通訊。
在電腦科學裡,大部分複雜的問題都可以通過分層來簡化。如晶元被分為核心層和片上外設;stm32標準庫則是在暫存器與使用者**之間的軟體層。對於通訊協議,我們也以分層的方式來理解,最基本的是把它分為物理層和協議層。物理層規定通訊系統中具有機械、電子功能部分的特性,確保原始資料在物理**的傳輸。協議層主要規定通訊邏輯,統一收發雙方的資料打包、解包標準。簡單來說物理層規定我們用嘴巴還是用肢體來交流,協議層則規定我們用中文還是英文來交流。
硬體iic:硬體i2c對應晶元上的i2c外設,有相應i2c驅動電路,其所使用的i2c管腳也是專用的
軟體iic:軟體i2c一般是用gpio管腳,用軟體控制管腳狀態以模擬i2c通訊波形
區別在於,硬體iic用法比較複雜,模擬iic的流程更清楚一些;且硬體iic速度比模擬快;但模擬iic可以在任何管腳上,而硬體只能在固定管腳上
1、編寫主函式
(1)檢測aht20是否採集到資料,如果採到就處理資料
(2)根據如下兩個公式
c1 = aht20.ht[0]10010/1024/1024; //濕度
t1 = aht20.ht[1]20010/1024/1024-500;//溫度計算公式
來計算得出溫度。
(3)通過指示燈翻轉標識正常工作
(4)aht20函式中,有定義結構體,根據結構體來得到相關值
main函式如下
#include
"stm32f10x.h"
#include
"stm32f10x_usart.h"
#include
"misc.h"
#include
"stdio.h"
#include
"delay.h"
#include
"bsp_i2c.h"
#include
"ath20.h"
void
rcc_configuration
(void);
void
gpio_configuration
(void);
gpio_inittypedef gpio_initstructure;
#pragma import(__use_no_semihosting)
struct __file
;file __stdout;
_sys_exit
(int x)
intfputc
(int ch, file *f)
void
uart_init
(u32 bound)
intmain
(void
)while(1
)ath20_read_ctdata
(ct_data)
;//¶áè¡îâ¶èºíꪶè
c1 = ct_data[0]
*1000
/1024
/1024
; t1 = ct_data[1]
*200*10
/1024
/1024
-500
;printf
("aht20îâꪶè¶áè¡êµñé:\n");
printf
("îâ¶è: %d.%d ¡æ\n"
,(t1/10)
,(t1%10)
);printf
("ꪶè: %d.%d %%\n"
,(c1/10)
,(c1%10)
);printf
("\n\n");
softdelay_ms
(1000);
//㿸ôá½ãë¶áò»´îêý}}
void
rcc_configuration
(void
)void
gpio_configuration
(void
)
然後燒入程式,結果如下
溫濕度感測器採集
軟體 keil firetool助手 硬體 stm32核心板,溫濕度感測器,st link燒錄器,ttl轉usb模組 首先保證程式編譯通過,電腦連線stm32核心板 核心板連線溫濕度感測器 st link燒錄器 ttl轉usb模組 預設電腦已安裝st link驅動 設定keil相關引數,參考 最後燒...
溫濕度感測器採集
硬體i2c 對應晶元上的i2c外設,有相應的i2c驅動電路,其所使用的i2c管腳也是專用的,因而效率要遠高於軟體模擬的i2c 一般也較為穩定,但是程式較為繁瑣。硬體i2c是直接呼叫內部暫存器進行配置 而軟體i2c是沒有暫存器這個概念的。軟體i2c 一般是使用gpio管腳,用軟體控制scl,sda線輸...
溫濕度感測器採集
1 什麼是i2c協議 i2c 通訊協議 inter integrated circuit 是由 phiilps 公司開發的,由於它引腳少,硬體實現簡單,可擴充套件性強,不需要 usart can 等通訊協議的外部收發裝置,現在被廣泛地使用在系統內多個積體電路 ic 間的通訊。2 i2c 協議的物理層...