eeprom的存储原理_会议广播_音频应用论坛 - Powered by AUIOAPP

音频应用论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
热搜: 音频应用

[资讯] eeprom的存储原理

[复制链接]
andi 发表于 2004-12-16 01:25:00

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
24C256是具有I2C接口的512x64存储器,在数据的存储过程中遵循I2C协议必须的逻辑。
1 I& C+ m* t, P2 Z8 j& T" L8 W  24C256是32K字节,32*8=256K位。(之前一直把这个搞错)
/ A- W0 S5 O4 c, w  存储地址问题:8 T1 O# ~$ n) q# c  t8 N
24C256的数据容量是32768,即可以存储的有效字节数。所以它的地址是16位整型数,有效范围是0~32768,数据字节为单位存储,在16位地址其中有效数据只有15位,低6(0~5)位地址表示的容量是0~63,然后连续的9(6~14)位地址表示页码的范围是0~511,在数据连续存储过程中,相同听页面内,存储地址自动完成累加过程;数据将从本页开始的地址重新开始覆盖已经存在的数据。例如,地址是63(二进制码111111)表示的是第0页的最后一个存储空间,地址64(二进制码1,000000)表示第1页最开始的存储空间。在当前存储地址是63时如果该器件处于连续存储模式下,数据将出错。% S! [( f$ K# T! L0 |
原因是什么呢?24C256支持数据的连续存储,最大的存贮数量是64即一页的内容,如果在地址选择上超过了这个限制,数据将会覆盖本页开始的位置重新存储,这就造成数据的错误,在使用上,虽然数据是分页存储的,但在形式上是连续数据,所以存储中不需要特意区分页地址和页内地址。
( T1 h6 T5 c$ n" R" I( \在连续存储中,尽管数据每次存储的数量小于64,数据也可能出错,例如每次存储数量为11,地址的变化是0,11,22,33,44,55,66-----,看上去没有什么问题,地址是按照每次11递增的,然而存储的结果还是出错了,原因是什么呢?在地址55开始的空间无法提供连续11个页内存储空间,当地址增加到63以后数据又从该页0地址重新开始,从而导致数据储存的错误。有效的解决办法是如果使用连续存储模式,地址的安排上要使存储块的大小为64,32,16,8,4,2此外都不能使用连续地址存储。如果数据采集的有效数据位小于64,比如每次结果是30字节,在连续存储模式下要按照32为单位存储,不足的字节补零处理。1 R, [* ]+ k: \
对于I2C的存储一般情况下,先保留前面1个字节来保存一些界面、ID号、总音量等等,然后再从0x0400开始存储数据。
: o- Z/ P+ q" S# p) ^% y# V% w, S6 w5 w- ~) v( M" d
一):I2C必须知道的术语:
$ Y$ X6 \2 H7 _$ _1 J9 @Transmitter :The device which sends data to the bus。
& a" R/ d8 K* p/ W) i发送端:该设备发送数据到总线上
* e4 E# f: L! x3 `& h+ X; F9 QReceiver: The device which receives data from the bus 8 s* H9 S2 `& b8 U' `1 J! d
接收端:该设备从总线上接收数据 0 x4 t- H6 w" @5 `" k
Master :The device which initiates a transfer,generates clock signals and terminates a transfer . L% C1 t" R8 g: O4 d
主设备:该设备开始一个传输,生成时钟信号和终止一个传输。
; g5 o9 \& d) zSlave :The device addressed by a master
; s  h4 I, C/ @6 L从设备:被主设备寻址的器件。
  V  F+ s4 Y+ j(单主设备只要知道上面的就行了,注:一个CPU外挂一个I2C的RTC,和一个I2C的EEPROM的系统也是一个单主设备。标准I2C允许多主机器件在总线上达成,连接多于一个微控制器到I2C 总线,可能性意味着超过一个主机可以同时尝试初始化传输数据。为了避免由此产生混乱,发展出一个仲裁过程。就有下面的名词)
  U" r! j: }6 S4 I3 v( M: R( MMulti-master: More than one master can attempt to control the bus at the same time without corrupting the message。 ' E* `3 g6 u9 ?6 i$ L$ C
Arbitration : Procedure to ensure that, if more than one master simultaneously tries to control the bus, only one is allowed to do so and the winning message is not corrupted。
$ F& v) a& ^5 D4 i3 YSynchronization :Procedure to synchronize the clock signals of two or more devices。
- b% h. C, T1 R+ U! l) ~  ^二)I2C的数据传输速率(由芯唐科技提供的NUC系列资料得知): . s. M0 `1 k+ t, s; ^) Y
总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式,直至 1.0 Mbit/s 的增强高速模式。
$ w* d( h- `- p三)明白I2C总线何时可以传输,如何启动一次数据传输: 5 F# b& m& W' o" o' ~
  
