3、觸發方式獲取傳感器數據
如今大多數傳感器內部都支持了通過中斷觸發的方式通知應用程序獲取傳感器數據的功能,應用程序只需檢測觸發類型做相應的處理即可,這樣大大提高了應用程序的執行效率,避免了以查詢這種耗時的方式主動獲取傳感器數據的操作。
傳感器具有的觸發方式一般由傳感器本身決定。例如,溫濕度傳感器HTS221具有的可配置觸發方式只有數據準備就緒觸發;三軸磁傳感器LIS3MDL具有的可配置觸發方式有數據準備就緒觸發和上下門限值觸發。接下來將只以數據準備就緒觸發方式,講解如何高效的獲取傳感器數據。
在AWorks中,要實現通過觸發方式獲取傳感器通道數據,只需要兩步操作即可,第一步是配置傳感器通道的觸發回調函數,第二步則是打開該通道的觸發。
首先,配置傳感器通道觸發模式的函數原型如下:

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

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

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

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

通過以上的接口,完美的實現了一種接口訪問所有傳感器數據的功能,并且這些接口可以在任何運行AWorks操作系統的平臺上使用,且無論平臺中的傳感器類型和數目如何變化,只需要知道該平臺傳感器通道的ID信息,則都可以使用這些通用接口來進行訪問。只要是基于該通用接口開發的應用程序,只要是在AWorks系統中,應用程序能實現“零”修改的移植。在軟件意義上,真正實現了“一次編程、終生使用、跨平臺”的歷史難題。
4、總結
AWorks是ZLG歷時12年開發的下一代開源嵌入式開發平臺,將MCU和OS的共性高度抽象為統一接口,支持平臺組件“可插拔、可替換、可配置”,與硬件無關、與操作系統種類無關的方式設計,用戶只需修改相應的頭文件,即可實現“一次編程、終生使用、跨平臺”。
并且ZLG推出了一系列搭載AWorks操作系統的Cortex-M0/3/4/7、Coterx-A7/8/9、ARM7/9、DSP等常用內核的核心板。使用這些核心板,即可在AWorks平臺上快速完成產品開發。