物联网项目——光传感器ISL20093
ISL20093是一款综合性光传感器,内部有16位ADC转换,通过I2C用户配置参数,可编程lux范围选择。
大致了解一下芯片知识,然后详细追踪代码,看I2C实现。


REXT External resistor pin for ADC reference; connect this pin to ground through a (nominal) 100kΩresistor
两个二极管,一个队可见光(540 nm)敏感,一个对红外线敏感,模式一对应第一个二极管工作,模式二对应第二个二极管工作,模式三对应二个二极管同时工作(Diode1 - Diode2)。
8*8位内部控制寄存器:
2*8控制寄存器
2*8设置高低中断阈值
4*8data寄存器,只读模式 ,2个reading 2个timer counts

ISL20093的原理图如下所示:


由原理图可以看出,ISL20093数据传输是由I2C总线传输的,I2C协议简单介绍一下。
具体的定义这里不说了,主要是怎么用,以其中一种模式进行说明。

I2C SDA Out 从机数据时序,I2 CSDA in 主机发送的时序。
解释一下上面的时序:时钟高电平时一个下降沿,表示开始信号Start。接着在8个时钟周期内发送1000100   0(w)前七位是从机地址,最后一位是代表(R/W)。下一个时钟(第九个时钟),从机拉低应答。接下来8个时钟周期是寄存器的地址,00000xxx三位可变的。从机应答。主机接收后SCL高电平期间,由主机产生一个上升沿的信号作为停止。主机产生一个下降沿作为start。
接下来发送8位的读指令,10001001.拉低SDA放弃总线。接下来从机发送8位数据。主机将SDA不操作,作为应答非信号。迫使从机释放总线。主机发送停止信号。A1-6代表从机地址,R7-0 寄存器地址,D7-0数据。

I2C写时序原理和上面相同,对应读写位改变就行。
这里只是
I2C SDA Out 只从机,I2 CSDA in 主机发送的。
解释一下上面的时序:时钟高点评时一个下降沿,Start。接着在8个时钟周期内发送10001000(w)下一个时钟,从机压低应答。接下来8个时钟周期是
寄存器的地址,00000xxx三位可变的。从机应答。主机接收后SCL高电平期间,由主机产生一个上升沿的信号作为停止。主机产生一个下降沿作为start。
接下来发送8位的读指令,10001001.拉低SDA放弃总线。接下来从机发送8位数据。主机将SDA不操作,作为应答非信号。迫使从机释放总线。主机发送停止信号。A1-6代表从机地址,R7-0 寄存器地址,D7-0数据

I2C的写时序和上面类似。

这里只是ISL20093的简单介绍,I2C具体传输还要看LPC11C14配置寄存器。配置LPC11C14可以不用考虑每个时序的数据。是不是觉得上面分析的时序没有用了,其实还是有用的,当你用io口模拟时序时就必须要考虑每个时序的数据了。这种情况还是存在的,有的IC传输协议不是标准I2C的协议,而是变种协议,大致相同,细节处要自己考虑。
下一篇准备写一下LPC11C14s上的I2C寄存器配置,以及,寄存器控制时序方法。




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

物联网项目——光传感器ISL20093

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