您的位置:首页 > 其它

I2C学习记录

2014-11-06 10:25 155 查看
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。

通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。通过串行数据(SDA)线和串行时钟
(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号
的器件。此时,任何被寻址的器件都被认为是从机。

2条双向串行线,一条数据线SDA,一条时钟线SCL。

SDA传输数据是大端传输,每次传输8bit,即一字节。

支持多主控(multimastering),任何时间点只能有一个主控。

总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.

系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。

发送/接收一个数据:数据的发送和接收都是在SCL为低电平的时候发生,因为SCL为高电平时已给了开始和结束信号。发送数据时,当数据准备读入时,将SCL线暂时拉高(SCL为高时,SDA无法改变状态),保持一段时间然后拉低(同你图中的TDH,数据输出保持时间),这时数据则发送完毕到SDA上。接收则与之大同小异。当SDA线上有数据过来时,先将SCL拉高,建立好时间,然后拉低,数据则被读入。(关于如何被发出以及如何被读入则是芯片做的事,我们不用管,只需记住SCL拉低,数据发出/读入)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: