Vcnl4010是集距离和光度探测的传感器,配置接口是I2C总线。对于以i2c为接口的外围设备(vcnl4010、lm3560等),其驱动编写过程如下:
1. DATASHEET的阅读:通过阅读DATASHEET弄清楚设备的工作原理,然后从设备寄存器出发,弄清楚设备的工作模式,尽可能的将每一种模式进行独立编写,驱动程序只提供机制。例如vcnl4010驱动,每一个函数代表一种机制,包括感光/距离探测模式的选择,是单次检测还是周期性检测的模型选择,每种模式的中断使能,以及中断阈值的设定等等分别以单个函数进行实现。
2. 对于中断:vcnl4010比vcnl4000添加了中断模式,vcnl4010提供一个中断引脚与CPU的GPIO进行连接,外接的GPIO会配置上拉电阻,通过设定中断阈值(主要使用在距离探测方面)和中断条件(探测到几次发生中断),完成中断触发。中断发生后,外接的GPIO电平会拉低,并保持不变,此时中断状态寄存器值发生改变,对应的不同模式中断触发位(低阈值/高阈值/光度/)会自动置1,当对vcnl寄存器相应位写1,中断电平变高,中断寄存器为0.
I2C设备中断配置总结:
1) 对应的GPIO配置成中断模式(armA5的方式是首先配置成输入模式,然后是触发方式,一般是边缘触发,最后中断使能)
2) 设置好设备中断触发模式,在中断发生后要清除中断,需注意在中断处理函数中不能做耗时的操作,比如说对vcnl中断位的复位(I2C设备是外围设备&