传感器作为各个范畴最重要的设备之一,产品品种之多,运用范畴之广,跟着“智能年代”的到来,传感器的运用将发挥愈加要害的效果。那么,要怎么故最简略,最高效的方法运用这些品种繁复,操作杂乱的传感器呢?本文将为咱们逐个介绍。
传感器作为一种检测设备,它的运用早已渗透到比如工业出产、国际探究、海洋勘探、环境保护、资源查询、医学确诊、生物工程、乃至文物保护等等极端之广泛的范畴。能够毫不夸大地说,从苍茫的太空,到众多的海洋,以及各种杂乱的工程体系,简直每一个现代化项目,都离不开传感器。
现在,市面上现已存在很多各品种型,各品种型,不同厂家出产的各种传感器,例如,温度、湿度、电压、电流、压强、光照、加速度、角速度等等。它们的运用场景、产品参数、运用方法都不尽相同,这往往使许多项目开发人员在运用传感器时寸步难行:增加一个传感器,就要编写对应的驱动,供给一套拜访这个传感器的接口。
通常情况下,在一个杂乱的体系中,传感器往往不止一个,或许存在几个或几十个乃至更多不同品种的传感器,若这些传感器的运用接口都不相同,那么可想而知,软件方面的工作量和杂乱度又会有多大?无形中又增加了很大的开发难度。不仅如此,若根据多种传感器开发的运用程序想跨渠道复用,而底层各个传感器的接口却千奇百怪,那么,这样的工作量和杂乱度又会上升到什么程度?
为了处理这些问题,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的描绘,此刻若想获取传感器的数据,只需在运用程序中调用获取传感器数据的函数接口即可,获取传感器数据的函数接口如下:
其间,id即为传感器通道ID号,p_val为寄存对应ID的传感器数据。此处aw_sensor_val_t类型为一个结构体,只需知道它是一个保存传感器数据的变量即可。
根据此,获取体系中恣意传感器通道的数据只需调用该接口即可,例如,每隔500ms获取一次温度采样数据的程序典范如下:
相同,若想获取光照度传感器采样数据,程序典范如下:
以此类推,只需求调用这一个相同的接口,便能够顺次获取体系中一切传感器的数据。此刻,或许有人会疑问,体系中那么多传感器,一个一个调用该接口,会不会显得繁琐?关于该问题,AWorks体系当然给出了答案,那便是供给一起获取多通道或许一切通道传感器数据的接口,该接口原型如下:
其间,p_ids为指向传感器通道id列表的指针;num表明通道的数目,即id列表的巨细;p_buf指向用于存储各通道数据的缓存,缓存巨细与num共同。根据该接口,能够一起获取多个或一切体系中传感器的采样数据,例如,每隔500ms获取当时表
1中一切的传感器通道采样数据的程序典范如下:
根据此,AWorks体系的传感器接口现已完美的完结了运用同种接口获取一切传感器采样数据的功用。此刻,或许有人又会提出疑问,这两个接口选用的好像都是轮询的方法获取传感器数据,若在功率要求较高的场合,调用该接口是不是不太好呢?再者说,现在的许多传感器都能够选用中止触发的方法获取数据,这样能够大大提高运用程序的功率,那么能不能完结这种功用呢?当然!AWorks相同供给了这种接口,而且接口的调用十分便利,简练。接下来将为你逐个揭秘。
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渠道上快速完结产品开发。