娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月13日(星期四)

正在發生

2019年03月13日 | 技術文章—如何以最簡單的方式獲取傳感器數據?

發布者:數字夢想 關鍵字:傳感器 手機看文章 掃描二維碼
隨時隨地手機看文章


傳感器作為各個領域最重要的設備之一,產品種類之多,應用領域之廣,隨著“智能時代”的到來,傳感器的使用將發揮更加關鍵的作用。那么,要如何以最簡單,最高效的方式使用這些種類繁多,操作復雜的傳感器呢?

 

傳感器作為一種檢測裝置,它的應用早已滲透到諸如工業生產、宇宙探索、海洋探測、環境保護、資源調查、醫學診斷、生物工程、甚至文物保護等等極其之廣泛的領域。可以毫不夸張地說,從茫茫的太空,到浩瀚的海洋,以及各種復雜的工程系統,幾乎每一個現代化項目,都離不開傳感器。

 

目前,市面上已經存在大量各種類型,各種型號,不同廠家生產的各種傳感器,例如,溫度、濕度、電壓、電流、壓強、光照、加速度、角速度等等。它們的應用場景、產品參數、使用方法都不盡相同,這往往使許多項目開發人員在使用傳感器時舉步維艱:添加一個傳感器,就要編寫對應的驅動,提供一套訪問這個傳感器的接口。通常情況下,在一個復雜的系統中,傳感器往往不止一個,可能存在幾個或幾十個甚至更多不同種類的傳感器,若這些傳感器的使用接口都不相同,那么可想而知,軟件方面的工作量和復雜度又會有多大?無形中又增加了很大的開發難度。不僅如此,若基于多種傳感器開發的應用程序想跨平臺復用,而底層各個傳感器的接口卻千奇百怪,那么,這樣的工作量和復雜度又會上升到什么程度?

 

為了解決這些問題,AWorks定義了通用的傳感器接口,適用于各式各樣的傳感器,只要是掛載在AWorks系統中的傳感器,都可以通過相同的操作接口來訪問。同時,只要是基于這些通用接口開發的應用程序,都不會與具體的硬件設備綁定,換句話說,底層更換使用不同型號的傳感器,對應用程序不會造成影響,應用程序可以不做任何改動。

 

從功能上看,傳感器實現了對真實世界中某種物理信號(溫度、濕度、氣壓等)的采集,在使用傳感器時,最重要的操作就是從傳感器中獲取出相應的數據。接下來,進一步介紹如何通過接口獲取傳感器數據作。

 

1.      傳感器通道ID

 

在介紹接口的使用方法之前,需要簡單了解一個概念,AWorks之所以能夠實現使用一套相同的接口訪問所有類型的傳感器,是因為AWorks對系統中的傳感器進行了統一的管理。為了實現對各式各樣的傳感器進行統一管理,在AWorks中,定義了“傳感器通道”的抽象概念,一路傳感器通道用于完成一路物理信號的采集,系統為每個傳感器通道分配了一個唯一的ID。例如,若此時系統中存在三個傳感器,分別為溫濕度傳感器HTS221(能為系統提供一路溫度和一路濕度通道),三軸磁傳感器LIS3MDL(能位系統提供X,Y,Z軸三路磁數據通道和一路溫度通道)和光照傳感器BH1730(能為系統提供一路光照度采集通道),則對應的ID分配范例詳見表 1。

 

表 1  傳感器通道id分配

 

 

按照以上的傳感器通道ID分配方式,理論上,系統中可以掛載無數個各種類型的傳感器,新加入的傳感器通道只需按照以上方式依次向后分配ID即可。通常情況下,該ID號的分配已經由系統完成,無需我們自行分配,我們只需簡單知道當前系統中的有效ID號所對應的傳感器通道類型即可。例如,當前AWorks系統中存在的傳感器如表 1所示,有三個傳感器,ID號為0~6,下文中函數接口ID的使用將以此為例。

 

2.      獲取傳感器數據

 

基于以上對傳感器ID的描述,此時若想獲取傳感器的數據,只需在應用程序中調用獲取傳感器數據的函數接口即可,獲取傳感器數據的函數接口如下:

 

aw_err_t  aw_sensor_data_get (int id, aw_sensor_val_t *p_val);

 

其中,id即為傳感器通道ID號,p_val為存放對應ID的傳感器數據。此處aw_sensor_val_t類型為一個結構體,只需知道它是一個保存傳感器數據的變量即可。

 

