ARM2410 IIC总线驱动基础知识
来源:互联网 发布:设置有限数据列 编辑:程序博客网 时间:2024/05/17 03:39
首先来看一下原理图:
我们看到它有两根线:数据线和时钟线,他们用于数据传输。
A0、A1、A2是设备地址,它是已经固化在硬件层的。
再来看看AT24c02与2440连接图:
我们要知道2440与at24c02之间属于主从连接,也就是说所有的会话必须由主设备发起,这里的主设备自然是2440。那么当2440的iic总线上挂载了多个存储设备时,2440如何去找到自己想要访问的存储设备呢?这就需要设备地址,那么当访问到具体的设备后,想要读写特定的存储空间,还需要知道存储地址!那么这些地址是如何组织的呢?我们可以看看下面这幅图:
由于我们用到的是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连接的存储设备如何读写呢?我们来看一看时序图,不过因为读写都分为好几种,我们分别只选其中一种来分析:
首先我们来分析一下随机读时序:
一开始SDA、SCL信号都是高电平,然后SDA出现一个下降沿,表示开始发送数据。然后会发出设备地址,就是我们上面提到过的,它是7位的,第8位是读写标识位。由于只有一根数据线,显然数据是一位一位发送的。当SCL是低电平的时候,SDA上的数据可以变化,当SCL为高电平的时候,SDA上的数据被读走。那么要发送完这8位的数据,需要8个时钟周期。在第九个时钟周期,2440会交出总线的控制权,由从机来驱动,从机会向2440发送ack应答信号。
好下面我们略去比较细节的东西来分析这个随机读时序:
首先发送设备地址并附带写信号,这样就找到了设备并告诉设备下一次是2440向设备发送
首先发送设备地址并附带写信号,这样就找到了设备并告诉设备下一次是2440向设备发送
2440向设备发送要读的地址
发送设备地址并附带读信号,表示下一次是设备向2440发送数据
然后是设备向2440发送数据
再来看字节写时序:
首先发出地址信号并附加些标识,这样就找到了要写的设备并告诉设备下一次是2440向设备发送
然后发出要写的存储地址
之后开始写入数据
- ARM2410 IIC总线驱动基础知识
- IIC总线驱动基础知识
- IIC总线驱动基础知识
- IIC总线驱动架构
- iic总线驱动框架
- Linux-IIC驱动(1)-IIC总线介绍
- IIC总线及其驱动代码
- iic总线驱动(适配器驱动)详解
- Linux下IIC总线驱动 备忘
- Linux中IIC总线驱动分析
- Linux中IIC总线驱动分析
- IIC总线和外设驱动(一)
- 单片机——iic总线驱动
- IIC总线
- IIC总线
- IIC总线
- IIC总线
- IIC总线
- Ext this.addEvents is not a function 错误原因
- PMBOK5术语表之常用缩写
- 在Visual studio 中解除 TFS 的账号绑定
- OSGi:生命周期层
- goldengate 简单配置 oracle to oralce
- ARM2410 IIC总线驱动基础知识
- python类型转换、数值操作(收藏)
- Windows2003 Server启用NTPServer服务的设置
- 使用svn下载源码 svn使用错误笔记
- 领导力教练:世界著名企业教练们的实践心得(原书第3版)
- perl和python
- 悲催的android 面试
- Unity3D LOD Group
- 总结:程序设计基础