公司以前的人体红外感应的产品功耗较高,听说E931.96这款芯片功耗很低,所以最近我在做测试,调试了几天,发现这款芯片真的挺不错的。加上外壳之后,探测距离、灵敏度、误触发等测试的结果都还行,相比以前的产品功耗也确实低很多,目前还没发现有什么问题。所以现在给大家分享一下这款IC。
一、IC介绍
E931.96是一个超低功耗运动侦测控制IC,适用于电池供电的无线运动传感。目前最常用的PIR人体感应传感器检测到人时输出的信号都比较小,需要进行放大、滤波等处理,而E931.96其实就是一款信号处理IC。它的优点是可以根据项目需求自由配置灵敏度,窗口检测时间等参数,而且所有的信号都是数字信号,和MCU通讯很方便。另外,它的功耗也很低,E931.96官方给的数据是3uA-5uA,PIR(人体感应传感器)一般是8.5uA-24uA,我实际测试stm8L101+E931+PIR最低功耗16uA,功耗确实比以前的类似的产品要低很多,相信以后还会有更低的。
二、引脚定义
Pin | Name | Description |
---|---|---|
1 | VSS | 供电电源负极 |
2 | INT/DOCI | 中断输出/数据输出 |
3 | SERIN | 输入,MCU接口 |
4 | VDD | 供电电源正极 |
5 | VPIR | 稳压器输出电源(可以给PIR供电) |
6 | NPIRN | PIR输入正极(接PIR信号输出) |
7 | PIRN | PIR输入负极 |
8 | TEST | 测试引脚,接到VSS |
三、通讯方式
通讯方式类似于单总线协议。MCU的IO口给SERIN引脚发送数据就可以配置E931。E931的INT/DOCI引脚可以作为红外触发的中断脚,MCU也可以通过这个引脚读取E931寄存器的数据。这个通讯的方式挺简单的,我们其实只需要通过SERIN引脚配置好参数,然后等待接收INT引脚的中断就可以了。
SERIN引脚通讯的时序图如2所示。MCU需要在SERIN引脚上产生一个0到1的跳变(图2的蓝色线条部分),之后跟随数据位(0/1)。数据位的电平持续时间至少为E931.96的2个系统时钟周期,1个系统时钟27~35us(具体的时间参考数据手册)。如此循环发送25个bit的数据即可完成E931的配置(配置的具体内容在寄存器详解)。
注:一旦数据传输被中断超过16个时钟周期,最后被接收到的数据将被锁存到配置寄存器里面。该25位数据的传输不能被打断超过15个系统时钟,因为器件可能在该阶段已经将数据锁存了。
INT/DOCI引脚输出的中断源可以选择运动检测或者ADC。若选择运动检测,规定的时间窗口内达到脉冲数则触发中断。若选择ADC,每512个系统时钟(约14ms)将产生一个中断。在MCU访问该接口时,不会产生任何中断。
INT/DOCI引脚也可以读取E931的寄存器,INT/DOCI引脚通讯的时序图如3所示。读取数据的顺序有固定的优先级。INT/DOCI引脚读取数据的顺序如图4所示。读取时不一定要读完40个bit,可以提前结束读取。
四、寄存器详解
1、配置寄存器(通过SERIN引脚配置)
Bit-No | Register | Remarks |
---|---|---|
[24:17] | [7:0]Sensitivity | 灵敏度/阈值。门限值=[寄存器值]*6.5uV |
[16:13] | [3:0]Blind Time | 盲时间。中断清除之后,忽略运动的时间,时间=[寄存器值]*0.5s,可以防止反复触发 |
[12:11] | [1:0]Pulse Counter | 脉冲计数器。在规定的时间窗口内达到脉冲数则触发中断。脉冲数=[寄存器值]+1。可以防止干扰误报 |
[10:9] | [1:0]Window_Time | 窗口时间。时间=[寄存器值]*4s+4s,用于噪声干扰环境 |
[8] | [0]Motion detector Enable | 运动检测,0:失能,1:使能 |
[7] | [0]Interrupt Source | 中断源。0:运动检测,1:ADC抽样滤波,每14ms产生一次中断 |
[6:5] | [1:0]ADC/Filter Voltage Source | ADC电压源。0:PIR信号,BFP输出,1:PIR信号,LPF输出,2:芯片供电电压,3:片内温度传感器 |
[4] | [0]Supply Regulator Enable | 稳压器VREG的2.2V是否输出。0:使能,1:失能,可以给PIR供电 |
[3] | [0]Start Sel Test | 自检。由0变为1启动,自检过程需要2s |
[2] | [0]Sample capacitor | 样本电容值。1=2*用于自检的默认电容 |
[1:0] | [1:0]Test modes | 测试模式。保留,默认00 |
2、读取寄存器(通过INT/DOCI引脚读取)
Bit-No | Register | Remarks |
---|---|---|
[39] | [0] | PIR out of range 指示,传感器陶瓷被放电 |
[38:25] | [13:0] PIR Voltage, 6.5µV/cnt | LPF或BPF输出,取决于配置 |
[24:17] | [7:0]Sensitivity | 灵敏度/阈值。门限值=[寄存器值]*6.5uV |
[16:13] | [3:0]Blind Time | 盲时间。中断清除之后,忽略运动的时间,时间=[寄存器值]*0.5s,可以防止反复触发 |
[12:11] | [1:0]Pulse Counter | 脉冲计数器。在规定的时间窗口内达到脉冲数则触发中断。脉冲数=[寄存器值]+1。可以防止干扰误报 |
[10:9] | [1:0]Window_Time | 窗口时间。时间=[寄存器值]*4s+4s,用于噪声干扰环境 |
[8] | [0]Motion detector Enable | 运动检测,0:失能,1:使能 |
[7] | [0]Interrupt Source | 中断源。0:运动检测,1:ADC抽样滤波,每14ms产生一次中断 |
[6:5] | [1:0]ADC/Filter Voltage Source | ADC电压源。0:PIR信号,BFP输出,1:PIR信号,LPF输出,2:芯片供电电压,3:片内温度传感器 |
[4] | [0]Supply Regulator Enable | 稳压器VREG的2.2V是否输出。0:使能,1:失能,可以给PIR供电 |
[3] | [0]Start Sel Test | 自检。由0变为1启动,自检过程需要2s |
[2] | [0]Sample capacitor size | 样本电容值。1=2*用于自检的默认电容 |
[1] | [0]Clamp Input | 1=钳位PIR输出,用于快速偏置测量 |
[0] | [0]User test-modes select | 测试模式。 |
五、参考电路
关于E931的相关内容就介绍到这里,想要驱动程序的话可以在下面的链接下载,如果还有什么问题,可以留言,如果文章有哪里写的不对,欢迎指正,谢谢!
驱动程序下载:https://download.csdn.net/download/ShenZhen_zixian/12019043