基于此,獲取系統中任意傳感器通道的數據只需調用該接口即可,例如,每隔500ms獲取一次溫度采樣數據的程序范例如下:

 

1aw_sensor_val_t tem_val;

 

2while (1) {

 

3aw_sensor_data_get(0, &tem_val);  // 通道ID為0,對應表 1中的溫度采集通道

 

4aw_mdelay(500);

 

5}

 

同樣,若想獲取光照度傳感器采樣數據,程序范例如下:

 

1aw_sensor_val_t als_val;

 

2while (1) {

 

3aw_sensor_data_get(6, &als_val);  // 通道ID為6,對應表 1中的光照度采集通道

 

4aw_mdelay(500);

 

5}

 

以此類推,只需要調用這一個相同的接口,便可以依次獲取系統中所有傳感器的數據。此時,或許有人會疑問,系統中那么多傳感器,一個一個調用該接口,會不會顯得繁瑣?對于該問題,AWorks系統當然給出了答案,那就是提供同時獲取多通道或者所有通道傳感器數據的接口,該接口原型如下:

 

aw_err_t  aw_sensor_group_data_get (const int       *p_ids,

 

                                int                num,

 

                                aw_sensor_val_t *p_buf);

 

其中,p_ids為指向傳感器通道id列表的指針;num表示通道的數目,即id列表的大小;p_buf指向用于存儲各通道數據的緩存,緩存大小與num一致。基于該接口,可以同時獲取多個或所有系統中傳感器的采樣數據,例如,每隔500ms獲取當前表 1中所有的傳感器通道采樣數據的程序范例如下:

 

1const int        id_s[7] = {0, 1, 2, 3, 4, 5, 6}; // 應用程序使用7個通道

 

2aw_sensor_val_t  val_buf[7];           // 存儲7個通道數據的緩存

 

3

 

4while (1) {

 

5aw_sensor_group_data_get(id_s, 7, val_buf);      // 獲取當前系統所有傳感器通道的采樣數據

 

6aw_mdelay(500);

 

7}

 

基于此,AWorks系統的傳感器接口已經完美的實現了使用同種接口獲取所有傳感器采樣數據的功能。此時,或許有人又會提出疑問,這兩個接口采用的似乎都是輪詢的方式獲取傳感器數據,若在效率要求較高的場合,調用該接口是不是不太好呢?再者說,如今的許多傳感器都可以采用中斷觸發的方式獲取數據,這樣可以大大提高應用程序的效率,那么能不能實現這種功能呢?當然!AWorks同樣提供了這種接口,而且接口的調用非常方便,簡潔。接下來將為你一一揭秘。

 

3.      觸發方式獲取傳感器數據

 

如今大多數傳感器內部都支持了通過中斷觸發的方式通知應用程序獲取傳感器數據的功能,應用程序只需檢測觸發類型做相應的處理即可,這樣大大提高了應用程序的執行效率,避免了以查詢這種耗時的方式主動獲取傳感器數據的操作。

 

傳感器具有的觸發方式一般由傳感器本身決定。例如,溫濕度傳感器HTS221具有的可配置觸發方式只有數據準備就緒觸發;三軸磁傳感器LIS3MDL具有的可配置觸發方式有數據準備就緒觸發和上下門限值觸發。接下來將只以數據準備就緒觸發方式,講解如何高效的獲取傳感器數據。

 

在AWorks中,要實現通過觸發方式獲取傳感器通道數據,只需要兩步操作即可,第一步是配置傳感器通道的觸發回調函數,第二步則是打開該通道的觸發。

 

首先,配置傳感器通道觸發模式的函數原型如下:

 

aw_err_t aw_sensor_trigger_cfg (int                   id,

 

uint32_t               flags,

 

                           aw_sensor_trigger_cb_t  pfn_cb,

 

                           void                 *p_arg);

 

其中,id為傳感器通道的編號,flags參數為配置的觸發模式對應的宏(此處只以數據準備就緒觸發舉例,其所對應的宏在AWorks中定義為AW_SENSOR_TRIGGER_DATA_READY,直接傳入即可),pfn_cb為觸發回調函數,p_arg為用戶觸發回調函數參數。觸發回調函數的類型為aw_sensor_trigger_cb_t,定義如下:

 

typedef void (*aw_sensor_trigger_cb_t) (void *p_arg, uint32_t trigger_src);

 

其中,p_arg為用戶觸發回調函數參數,trigger_src為存放的觸發類型。例如,此時要配置三軸磁傳感器LIS3MDL的X軸采集通道(表 1通道2)的數據準備就緒觸發,程序范例如下:

 

