有谁研究过 wince BCM91101SP下的touch驱动啊。。。用的是ADS7843 。我的问题是。。他里面又一个8位模式可以提高速率。这个8位模式具体事什么意思呢。从驱动来看。。又点不明白
就是你连续发送三个command,中间怎么会隔着一个发一个00呢。。是位了要延时吗。
还有就是他这个驱动选择的是12bit模式的。。他怎么可以连续接收三个回复呢。并且里面在接收模式的处理上又点不明白。
r1 = (INREG32(&g_pMSPIRegs->RX[1]) & 0x7F) << 5;
r1 |= (INREG32(&g_pMSPIRegs->RX[2]) & 0xF8) >> 3;
r2 = (INREG32(&g_pMSPIRegs->RX[3]) & 0x7F) << 5;
r2 |= (INREG32(&g_pMSPIRegs->RX[4]) & 0xF8) >> 3;
r3 = (INREG32(&g_pMSPIRegs->RX[5]) & 0x7F) << 5;
r3 |= (INREG32(&g_pMSPIRegs->RX[6]) & 0xF8) >> 3;
这个是怎么解释的啊。。先接收7位回复。。再接收5位回复。。。。。
很费解
发00是为了产生对应的CLK,依靠这个CLK,7843才能完成convert(AD转换)。16 clk per convert,每次转换需要16个clk。
8bit模式是减少采样的精度,除了转换输出加快(少了4bit,25%),更重要的是在8bit模式下,可以加快clk的频率,也就是加快采样及转换的频率。因此可以说是“提高速率”。不过随着采样频率的提升,精度(LSB Error)出错的可能性增加。要看实用环境进行取舍的。
12bit很好理解:因为一次通讯只有8clk,对应8bit(即一个字节),那么12bit显然必须两次通讯,获取2个字节,然后将2个字节中有效的位数提取出来,得到12bit。
/*这两步操作得到12bit有效数据*/
RX[1]) & 0x7F) < < 5; //取有效的7位,放在12bit的高7位
RX[2]) & 0xF8) >> 3; //取有效的5位,放在12bit的低5位
我的触摸屏用的控制芯片是ADS7843,为什么我的触摸屏是偶尔有时候点不准呢?