7 l6 u( G5 R* C2 t' G( G* F' c当I2C总线处于空闲状态下,说明没有主机对总线发起传输请求(SCL 和SDA线同时为高),主机可以对总线发出起始信号。起始信号,通常表示为S-bit, 当SCL线为高时,SDA线上信号由高至低,标示总线上产生起始信号,新的传输开始。(注:当SCL为低电平时,SDA上的状态可以改变,当SCL为高电平时,SDA上的状态必须保持。如果改变,则对应了一个起始和结束状)
- z* m3 S( R& o. |! r重复起始信号 (Sr) 。如果产生重复起始Sr 条件而不产生停止条件,总线会一直处于忙的状态。此时的起始条件S和重复起始Sr 条件在功能上是一样的.
8 U( U# Y! s5 \四)标准I2C传输协议(就是CPU读或写一次I2C器件数据传输过程):
. N/ g; g2 n. f4 p通常标准I2C传输协议包含四个部分 * }6 H9 V  R! Z+ o( A& ?
1) 起始信号或重复起始信号 4 }* X- d5 V9 v8 ~* }  j% b
2) 从机地址传输 5 Y: H- Z& ]/ h% I/ j4 X( V
3) 数据传输 . k' F/ w4 f& U, c+ l/ g
4) 停止信号
2 H0 J5 {/ Q  n6 p7 y/ X% h  {   
9 D% u: F) q( H8 p6 i3 W2 _! Q(注意上图总共的Sr表示:重复起始信号,MSB在起始位后面表示是高位先发送,MSB:最高位) - ~4 ?1 C7 ]6 t/ V, b" v/ _  q5 N
知道了I2C传输协议的4大部分,下面先单独介绍其中第2部分(数据传输):
* I" y, F0 x( O: d) j  G4 Z+ u6 KA)主机向从机“写”数据,过程是这样的:主机先向从机发送地址,然后写数据,这个过程传输方向未改变。
1 K) k2 T  K& a. v, K) K2 Q3 G4 ^  
: k4 W/ W9 ~* x(注:由上图得出要明白以下信息: 7 P: g; B' d9 U. W0 q1 F% S
上图的灰色和白色表示含义; & o$ `9 K$ i. @8 S; R4 q! Y( X( {4 w
其中“acknowledge”表示应答信号;
, l( v8 w% W4 I, Z( G2 m. ?masterA = acknowledge (SDA low) “低电平”表示有应答; /A = not acknowledge (SDA high)“高电平”表示无应答) % f# o3 K( o4 U, K0 p6 ~$ O0 s8 S* h
B)主机从从机“读”数据,过程是这样的:主机先向从机发送地址,然后从从机中读数据,这个过程传输方向发生改变。
# H7 x# F( r7 o3 H# o" B   
, ]) P4 M7 G- o5 D3 ?; g" F# `4 n(有上面两个图要明白以下信息:
+ w9 z) T8 F; p% Q: p' s4 i9 K  B. S地址传输:第一个字节的头7 位组成了从机地址,当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较,如果一样器件会认为它被主机寻址,从而当SCL第9个时钟沿时,在SDA上发出低信号作为应答。至于是从机接收还是从机发送,由RW位决定。
! N, L5 H9 o/ Y/ z2 i3 h数据传输:当从机地址被成功识别,就可以根据RW所决定的方向,开始一字节以字节的数据传输,每字节最后带一个响应信号,如果从机上产生无响应信号(NACK), 主机产生停止信号,或者产生重复起始信号开始新一轮的数据传输。当主机作为接收器件时,发生无响应信号(NACK) ,从机释放SDA线,使主机产停止信号或重复起始信号.
. I% l8 U- {$ J! X4 H3 M! q0 D
! Y/ m3 G1 K8 G9 B6 [8 ]& J五)I2C程序控制:下面主要通过模拟I2C方式控制,(因为很多cpu都有I2C内部控制模块,传输操作也都是对寄存器的读写操作,不方便理解I2C传输过程,这里特用模拟的方式控制更容易理解I2C通讯过程) . _. v8 t8 N- p- X0 L

  T( b1 |. H2 E1)如果要启动I2C总线,当SCL为高电平时使SDA产生一个负跳变,可以利用下面的类似函数: 4 H! |7 p7 v% _6 n
void I2C_Start(void)
' Y! y6 k/ e7 D0 n7 t{      7 h* Z6 \, `5 ?" B, j7 t
        SDA=1;
7 n$ Q* C4 ]# |8 u* S- `- |        SCL=1; # X. Q  X8 v/ {4 H7 L# ~+ q+ H
        DELAY(DELAY_TIME); 1 Q2 u' D4 O( B: g2 E  ~4 a
        SDA=0; / X% b7 l& H0 ]* P
        DELAY(DELAY_TIME); " H+ i5 \$ d  `5 t; g( ?
        SCL=0; ' W$ X3 f. |; }% q& I3 C9 b
        DELAY(DELAY_TIME);
