日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀]傳感器作為各個(gè)領(lǐng)域最重要的設(shè)備之一,產(chǎn)品種類之多,應(yīng)用領(lǐng)域之廣,隨著“智能時(shí)代”的到來,傳感器的使用將發(fā)揮更加關(guān)鍵的作用。那么,要如何以最簡(jiǎn)單,最高效的方式使用這些種類繁多,操作復(fù)雜的傳感器呢?

傳感器作為各個(gè)領(lǐng)域最重要的設(shè)備之一,產(chǎn)品種類之多,應(yīng)用領(lǐng)域之廣,隨著“智能時(shí)代”的到來,傳感器的使用將發(fā)揮更加關(guān)鍵的作用。那么,要如何以最簡(jiǎn)單,最高效的方式使用這些種類繁多,操作復(fù)雜的傳感器呢?

傳感器作為一種檢測(cè)裝置,它的應(yīng)用早已滲透到諸如工業(yè)生產(chǎn)、宇宙探索、海洋探測(cè)、環(huán)境保護(hù)、資源調(diào)查、醫(yī)學(xué)診斷、生物工程、甚至文物保護(hù)等等極其之廣泛的領(lǐng)域??梢院敛豢鋸埖卣f,從茫茫的太空,到浩瀚的海洋,以及各種復(fù)雜的工程系統(tǒng),幾乎每一個(gè)現(xiàn)代化項(xiàng)目,都離不開傳感器。

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

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

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

1.傳感器通道ID

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

表 1 傳感器通道id分配

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

2.獲取傳感器數(shù)據(jù)

基于以上對(duì)傳感器ID的描述,此時(shí)若想獲取傳感器的數(shù)據(jù),只需在應(yīng)用程序中調(diào)用獲取傳感器數(shù)據(jù)的函數(shù)接口即可,獲取傳感器數(shù)據(jù)的函數(shù)接口如下:

aw_err_t aw_sensor_data_get (int id, aw_sensor_val_t *p_val);

其中,id即為傳感器通道ID號(hào),p_val為存放對(duì)應(yīng)ID的傳感器數(shù)據(jù)。此處aw_sensor_val_t類型為一個(gè)結(jié)構(gòu)體,只需知道它是一個(gè)保存?zhèn)鞲衅鲾?shù)據(jù)的變量即可。

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

1 aw_sensor_val_t tem_val;

2 while (1) {

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

4 aw_mdelay(500);

5 }

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

1 aw_sensor_val_t als_val;

2 while (1) {

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

4 aw_mdelay(500);

5 }

以此類推,只需要調(diào)用這一個(gè)相同的接口,便可以依次獲取系統(tǒng)中所有傳感器的數(shù)據(jù)。此時(shí),或許有人會(huì)疑問,系統(tǒng)中那么多傳感器,一個(gè)一個(gè)調(diào)用該接口,會(huì)不會(huì)顯得繁瑣?對(duì)于該問題,AWorks系統(tǒng)當(dāng)然給出了答案,那就是提供同時(shí)獲取多通道或者所有通道傳感器數(shù)據(jù)的接口,該接口原型如下:

aw_err_t aw_sensor_group_data_get (const int *p_ids,

int num,

aw_sensor_val_t *p_buf);

其中,p_ids為指向傳感器通道id列表的指針;num表示通道的數(shù)目,即id列表的大小;p_buf指向用于存儲(chǔ)各通道數(shù)據(jù)的緩存,緩存大小與num一致?;谠摻涌冢梢酝瑫r(shí)獲取多個(gè)或所有系統(tǒng)中傳感器的采樣數(shù)據(jù),例如,每隔500ms獲取當(dāng)前表 1中所有的傳感器通道采樣數(shù)據(jù)的程序范例如下:

1 const int id_s[7] = {0, 1, 2, 3, 4, 5, 6}; // 應(yīng)用程序使用7個(gè)通道

2 aw_sensor_val_t val_buf[7]; // 存儲(chǔ)7個(gè)通道數(shù)據(jù)的緩存