1/* 定義一個回調函數,用于當觸發事件產生時,該函數被調用 */

 

2static void __pfn_trigger_callback (void *p_arg, uint32_t trigger_src)

 

3{

 

4    /* 數據準備就緒觸發*/

 

5if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

 

6aw_sensor_data_get(2, &data_val);   // 觸發方式獲取該通道的采樣數據

 

7   }

 

8}

 

9aw_sensor_trigger_cfg( 2,

 

10                      AW_SENSOR_TRIGGER_DATA_READY,

 

11                   __pfn_trigger_callback,

 

12                   NULL);               // 配置通道2的數據準備就緒觸發

 

當以上程序完成通道的觸發方式的配置后,接下來,只需打開該通道的觸發即可,該函數接口的定義如下:

 

aw_err_t aw_sensor_trigger_on (int id);

 

該函數接口只需傳入id即可。注意,aw_sensor_trigger_on函數接口必須在aw_sensor_trigger_cfg接口之后調用,先后順序不能顛倒。此時,要通過觸發方式獲取三軸磁傳感器LIS3MDL的X軸采集數據的完整程序范例如下:

 

1aw_sensor_val_t data_val;     // 定義傳感器數據緩存區

 

2

 

3/* 定義一個回調函數,用于當觸發事件產生時,該函數被調用 */

 

4static void __pfn_trigger_callback (void *p_arg, uint32_t trigger_src)

 

5{

 

6    /* 數據準備就緒觸發*/

 

7if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

 

8aw_sensor_data_get(2, &data_val);   // 觸發方式獲取該通道的采樣數據

 

9   }

 

10}

 

11

 

12int mian()

 

13{

 

14aw_sensor_trigger_cfg(2,

 

15                      AW_SENSOR_TRIGGER_DATA_READY,

 

16                  __pfn_trigger_callback,

 

17    NULL);   

 

18aw_sensor_trigger_on (2);

 

19while (1) {

 

20aw_mdelay(1000);

 

21}

 

22}

 

通過以上的接口,完美的實現了一種接口訪問所有傳感器數據的功能,并且這些接口可以在任何運行AWorks操作系統的平臺上使用,且無論平臺中的傳感器類型和數目如何變化,只需要知道該平臺傳感器通道的ID信息,則都可以使用這些通用接口來進行訪問。只要是基于該通用接口開發的應用程序,只要是在AWorks系統中,應用程序能實現“零”修改的移植。在軟件意義上,真正實現了“一次編程、終生使用、跨平臺”的歷史難題。

 

4.      總結

 

AWorks是ZLG歷時12年開發的下一代開源嵌入式開發平臺,將MCU和OS的共性高度抽象為統一接口,支持平臺組件“可插拔、可替換、可配置”,與硬件無關、與操作系統種類無關的方式設計,用戶只需修改相應的頭文件,即可實現“一次編程、終生使用、跨平臺”。

 

并且ZLG推出了一系列搭載AWorks操作系統的Cortex-M0/3/4/7、Coterx-A7/8/9、ARM7/9、DSP等常用內核的核心板。使用這些核心板,即可在AWorks平臺上快速完成產品開發。

 

 


關鍵字:傳感器 引用地址:技術文章—如何以最簡單的方式獲取傳感器數據?

上一篇:安森美半導體助力奧斯卡小金人更璀璨
下一篇:TE Connectivity推出M8/M12 傳感器線束和全新 I/O 電纜組件

推薦閱讀

  2017年,伴隨著3C行業機器換人的快速發展,輕工業機器人,尤其是協作機器人呈現高速增長態勢。據GGII數據統計,2016年中國市場協作機器人銷量2300臺,同比增長109.09%,GGII預計2017年中國協作機器人市場需求仍將高速增長,銷量有望突破4000臺。下面就隨工業控制小編一起來了解一下相關內容吧。 中國制造智能協作機器人呈現高速增長態勢  伴隨著市場...