. v7 C# w' p/ Q} 1 C8 ~. @: c$ W$ S: H0 u7 p5 l* Q2 |
2)如果要终止I2C总线,当SCL为高电平时使SDA产生一个正跳变,可以利用下面的类似函数 9 _" k8 V2 L5 r+ ?) p
void I2C_Stop(void)
& \! |. ^. E& `- D{ , R- t  H& O$ b) k% P
        
/ v7 I+ L6 ?# q# E7 ^" r        SDA=0;
! c, x: m% v) g% ]' E- h. R        SCL=1;
2 V9 r0 g8 _2 I( K        DELAY(DELAY_TIME);
' u6 s4 [+ u* O        SDA=1;
; @" W9 ?6 r! A7 b        DELAY(DELAY_TIME);
- h+ I8 d! x/ v# N        SCL=0; & N) W+ K3 i8 I* `1 Q4 h
        DELAY(DELAY_TIME); ( m# s; d) r0 b, m5 p/ q
} + ~* u% t4 L# B
3)如果要传输一个bit位:注意下图 # r( f) x$ B( _. [6 D
  ; G2 q& W+ _, r( I& N; \3 L+ O
(注:当SCL为低电平时,SDA上的状态可以改变,当SCL为高电平时,SDA上的状态必须保持。如果改变,则对应了一个起始和结束状) " }. J1 O$ D0 _
(低位时)发送0,在SCL为高电平时使SDA信号为低
) J9 W3 D3 Y. evoid SEND_0(void)    0 {- P; \, ]4 u3 s0 w
{ ) {$ v/ h- u, x$ m7 \7 v$ b# G; ~
        SDA=0;   
) i# ~9 Q; I. F7 Q- R4 K        SCL=1;
, `8 g' ]& I' L$ ]( P        DELAY(DELAY_TIME);
9 B4 b( a$ d/ b( s0 e4 Z! |        SCL=0;  
6 k$ k" D! {  Y/ z- G        DELAY(DELAY_TIME); ! T8 z: a% ^1 e) x
}
4 _6 Y) ~8 S* B9 ^$ ^9 R(高位时)发送1,在SCL为高电平时使SDA信号为高
* t; u5 c( W1 R" wvoid SEND_1(void)  
8 A0 ]) C4 D! `+ w{ ( i3 g# k7 }/ e' I- u
        SDA=1; 2 D0 [7 B3 Y0 a1 _8 B7 Q
        SCL=1;
+ o% F& M3 G+ m0 M        DELAY(DELAY_TIME); - s: |# Q5 ?+ Q
        SCL=0;
3 w! ~- W- F4 L- @0 ]8 m/ n        DELAY(DELAY_TIME);
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

软硬产品代理咨询服务:声卡:雅马哈UR22C、罗兰声卡、福克斯特、艾肯、阿波罗 、M-audio 、普瑞声纳 、福克斯特、 达思冠系列 音箱:吸顶NS-IW560C、吸顶NS-IW660 、NS-AW350、低音NS-SW050、低音NS-SW100;JBL 吸顶8124、CSS-8006BM;香蕉猴 gibbon系列;普瑞声纳E5XT、E4.5、 E3.5BT 有线话筒:舒尔PGA27、PGA48、MV51、mv88、mv88+、SM27 ;森海E945 、MK4、E835S;舒伯乐top248s;罗德NT1-A、VIDEOMIC、VIDEOMIC GO、VideoMicro、VideoMic NTG 无线领夹麦克风:罗德 wireless go II 一拖一、一拖二;猛犸lark150 耳机:森海HD300 pro、美奇 CR-Buds 、索尼7506、爱科技K240S、K240 MKII、K271 MKII、K52、K72、K92、先锋、飞利浦 1:飞利浦会务通/会议摄像头/全向麦克风/执法仪/录音笔 2:洋铭便携式移动演播室 / 切换台 / 摄控一体摄像机 / 虚拟演播室 / 微金课教室 / 色键器 3:逻兰音视频切换台 / 声卡 / 电子鼓 /电钢琴 /耳机 4:Blackmagic专业摄影机 /调色台 / 切换台/ 广播级转换器 / 监视器 / 采集卡 5:索尼专业摄像机/佳能专业摄像机/松下专业摄像机/ insta360专业摄像机 6:话筒:铁三角/ 舒尔/ 森海塞尔 / AKG / RODE/ BBS 7:音响:YAMAHA/ 声艺 / 皇冠 /JBL / 真力/咪宝/BOSE /美奇 8:声卡:RME/羚羊/IXI /艾肯/PreSonus普瑞声纳/Focusrite福克斯特/YAMAHA/雅马哈/ickb 9:耳机:铁三角/beyerdynamic拜亚动力/AKG爱科技/索尼/RunningMan/美技 10:思锐三脚架 /防潮箱 /米泊三脚架/意美捷三脚架/曼富图三脚架 11:XSW系列,300.500代理商,EWD数字系列代理,6000.9000定制产品,还包销了全国三个型号:XSW1-825,EW100 G4-945,EWD- kk 205

小黑屋|手机版|Archiver|音频应用 (鄂ICP备13005321号-1)

Powered by Audio app

快速回复 返回顶部 返回列表