简介:手势传感器,捕捉手势芯片。
1.内置光源和环境光源抑制滤波器的集成led,镜头和手势传感器可以在黑暗或低光环境可以在一个小的立方体模块中工作。
2、内置9种手势类型:上、下、左、右、前、后、顺时针旋转、逆时针旋转、挥动。支持输出中断。
支持接近检测功能,检测物体的大小和亮度。
4、分辨率:60x60 pixels ,每个像素的大小是:20x20 um2 , 最大支持率:720fps。
5、模式:gesture / cursor / image modes
6、控制速度:
一般模式:60~600°/s
在gaming模式下:60~1200°/s
7.通信模式:
I2C模式(for gesture/ curcos 模式):最高能达4000kbit/s
4-wire SPI (for Image 模式):22~48Mhz(Frame subtraction mode) /44~48Mhz(Raw data mode)
二、工作原理:
PAJ7620u工作时通过内部LED驱动红外,驱动红外LED红外信号向外发射。当传感器阵列在有效距离内检测到物体时,目标信息提取阵列将获取检测目标的特征原始数据获取数据将存储在寄存器中。同时,手势识别阵列将识别原始数据,最后将手势结果存储在寄存器中,用户可根据I2C接口读取原始数据和手势数据的结果。
三、模块BANK简介:
1、在PAJ7620内部有两个BANK 寄存器区,分别是BANK0,BANK1。
2.想去其中地bank访问前,区域下的寄存器需要向寄存器区域发送控制指令,具体控制指令如表所示:
BANK区域 |
地址 |
数值 |
BANK0 |
0XEF |
0X00 |
BANK1 |
0XEF |
0X01 |
进入BANK0区域,传感器0XEF地址写0X00。
进入BANK1区域,传感器0XEF地址写0x01
四、上电流程图
五、IIC通讯模式
1、在iic在通信接口上,只能作为从站,不能作为主站。
2.读写控制的三种状态写作似乎只能写单字节,读写可分为单字节读取和多字节读取。
3、IIC速率:分为标准模式和极速模式。
4、IIC的时序:
六、寄存器简介:
1、:
进入BANK0区域,传感器0XEF地址写0X00。
进入BANK1区域,传感器0XEF地址写0x01.
2、使在BANK1 地址 0X72 。
只关心bit0 ,设置为1,使能PAJ7620工作,如果设置为0,残疾PAF7620工作
3、:地址0x03
:
先写寄存器BANK1 ,addr 0x72,写入0X00,禁用paj7620.
然后写寄存器BANK0,ADDR 0X03,写入0x01,处理IC suspend命令。
:
先通过写入ID,处理I2C唤醒命令,
然后写寄存器BANK 1 ,ADDR 0x72,写入0x01,启用PAJ7620.
:0X43,0X44
:0XB0
6、:0XB1,0XB2
七、经验理解:
1、0x43寄存器是手势检测的标志,即0x43寄存器有bit当位置较高时,检测到手势。然后读取0x44之后,0x自动将寄存器内容设置为0。
2.注意上电后的几个延迟。
3.读取手势寄存器时,需要判断,当读取的内容不是0时,操作自己的逻辑。
4.激活第一步IIC的时候,往iic从车站写入地址,不需要写内容。
5、切换bank之后,最好推迟。
6.我的站址是0x仅供参考。
八、初始代码:
设备初始化:
const unsigned char Init_Register_Array[][2] = { {0xEF,0x00}, {0x37,0x07}, {0x38,0x17}, {0x39,0x06}, {0x41,0x00}, {0x42,0x00}, {0x46,0x2D}, {0x47,0x0F}, {0x48,0x3C}, {0x49,0x00}, {0x4A,0x1E}, {0x4C,0x20}, {0x51,0x10}, {0x5E,0x10}, {0x60,0x27}, {0x80,0x42}, {0x81,0x44}, {0x82,0x04}, {0x8B,0x01}, {0x90,0x06}, {0x95,0x0A}, {0x96,0x0C}, {0x97,0x05}, {0x9A,0x14}, {0x9C,0x3F}, {0xA5,0x19}, {0xCC,0x19}, {0xCD,0x0B}, {0xCE,0x13}, {0xCF,0x64}, {0xD0,0x21}, {0xEF,0x01}, {0x02,0x0F}, {0x03,0x10}, {0x04,0x02}, {0x25,0x01}, {0x27,0x39}, {0x28,0x7F}, {0x29,0x08}, {0x3E,0xFF}, {0x5E,0x3D}, {0x65,0x96}, {0x67,0x97}, {0x69,0xCD}, {0x6A,0x01}, {0x6D,0x2C}, {0x6E,0x01}, {0x72,0x01}, {0x73,0x35}, {0x74,0x00}, {0x77,0x01}, };
手势检测初始化: //Gesture register initializes array const unsigned char Init_Gesture_Array[][2] = { {0xEF,0x00}, {0x41,0x00}, {0x42,0x00}, {0xEF,0x00}, {0x48,0x3C}, {0x49,0x00}, {0x51,0x10}, {0x83,0x20}, {0x9F,0xF9}, {0xEF,0x01}, {0x01,0x1E}, {0x02,0x0F}, {0x03,0x10}, {0x04,0x02}, {0x41,0x40}, {0x43,0x30}, {0x65,0x96}, {0x66,0x00}, {0x67,0x97}, {0x68,0x01}, {0x69,0xCD}, {0x6A,0x01}, {0x6B,0xB0}, {0x6C,0x04}, {0x6D,0x2C}, {0x6E,0x01}, {0x74,0x00}, {0xEF,0x00}, {0x41,0xFF}, {0x42,0x01}, };
物体检测初始化:
//Approaches register initialization array const unsigned char Init_PS_Array[][2] = { {0xEF,0x00}, {0x41,0x00}, {0x42,0x00}, {0x48,0x3C}, {0x49,0x00}, {0x51,0x13}, {0x83,0x20}, {0x84,0x20}, {0x85,0x00}, {0x86,0x10}, {0x87,0x00}, {0x88,0x05}, {0x89,0x18}, {0x8A,0x10}, {0x9f,0xf8}, {0x69,0x96}, {0x6A,0x02}, {0xEF,0x01}, {0x01,0x1E}, {0x02,0x0F}, {0x03,0x10}, {0x04,0x02}, {0x41,0x50}, {0x43,0x34}, {0x65,0xCE}, {0x66,0x0B}, {0x67,0xCE}, {0x68,0x0B}, {0x69,0xE9}, {0x6A,0x05}, {0x6B,0x50}, {0x6C,0xC3}, {0x6D,0x50}, {0x6E,0xC3}, {0x74,0x05}, };