名称:CAT24C512WI-GT3
丝印:24512A
内存容量:65536字节
A0 - A2:用于设置芯片的IIC物理地址,高电平为1,低电平为0,作用参考IIC数据帧解析
WP:写保护引脚,高电平开启保护(此时无法写入)
【1】单字节写入IIC数据帧:
顺序 |
主机状态 |
数据/信号 |
解释 |
应答 |
1 |
发送 |
(start) |
IIC起始信号 |
|
2 |
发送 |
1010 (A2) (A1) (A0) 0 |
A0 - A2分别根据引脚高低电平填入 |
0(芯片) |
3 |
发送 |
(地址高位) |
例如:地址0x1234,则填0x12 |
0(芯片) |
4 |
发送 |
(地址低位) |
例如:地址0x1234,则填0x34 |
0(芯片) |
5 |
发送 |
(字节数据) |
要写入的字节 |
0(芯片) |
6 |
发送 |
(stop) |
IIC终止信号 |
|
【2】(多字节连续写入)页写入IIC数据帧:
顺序 |
主机状态 |
数据/信号 |
解释 |
应答 |
1 |
发送 |
(start) |
同上 |
|
2 |
发送 |
1010 (A2) (A1) (A0) 0 |
同上 |
0(芯片) |
3 |
发送 |
(页模式地址高位) |
# 详见后续说明 # |
0(芯片) |
4 |
发送 |
(页模式地址低位) |
# 详见后续说明 # |
0(芯片) |
5 |
发送 |
(字节数据1 ) |
目标地址要写入的字节 |
0(芯片) |
6 |
发送 |
(字节数据2 ) |
目标地址往后第2个要写入的字节 |
0(芯片) |
…… |
发送 |
…… |
…… |
0(芯片) |
…… |
发送 |
(字节数据n ) |
目标地址往后第n个要写入的字节 |
0(芯片) |
…… |
发送 |
(stop) |
同上 |
|
页模式地址中,高9位为页地址,低7位为该页内的小地址。
例如:
第8页内的第6个地址,高9位是0000 0011 1(地址8,序号值为7),低7位是000 0101(地址6,序号值为5)。 拼起来得页模式地址:0000 0011 1000 0101,也就是0x0385。则页模式地址高位为0x03,低位为0x85。
芯片共65536个字节存储空间,分作512页,每页128个字节。
(已经帮各位算过了,其实一个位置的地址按页模式写和不按页模式写都是一样的,主要是连续写操作的地址循环有特点。详见下文)
连续写操作的次数没有限制,但是写操作地址只会在当前所在的页内循环。也就是当写入位置已经来到了本页的最后一个地址,则从头开始,下一个字节将写到本页的第1个地址处(原本在这个位置的数据会被新数据覆盖)
例如:
当上次写操作地址来到0x007e,则下次写操作将对0x0000进行。
【1】读取IIC数据帧:
顺序 |
主机状态 |
数据/信号 |
解释 |
应答 |
1 |
发送 |
(start) |
同上 |
|
2 |
发送 |
1010 (A2) (A1) (A0) 0 |
同上 |
0(芯片) |
3 |
发送 |
(地址高位) |
同上 |
0(芯片) |
4 |
发送 |
(地址低位) |
同上 |
(芯片,不重要) |
5 |
发送 |
(start) |
同上 |
|
6 |
发送 |
1010 (A2) (A1) (A0) 1 |
同上 |
0(芯片) |
7 |
接收 |
【芯片返回字节数据】 |
目标地址的字节数据 |
1(主机) |
8 |
发送 |
(stop) |
同上 |
|
如果要一次性连续读取多个字节数据,主机可以在接收数据后应答0继续,应答1结束。则上述数据帧改为以下情况:
顺序 |
主机状态 |
数据/信号 |
解释 |
应答 |
1 |
发送 |
(start) |
同上 |
|
2 |
发送 |
1010 (A2) (A1) (A0) 0 |
同上 |
0(芯片) |
3 |
发送 |
(地址高位) |
同上 |
0(芯片) |
4 |
发送 |
(地址低位) |
同上 |
(芯片,不重要) |
5 |
发送 |
(start) |
同上 |
|
6 |
发送 |
1010 (A2) (A1) (A0) 1 |
同上 |
0(芯片) |
7 |
接收 |
【芯片返回字节数据1】 |
目标地址的字节数据 |
0(主机) |
8 |
接收 |
【芯片返回字节数据2】 |
目标地址往后第2个字节数据 |
0(主机) |
…… |
接收 |
…… |
…… |
0(主机) |
…… |
接收 |
【芯片返回字节数据n】 |
目标地址往后第n个字节数据 |
1(主机) |
…… |
发送 |
(stop) |
同上 |
|
读操作地址可以在整个芯片内存循环。也就是当上次读操作地址已经来到了0xffff,则从头开始,下次将读取芯片内存中地址0x0000,之后同样循环。
【2】快速读取IIC数据帧:
顺序 |
主机状态 |
数据/信号 |
解释 |
应答 |
1 |
发送 |
(start) |
同上 |
|
2 |
发送 |
1010 (A2) (A1) (A0) 1 |
同上 |
0(芯片) |
3 |
接收 |
【芯片返回字节数据】 |
同上 |
1(主机) |
4 |
发送 |
(stop) |
同上 |
|
读取地址是上一次读取地址的下一个。例如上次次读操作的地址是0x1234,则下次读取0x1235地址的内容。
如果要一次性连续读取多个字节数据,主机可以在接收数据后应答0继续,应答1结束。其数据帧解析同上。
话说回来学完才发现好像flesh存储芯片更有性价比(ˉ▽ˉ;)...
唉……学都学了,不发可惜