1.簡(jiǎn)介
PAJ7620是ALIENTEK推出的一款高性能手勢(shì)識(shí)別傳感器模塊。該模塊采用原相科技(Pixart)公司的 PAJ7620U2芯片,芯片內(nèi)部集成了光學(xué)數(shù)組式傳感器,以使復(fù)雜的手勢(shì)和光標(biāo)模式輸出,自帶九種手勢(shì)識(shí)別,支持上、下、左、右、前、后、順時(shí)針旋轉(zhuǎn)、逆時(shí)針旋轉(zhuǎn)和揮動(dòng)的手勢(shì)動(dòng)作識(shí)別,以及支持物體接近檢測(cè)等功能。
PAJ7620模塊驅(qū)動(dòng)時(shí)序?yàn)镮IC時(shí)序,本次實(shí)驗(yàn)我們通過硬件IIC來完成手勢(shì)識(shí)別功。
PAJ7620 內(nèi)部自帶了 9 個(gè)手勢(shì)識(shí)別,分別是“上”、“下”、“左”、“右”、“前”、“后”、“順時(shí)針旋轉(zhuǎn)”、“逆時(shí)針旋轉(zhuǎn)”、“揮動(dòng)”。 使用時(shí)傳感器的開窗口位置需朝上,如圖所示:
手在傳感器的上方,保持與傳感器的垂直距離,做出如下圖和所示的手勢(shì),可以分別得出“上”、“下”、“左”、“右”、“順時(shí)針旋轉(zhuǎn)”、“逆時(shí)針旋轉(zhuǎn)”、“揮動(dòng)”的識(shí)別結(jié)果。
2.硬件設(shè)計(jì)
3.軟件設(shè)計(jì)
1.打開STM32CubeMX軟件,配置手勢(shì)識(shí)別引腳PB6(IIC_SCL)、PB7(IIC_SDA);
2.設(shè)置引腳模式為推挽輸出模式,初始化電平為高電平
4.生成代碼
1.引腳模式配置函數(shù)
2.手勢(shì)模塊底層接口IIC協(xié)議函數(shù)
起始信號(hào)
鐘線為高電平時(shí),數(shù)據(jù)線由高變低為起始信號(hào)
/***************發(fā)送起始信號(hào)*************
*
*說明:時(shí)鐘線為高電平時(shí),數(shù)據(jù)線由高變低為起始信號(hào)
*******************************************/
void IIC_Start(void)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(1);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(0);//鉗住IIC總線,準(zhǔn)發(fā)送或者接收數(shù)據(jù)
}
停止信號(hào)
時(shí)鐘線為高電平時(shí),數(shù)據(jù)線由低變高為停止信號(hào)
/**************發(fā)送停止信號(hào)*****************
**
**說明:時(shí)鐘線為高電平時(shí),數(shù)據(jù)線由低變高為停止信號(hào)
************************************************/
void IIC_Stop(void)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(0);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
IIC_SDA_OUT(1);
DelayUs(2);
}
發(fā)送應(yīng)答信號(hào)
/****************發(fā)送應(yīng)答信號(hào)************
**u8 ack -- 0應(yīng)答,1非應(yīng)答
**
******************************************/
void IIC_Send_Ack(u8 ack)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(0);
if(ack&0X01)IIC_SDA_OUT(1);//非應(yīng)答
else IIC_SDA_OUT(1);//應(yīng)答
DelayUs(2);
IIC_SCL(1);//時(shí)鐘線拉高,數(shù)據(jù)發(fā)送完成
DelayUs(2);
IIC_SCL(0);//時(shí)鐘線拉低,準(zhǔn)備下一次數(shù)據(jù)收發(fā)
}
獲取應(yīng)答信號(hào)
/***************檢測(cè)應(yīng)答信號(hào)********************
**
**返回值:1,接收應(yīng)答失敗
0,接收應(yīng)答成功
************************************************/
u8 IIC_Check_ACK(void)
{
u8 i=0;
IIC_SDA_IN_MODE();//輸入模式
IIC_SDA_OUT(1);
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
while(IIC_SDA_IN)
{
i++;
if(i>=255)return 1;//非應(yīng)答
}
IIC_SCL(0);
return 0;//應(yīng)答
}
發(fā)送一字節(jié)數(shù)據(jù)
/***************發(fā)送一字節(jié)數(shù)據(jù)***************/
void IIC_Send_Byte(u8 txd)
{
u8 i=0;
IIC_SDA_OUT_MODE();//輸出模式
for(i=0;i<8;i++)
{
IIC_SCL(0);
if(txd&0X80)IIC_SDA_OUT(1);
else IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
txd<<=1;
}
IIC_SCL(0);;//時(shí)鐘線拉低,準(zhǔn)備下一次數(shù)據(jù)收發(fā)
}
接收一字節(jié)數(shù)據(jù)
/**********************接收1字節(jié)數(shù)據(jù)****************/
u8 IIC_ReadByte(void)
{
u8 i=0;
u8 rxd=0;
IIC_SDA_IN_MODE();//輸入模式
for(i=0;i<8;i++)
{
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
rxd<<=1;
if(IIC_SDA_IN)rxd|=0x01;
DelayUs(2);
}
IIC_SCL(1);
return rxd;
}
-
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355729 -
手勢(shì)識(shí)別
+關(guān)注
關(guān)注
8文章
225瀏覽量
47786 -
IIC
+關(guān)注
關(guān)注
11文章
300瀏覽量
38311
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論