我是靠谱客的博主 认真睫毛,最近开发中收集的这篇文章主要介绍IIC驱动AP3216,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.AP3216简介:三合一环境传感器:

ALS:环境光强度(16位)

PS:接近距离(10位)

IR:红外线距离(10位)

IIC驱动主要的点:

A:配置时钟可以是400Khz或者100Khz;

B:六种信号:应答(非应答)、开始&结束信号、读&写信号;

C:读驱动开发的时候用到假读;

D:中断和中断标志是不同的概念,即使没有中断产生,中断标志也要清零;

E:读过程

 IIC发送挂在的设备地址,等待应答信号,要写入的寄存器地址,设备的地址,然后是发送数据;

F:写过程:

G:总线仲裁啥意思?

        I2C总线上可能在某一时刻有两个主控设备要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的: 假设主控器1要发送的数据DATA1为“101 ……”;主控器2要发送的数据DATA2为“1001 ……”总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器1发送第3位数据“1”时(主控器2发送“0” ),由于“线与”的结果SDA上的电平为“0”,这样当主控器1检测自己的输出电平时,就会测到一个与自身不相符的“0”电平。这时主控器1只好放弃对总线的控制权;因此主控器2就成为总线的唯一主宰者。不难看出:

        1.     对于整个仲裁过程主控器1和主控器2都不会丢失数据;

        2.     各个主控器没有对总线实施控制的优先级别,他们遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。

H: I2C时钟信号(SCL)的同步问题

在I2C总线上传送信息时的时钟同步信号是由挂接在SCL线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。

I:  需要了解的五个寄存器
 控制寄存器、状态寄存器、频率寄存器、数据寄存器、地址寄存器;

最后

以上就是认真睫毛为你收集整理的IIC驱动AP3216的全部内容,希望文章能够帮你解决IIC驱动AP3216所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部