几个关键函数的调用
下面是CSR模块的几个关键函数:
void CSR_Start();
void CSR_Stop();
CSR_SetDacCurrent(BYTE bValue, BYTE bRange);
CSR_SetScanSpeed(BYTE bDivider);
void CSR_StartScan(bStrtSw, bSwCnt, bMode);
BYTE CSR_GetScanStatus();
BYTE CSR_iReadSwitch(Byte bSwitch);
CSR_bUpdateBaseline(bSwGroup);
BYTE CSR_bGetCentroidPos(bSwGroup);
CSR_Start和CSR_Stop分别是启动和停止CSR模块。CSR_SetDacCurrent用于设定给Cp充电的恒流源的大小,bValue、bRange参数用于分两级设定恒流源的值。CSR_SetScanSpeed用于设置PWM的周期值,其参数bDivider的值减2为PWM的Duty值。上面两个函数的参数的调整可以调节触摸按键和触摸滚动条的灵敏度和扫描周期。 CSR_StartScan用于启动扫描,bStrtSw、bSwCnt和bMode参数分别用于设置第一个扫描键的键号、顺序扫描键的个数和扫描的方式,扫描的方式有单次扫描和连续扫描两种方式。 CSR_GetScanStatus函数返回扫描的状态,CSR_iReadSwitch函数得到扫描的结果即定时器的计数值。
CSR_bUpdateBaseline是一个重要而有多种功能的函数,如图5所示。对于每一个触摸感应键,都有一个Baseline用于跟踪在没有手指触摸时的定时器计数值,它是通过将每一次扫描得到的定时器的计数值做IIR滤波并符合有关条件后才作修正。作为差值比较的基准线,每一次扫描得到的定时器的计数值都要和它比较得到差值,该差值再和手指信号的阀值比较以判定有无手指触摸。参数bSwGroup可选0、1和2,表明本次调用是修正触摸按键还是第一或第二滚动条。返回值是0或1,表明无或有手指触摸。除了实施以上功能外,该函数还要完成峰值检测和ESD检测,用于提高测试的性能。
|