电子说
传感器应用广泛种类繁多,能快速配置好传感器并加以使用无疑会帮助产品开发节省很多时间,在AMetal中,我们将配置传感器压缩成三步,每一步仅一个函数,帮助工程师快速实现传感器使用,本文作详细介绍。
人们为了从外界获取信息,必须借助于感觉器官,而对于电子产品而言,传感器就是它们的“感觉器官”。由于传感器的种类繁多,通讯方式也不尽相同,我们使用传感器时,必须阅读相关的手册,以获取它的通讯方式、相关的寄存器地址以及其对应的描述;配置使用一个传感器,基本上一大半的时间都停留在手册上,这对于产品竞争愈演愈烈的时代来说,无疑有些拖后腿。
AMetal传感器框架应运而生!它可以让你在配置传感器时,告别传感器的手册!
本次介绍所使用的传感器为:HTS221。HTS221是一款测量相对湿度和温度的超紧凑型传感器,可用I2C、SPI两种通讯协议。它包括一个传感元件和一个混合信号ASIC,通过数字串行接口传输测量信息。传感元件由能够检测相对湿度变化的电容器组成,并使用专用ST工艺制造。HTS221采用HLGA封装,如图1所示。
图1 HTS221封装
HTS221提供一个DRDY引脚,该引脚输出数据就绪信号,可配置成中断接收数据,连接方式详见图2。
图2 HTS221应用电路
硬件上本次采用ZLG116N32A,使用I2C接口与HTS221通讯,该芯片为Cortex-M0内核,具有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中包含了该外设所有的配置信息、操作函数以及当前状态。
初始化HTS221的函数及内容为:
__g_hts221_dev为HTS221设备结构体;
__g_hts221_info为描述了与HTS221传感器相关信息的结构体;结构体中仅有HTS221的DRDY引脚和HTS221的I2C从机地址:
如果客户在硬件连接上有不一致的地方,直接在此结构体中修改即可。
最后一个传入参数:I2C标准服务句柄;ZLG116的I2C初始化服务函数为am_zlg116_i2c1_inst_init(),此函数的返回值即为I2C标准服务句柄,所以在此处直接调用此函数即可。
在硬件连接一致的情况下,可直接调用HTS221初始化函数完成传感器的初始化:
am_sensor_handle_t hts221_handle = am_sensor_hts221_inst_init (void);
步骤2
使能传感器的通道
某些传感器都具有两个或两个以上的采集功能,本次采用的HTS221就支持温度与湿度的采集。
在AMetal中,将每个功能划分为对应的通道;HTS221是温湿度传感器,它有两个通道,详见图3。
图3 HTS221提供的通道
在使能通道前,应该定义两个数组,一个列举该传感器所有的通道,另一个用于储存两个通道数据的缓存:
然后就可以调用am_sensor_enable使能传感器的通道了,该函数有四个传入参数,详见图4。
图4 使能传感器通道的函数传入参数
根据之前的代码,使能传感器通道的函数为:
步骤3
获取传感器的采样数据
从传感器指定通道获取采样数据的函数为am_sensor_data_get,它的传入参数应与使能传感器通道的传入参数一致:
在调用这个函数后,传感器的采样数据就保存在结构体data中,结构体data的成员函数详见图5,也就是说,我们从传感器获取的采样数据是带有单位的,客户只管使用,不用去翻阅手册获取数据的单位。
图5 am_sensor_val_t结构体说明
最后AMetal中还提供了单位转换函数:am_sensor_val_unit_convert,该函数有三个传入参数,详见图6。
图6 单位转换函数传入参数
其中目标单位支持10-24~1024,基本以103为间隔,部分目标单位如图7所示。
图7 部分目标单位宏说明
三步都已介绍完,我们看一下在AMetal中使用传感器的完整的代码:
可以看到在AMetal中使用传感器所需要写的代码是非常非常少的,而且在配置过程中基本可以告别手册,客户只需要做“选择题”,选择需要测试的通道就可以了。
全部0条评论
快来发表一下你的评论吧 !