意法半導體(ST)近日推出LPS33W防水型MEMS壓力傳感器結合了化學兼容性、穩定性和準確性,可用于各種應用,如健身應用或其他可穿戴設備,真空吸塵器和通用工業傳感等。IPx8級LPS33W由圓柱形金屬封裝內的粘性灌封膠保護,可承受鹽水,氯,溴,洗手液,洗發水,電子液體和輕工業化學品(如正戊烷)等洗滌劑。封裝蓋提供高耐腐蝕性,圓柱形外形易于在需要密封...
—專訪北京領邦智能裝備股份公司總經理崔忠偉博士 2003年非典后,紅外測溫技術一時成為熱點,但面對突發新型冠狀病毒疫情,紅外測溫技術卻顯得力不從心。傳統紅外測溫技術無法提取人體額頭溫度,市場通常的做法是只把目標對象中體溫最高的發熱人員顯示出來,這存在重大技術漏洞,漏查情況時有出現。同時,黑體作為紅外測溫的參照物,會受環境溫度影響需要...
據國家能源局3月12日消息,針對“《能源技術創新“十四五”規劃》何時發布的相關問題”的留言,國家能源局回應稱,國家能源局正在組織研究編制《能源技術創新“十四五”規劃》(以下簡稱《規劃》),支撐能源領域重大技術裝備創新發展。 《規劃》的主要思路是聚焦保障能源安全、促進能源轉型和引領能源革命等重大需求,以實現能源科技自立自強為目標,...

史海拾趣

問答坊 | AI 解惑

電子元器件基礎知識——集成電路

集成電路是一種采用特殊工藝,將晶體管、電阻、電容等元件集成在硅基片上而形成的具有一定功能的器件,英文為縮寫為IC,也俗稱芯片。集成電路是六十年代出現的,當時只集成了十幾個元器件。 后來集成度越來越高,也有了今天的P-III。 集成電路根 ...…

查看全部問答∨

面試時求完美還是求真實?

現在都大家都在找工作,找工作就面臨著要面試,你面試時是追求完美還是真實性呢?…

查看全部問答∨

“贏在中國”點評人給80后年輕人的30個忠告

1、一個年輕人,如果三年的時間里,沒有任何想法,他這一生,就基本這個樣子,沒有多大改變了。 2、成功者就是膽識加魄力,曾經在火車上聽人談起過溫州人的成功,說了這么三個字,“膽子大”。這其實,就是膽識,而拿得起,放得下,就是魄力。 ...…

查看全部問答∨

每日無線詞匯----射線跟蹤模型 Ray Tracing Model(zt)

類比:每天有成千上萬的人從北京出發去往全國各地,假若現在想知道每天有多少乘客從北京出發到上海。理論上我們只要把每天從北京到上海所有可能的交通工具包括飛機、火車、汽車所能運輸的人加起來便可以了。但是你有可能少考慮一部分人,他們可能跑 ...…

查看全部問答∨

作過vxworks+powerpc平臺上中斷開發熟悉SIPNR_L寄存器的高手請進

小弟在MPC8260上做I2C controller 的驅動開發,在中斷回調函數中對SIPNR_L寄存器的值的I2C位進行判斷,居然發現有時會出現SIPNR_L的值為0. 按道理說,只有當發生了對應的I2C中斷,這個中斷回調函數才可能被調用,此時SIPNR寄存器中I2C的標志位應該被置1 ...…

查看全部問答∨

關于電容的一些問題.

請問一個6.3v 1600UF的電容能不能用6.3v 1800UF的代用。還有可不可以用同伏UF還要大些的借用?…

查看全部問答∨

上班的那點事2

工作中,方案的選定總不是那么完美,所以上班都免不了開會來解決諸如此類的問題; 如:LED T8燈管有長的120cm,也有短的60cm;為了方便庫存,設計的時候 鋁基板只設計成60公分的那一款,并用2塊60公分的鋁基板拼接成120公分的,同時共用; 但是 ...…

查看全部問答∨

指示表全自動檢定儀會用到MSP430的那一款單片機呀

各位大俠 ,有誰知道指示表全自動檢定儀會用到MSP430的那一款單片機呀?   有知道的請聯系我0755-28168418  QQ:754181079…

查看全部問答∨

LM3S—LCD

LM3S—LCDLM3S—LCD…

查看全部問答∨
小廣播
最新傳感器文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 南投县| 普兰县| 镇康县| 曲靖市| 广元市| 盐源县| 桑日县| 鲁山县| 且末县| 竹北市| 兴和县| 新野县| 汝南县| 唐河县| 嘉鱼县| 满城县| 松桃| 肃南| 宕昌县| 和政县| 成武县| 淅川县| 松原市| 左权县| 邯郸县| 巴马| 闽清县| 东港市| 赞皇县| 汽车| 民丰县| 仪陇县| 沂南县| 巴彦淖尔市| 隆德县| 巴塘县| 将乐县| 三江| 株洲市| 喀喇沁旗| 莫力|