ARM2410 IIC总线驱动基础知识

来源:互联网 发布:设置有限数据列 编辑:程序博客网 时间:2024/05/17 03:39
首先来看一下原理图:
IIC总线驱动基础知识 - 小白 - 小白的博客

我们看到它有两根线:数据线和时钟线,他们用于数据传输。
A0、A1、A2是设备地址,它是已经固化在硬件层的。

再来看看AT24c02与2440连接图:
IIC总线驱动基础知识 - 小白 - 小白的博客
我们要知道2440与at24c02之间属于主从连接,也就是说所有的会话必须由主设备发起,这里的主设备自然是2440。那么当2440的iic总线上挂载了多个存储设备时,2440如何去找到自己想要访问的存储设备呢?这就需要设备地址,那么当访问到具体的设备后,想要读写特定的存储空间,还需要知道存储地址!那么这些地址是如何组织的呢?我们可以看看下面这幅图:
IIC总线驱动基础知识 - 小白 - 小白的博客
由于我们用到的是at24c02,也就是2k的存储设备,所以只需要看第一行:
这里就是设备地址了,高4位是固化的,不用管,A2、A1、A0可以根据硬件连接来设置。fl2440开发板原理图可知A2、A1、A0都是0,所以从设备地址是:1010000
我们再来看看4k,8k,16k的情况:我们知道设备地址发出之后在发出的是存储地址,而存储地址都是8位的,那么对4k,8k,16k的情况怎么办呢?他们可不是8位地址就可以寻址的。8位地址只能寻址一页数据,4k是2页,8k是4页,16k是8页,我们看到上面图片p0可以代表2页,p1、p0可以代表4页,p2、p1、p0可以代表8页,这下明白了!
至于存储地址,当然可以根据自己的需要来设置了。

那么通过iic总线与2440连接的存储设备如何读写呢?我们来看一看时序图,不过因为读写都分为好几种,我们分别只选其中一种来分析:
首先我们来分析一下随机读时序:
IIC总线驱动基础知识 - 小白 - 小白的博客
一开始SDA、SCL信号都是高电平,然后SDA出现一个下降沿,表示开始发送数据。然后会发出设备地址,就是我们上面提到过的,它是7位的,第8位是读写标识位。由于只有一根数据线,显然数据是一位一位发送的。当SCL是低电平的时候,SDA上的数据可以变化,当SCL为高电平的时候,SDA上的数据被读走。那么要发送完这8位的数据,需要8个时钟周期。在第九个时钟周期,2440会交出总线的控制权,由从机来驱动,从机会向2440发送ack应答信号。
好下面我们略去比较细节的东西来分析这个随机读时序:
首先发送设备地址并附带写信号,这样就找到了设备并告诉设备下一次是2440向设备发送
2440向设备发送要读的地址
发送设备地址并附带读信号,表示下一次是设备向2440发送数据
然后是设备向2440发送数据
再来看字节写时序:
IIC总线驱动基础知识 - 小白 - 小白的博客
首先发出地址信号并附加些标识,这样就找到了要写的设备并告诉设备下一次是2440向设备发送
然后发出要写的存储地址
之后开始写入数据
原创粉丝点击