3

4 while (1) {

5 aw_sensor_group_data_get(id_s, 7, val_buf); // 獲取當(dāng)前系統(tǒng)所有傳感器通道的采樣數(shù)據(jù)

6 aw_mdelay(500);

7 }

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

3.觸發(fā)方式獲取傳感器數(shù)據(jù)

如今大多數(shù)傳感器內(nèi)部都支持了通過中斷觸發(fā)的方式通知應(yīng)用程序獲取傳感器數(shù)據(jù)的功能,應(yīng)用程序只需檢測(cè)觸發(fā)類型做相應(yīng)的處理即可,這樣大大提高了應(yīng)用程序的執(zhí)行效率,避免了以查詢這種耗時(shí)的方式主動(dòng)獲取傳感器數(shù)據(jù)的操作。

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

在AWorks中,要實(shí)現(xiàn)通過觸發(fā)方式獲取傳感器通道數(shù)據(jù),只需要兩步操作即可,第一步是配置傳感器通道的觸發(fā)回調(diào)函數(shù),第二步則是打開該通道的觸發(fā)。

首先,配置傳感器通道觸發(fā)模式的函數(shù)原型如下:

aw_err_t aw_sensor_trigger_cfg (int id,

uint32_t flags,

aw_sensor_trigger_cb_t pfn_cb,

void *p_arg);

其中,id為傳感器通道的編號(hào),flags參數(shù)為配置的觸發(fā)模式對(duì)應(yīng)的宏(此處只以數(shù)據(jù)準(zhǔn)備就緒觸發(fā)舉例,其所對(duì)應(yīng)的宏在AWorks中定義為AW_SENSOR_TRIGGER_DATA_READY,直接傳入即可),pfn_cb為觸發(fā)回調(diào)函數(shù),p_arg為用戶觸發(fā)回調(diào)函數(shù)參數(shù)。觸發(fā)回調(diào)函數(shù)的類型為aw_sensor_trigger_cb_t,定義如下:

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

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

1 /* 定義一個(gè)回調(diào)函數(shù),用于當(dāng)觸發(fā)事件產(chǎn)生時(shí),該函數(shù)被調(diào)用 */

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

3 {

4 /* 數(shù)據(jù)準(zhǔn)備就緒觸發(fā)*/

5 if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

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

7 }

8 }

9 aw_sensor_trigger_cfg( 2,

10 AW_SENSOR_TRIGGER_DATA_READY,

11 __pfn_trigger_callback,

12 NULL); // 配置通道2的數(shù)據(jù)準(zhǔn)備就緒觸發(fā)

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

aw_err_t aw_sensor_trigger_on (int id);

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

1 aw_sensor_val_t data_val; // 定義傳感器數(shù)據(jù)緩存區(qū)

2

3 /* 定義一個(gè)回調(diào)函數(shù),用于當(dāng)觸發(fā)事件產(chǎn)生時(shí),該函數(shù)被調(diào)用 */

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

5 {

6 /* 數(shù)據(jù)準(zhǔn)備就緒觸發(fā)*/

7 if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

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

9 }

10 }

11

12 int mian()

13 {

14 aw_sensor_trigger_cfg(2,

15 AW_SENSOR_TRIGGER_DATA_READY,

16 __pfn_trigger_callback,

17 NULL);

18 aw_sensor_trigger_on (2);

19 while (1) {

20 aw_mdelay(1000);

21 }

22 }

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

4.總結(jié)

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

中國 上海,2025年9月10日——全球領(lǐng)先的光學(xué)解決方案供應(yīng)商艾邁斯歐司朗(SIX:AMS)今日亮相第二十六屆中國國際光電博覽會(huì)(CIOE 2025),發(fā)布其最新的直接飛行時(shí)間(dToF)傳感器TMF8829。同時(shí),艾...

關(guān)鍵字: 傳感器 3D掃描儀 消費(fèi)電子

隨著汽車電子設(shè)備日益復(fù)雜,車企對(duì)體積緊湊、高能效、可靠的解決方案的需求不斷增長(zhǎng),多輸出功率開關(guān)在集成度、成本效益、故障診斷和能效方面優(yōu)勢(shì)愈發(fā)明顯?,F(xiàn)代汽車工業(yè)越來越依賴眾多的低功率電子模塊,例如,傳感器、LED和繼電器。...

關(guān)鍵字: 功率開關(guān) 電源管理 傳感器

2025年9月4日 – 專注于引入新品的全球電子元器件和工業(yè)自動(dòng)化產(chǎn)品授權(quán)代理商貿(mào)澤電子 (Mouser Electronics) 宣布與電子元器件制造商、連接器領(lǐng)域創(chuàng)新企業(yè)Molex合作推出全新互動(dòng)電子書《The El...

關(guān)鍵字: 機(jī)器人 連接器 傳感器

面對(duì)市場(chǎng)對(duì)更智能產(chǎn)品、更短設(shè)計(jì)周期以及更高效靈活生產(chǎn)流程的需求日益增長(zhǎng),設(shè)計(jì)與制造企業(yè)紛紛借助人工智能,推動(dòng)業(yè)務(wù)流程邁向新高度。憑借處理復(fù)雜數(shù)據(jù)的卓越能力與傳遞智能洞見的便捷性,人工智能已準(zhǔn)備好在工業(yè)價(jià)值鏈的各個(gè)環(huán)節(jié)承擔(dān)...

關(guān)鍵字: 人工智能 工業(yè)物聯(lián)網(wǎng) 傳感器

傳感器模塊能實(shí)現(xiàn)便捷無接觸的后備箱或側(cè)滑門開啟,適配各種車輛架構(gòu) 該24 GHz雷達(dá)傳感器可集成于保險(xiǎn)杠或底盤上,并通過特定的手勢(shì)或腳部動(dòng)作觸發(fā)響應(yīng) 已為多家歐洲主流車企啟動(dòng)量產(chǎn)交付 德國布爾2025...

關(guān)鍵字: 傳感器 BSP 觸發(fā) 保險(xiǎn)杠

提升工業(yè)系統(tǒng)智能化的方法有多種,其中包括將邊緣和云端人工智能(AI)技術(shù)應(yīng)用于配備模擬和數(shù)字器件的傳感器。鑒于AI技術(shù)方法的多樣性,傳感器設(shè)計(jì)人員需要考慮多個(gè)相互沖突的要求,包括決策延遲、網(wǎng)絡(luò)使用、功耗/電池壽命以及適合...

關(guān)鍵字: 人工智能 傳感器 AI

不久前,作為行業(yè)領(lǐng)先的傳感器和電源解決方案的領(lǐng)導(dǎo)者之一——Allegro攜手合作伙伴成功舉辦《Allegro高速電機(jī)位置檢測(cè)解決方案,賦能未來智能驅(qū)動(dòng)》線上技術(shù)研討會(huì)?;谠诖艂鞲蓄I(lǐng)域的技術(shù)積淀與持續(xù)創(chuàng)新,Allegro...

關(guān)鍵字: 傳感器 汽車電子

現(xiàn)已推出評(píng)估套件、軟件和文檔,可幫助可穿戴設(shè)備和醫(yī)療保健領(lǐng)域的開發(fā)人員優(yōu)化電源管理

關(guān)鍵字: 電池 電量計(jì) 傳感器

【2025年8月26日,德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)宣布攜手NVIDIA Technology(簡(jiǎn)稱:NVIDIA 英偉達(dá),...

關(guān)鍵字: 機(jī)器人 傳感器 智能執(zhí)行器

Puttshack 的 Trackaball 以 Nordic nRF54L15 系統(tǒng)級(jí)芯片 (SoC) 監(jiān)控傳感器并實(shí)現(xiàn)低功耗藍(lán)牙連接,并以nPM2100 電源管理集成電路(PMIC)節(jié)省耗電

關(guān)鍵字: SoC 傳感器 集成電路
關(guān)閉