傳感器應用廣泛種類繁多,能快速配置好傳感器并加以使用無疑會幫助產(chǎn)品開發(fā)節(jié)省很多時間,在AMetal中,我們將配置傳感器壓縮成三步,每一步僅一個函數(shù),幫助工程師快速實現(xiàn)傳感器使用,本文作詳細介紹。
人們?yōu)榱藦耐饨绔@取信息,必須借助于感覺器官,而對于電子產(chǎn)品而言,傳感器就是它們的“感覺器官”。由于傳感器的種類繁多,通訊方式也不盡相同,我們使用傳感器時,必須閱讀相關的手冊,以獲取它的通訊方式、相關的寄存器地址以及其對應的描述;配置使用一個傳感器,基本上一大半的時間都停留在手冊上,這對于產(chǎn)品競爭愈演愈烈的時代來說,無疑有些拖后腿。
AMetal傳感器框架應運而生!它可以讓你在配置傳感器時,告別傳感器的手冊!
本次介紹所使用的傳感器為:HTS221。HTS221是一款測量相對濕度和溫度的超緊湊型傳感器,可用I2C、SPI兩種通訊協(xié)議。它包括一個傳感元件和一個混合信號ASIC,通過數(shù)字串行接口傳輸測量信息。傳感元件由能夠檢測相對濕度變化的電容器組成,并使用專用ST工藝制造。HTS221采用HLGA封裝,如圖1所示。
圖1 HTS221封裝
HTS221提供一個DRDY引腳,該引腳輸出數(shù)據(jù)就緒信號,可配置成中斷接收數(shù)據(jù),連接方式詳見圖2。
圖2 HTS221應用電路
硬件上本次采用ZLG116N32A,使用I2C接口與HTS221通訊,該芯片為Cortex-M0內(nèi)核,具有64KB Flash/8K SRAM ,運行主頻達48MHz,支持寬電壓輸入(2.0~5.5V),支持多路UART、SPI、I2C等外設接口,性價比相當高。
ZLG116的I2C引腳SCL為PB6、SDA為PB7,將這兩個引腳連接到傳感器,并將DRDY連接至PIOB_0,搭建好硬件電路;我們開始分三步搞定這個傳感器。
步驟1
初始化傳感器
在AMetal中,初始化一個外設后,基本都會得到一個返回值:“handle”,這個handle中包含了該外設所有的配置信息、操作函數(shù)以及當前狀態(tài)。
初始化HTS221的函數(shù)及內(nèi)容為:
__g_hts221_dev為HTS221設備結構體;
__g_hts221_info為描述了與HTS221傳感器相關信息的結構體;結構體中僅有HTS221的DRDY引腳和HTS221的I2C從機地址:
如果客戶在硬件連接上有不一致的地方,直接在此結構體中修改即可。
最后一個傳入參數(shù):I2C標準服務句柄;ZLG116的I2C初始化服務函數(shù)為am_zlg116_i2c1_inst_init(),此函數(shù)的返回值即為I2C標準服務句柄,所以在此處直接調(diào)用此函數(shù)即可。
在硬件連接一致的情況下,可直接調(diào)用HTS221初始化函數(shù)完成傳感器的初始化:
am_sensor_handle_t hts221_handle = am_sensor_hts221_inst_init (void);
步驟2
使能傳感器的通道
某些傳感器都具有兩個或兩個以上的采集功能,本次采用的HTS221就支持溫度與濕度的采集。
在AMetal中,將每個功能劃分為對應的通道;HTS221是溫濕度傳感器,它有兩個通道,詳見圖3。
圖3 HTS221提供的通道
在使能通道前,應該定義兩個數(shù)組,一個列舉該傳感器所有的通道,另一個用于儲存兩個通道數(shù)據(jù)的緩存:
然后就可以調(diào)用am_sensor_enable使能傳感器的通道了,該函數(shù)有四個傳入?yún)?shù),詳見圖4。
圖4 使能傳感器通道的函數(shù)傳入?yún)?shù)
根據(jù)之前的代碼,使能傳感器通道的函數(shù)為:
步驟3
獲取傳感器的采樣數(shù)據(jù)
從傳感器指定通道獲取采樣數(shù)據(jù)的函數(shù)為am_sensor_data_get,它的傳入?yún)?shù)應與使能傳感器通道的傳入?yún)?shù)一致:
在調(diào)用這個函數(shù)后,傳感器的采樣數(shù)據(jù)就保存在結構體data中,結構體data的成員函數(shù)詳見圖5,也就是說,我們從傳感器獲取的采樣數(shù)據(jù)是帶有單位的,客戶只管使用,不用去翻閱手冊獲取數(shù)據(jù)的單位。
圖5 am_sensor_val_t結構體說明
最后AMetal中還提供了單位轉換函數(shù):am_sensor_val_unit_convert,該函數(shù)有三個傳入?yún)?shù),詳見圖6。
圖6 單位轉換函數(shù)傳入?yún)?shù)
其中目標單位支持10-24~1024,基本以103為間隔,部分目標單位如圖7所示。
圖7 部分目標單位宏說明
三步都已介紹完,我們看一下在AMetal中使用傳感器的完整的代碼:
可以看到在AMetal中使用傳感器所需要寫的代碼是非常非常少的,而且在配置過程中基本可以告別手冊,客戶只需要做“選擇題”,選擇需要測試的通道就可以了。
-
傳感器
+關注
關注
2552文章
51217瀏覽量
754606 -
函數(shù)
+關注
關注
3文章
4338瀏覽量
62739
原文標題:AMetal助你三步搞定傳感器
文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論