IIC总线驱动基础知识

由于JZ2440开发板没有接iic总线,所以本节实验是根据fl2440开发板来做的!

首先来看一下原理图:
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向设备发送
然后发出要写的存储地址
之后开始写入数据

关于裸板程序暑假里面会花一部分时间好好研究的,在这里就先放一放了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值