at24c02是美国atmel公司的低功耗cmos型e2prom,内含256×8位存储空间,具有工作电压宽(2.5~5.5 v)、擦写次数多(大于10 000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了i2c总线式进行数据读写的串行器件,占用很少的资源和i/o线,并且支持在线编程,进行数据实时的存取十分方便。
1 at24c02的引脚功能
at24c02引脚如图1所示。
他的的1、2、3脚是3根地址线,用于确定芯片的硬件地址。第8脚和第4脚分别为正、负电源。第5脚sda为串行数据输入/输出,数据通过这根双向i2c总线串行传送。第6脚scl为串行时钟,sda和scl为漏极开路端,在实际的应用当中都需要和正电源间各接一个5.1 kω的电阻上拉。第7脚为wp写保护端,接地时允许芯片执行一般的读写操作;接正电源时只允许对器件进行读操作。
2 at24c02的内部结构
图2为at24c02的内部结构图。
启动、停止逻辑单元 接收数据引脚sda上的电平信号,判断是否进行启动和停止操作串行控制逻辑单元 根据scl,sda电平信号以及“启动、停止逻辑”部件发出的各种信号进行区分,并排列出有关的“寻址”、“读数据”和“写数据”等逻辑,将他们传送到相应的操作单元。例如:当操作命令为“寻址”时候,他将通知地址计数器加1,并启动“地址比较”器进行工作。在“读数据”时,他控制“dout/确认逻辑”单元;在“写数据”时候,他控制“高压泵/定时”电路,以便向e2prom电路提供编程所需要的高电压。
地址/计数器单元 产生访问e2prom所需要的存储单元的地址,并将其分别送到x译码器进行字选,送到y译码器进行位选。
高压泵/定时单元 由于e2prom数据写入时候需要向电路施加编程高电压,为了解决单一电源电压的供电问题,芯片生产厂家采用了电压的片内提升电路。电压的提升范围一般可以达12~21.5 v。
dout/确认逻辑单元 地址和数据均以8位二进制码串行输入/输出。数据传送时,每成功传送一个字节数据后,接收器都必须产生一个应答信号。在第9个时钟周期时将sda线置于低电压作为应答信号。
at24c02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。
i2c总线是一种用于ic器件之间连接的二线制总线。他通过sda(串行数据线)及scl(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。 at24c02正是运用了i2c规程,使用主/从机双向通信,主机(通常为单片机)和从机(at24c02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过scl引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ack。
at24c02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。控制字各位的具体作用见表1。
由上表可知,控制字的高4位为at24c02的识别位,是不能更改的;而第a0,a1,a2片选位,最后是一位是读写控制位,当其为1时,进行的是读操作,反之将要进行的是写操作。
3 at24c02的读写操作
3.1 开始位、停止位和确认位的编程
总线scl和sda一般由上拉电阻拉为高电平,只有在scl为低电平的周期内,sda引脚上的数据才有效。而当scl为高电平期间sda引脚上产生的电平变化则表示i2c总线工作的“开始”或“停止”两种状态:当scl为高平时,sda由高电平转向低电平时表示“开始”状态,而由低电平转向高电平时表示“停止”状态,其时序如图3所示。
由时序图可以编写由主机发给at24c02的开始信号和停止信号的keil c语言函数如下:
同时,at24c02与主机进行信息交换,还需要另外一个“确认信号(ack)”的状态。i2c总线数据传送时,每成功地传送一个字节数据后,at24c02都必须产生一个应答信号,应答的器件在第9个时钟周期时将sda线拉低,表示其已收到一个8位数据。at24c02在接收到起始信号和与之匹配的地址之后就会响应第一个应答信号;如果at24c02被设置为写操作,则每接收一个字节之后响应一个应答信号;当at24c02被设置在读模式时,则在发送一个字节的数据后会释放sda线,并监视主机发过来的应答信号,一旦接收到应答信号,at24c02继续发送数据,如主机没有发送应答信号,at24c02将停止传送数据并等待一个停止信号,此时主机必须发送一个停止信号给at24c02,使其进入备用电源模式并使at24c02处于已知的状态。由此可见,应答信号在at24c02的读写工作中经常用到,根据图4应答信号的时序图。
可以编出一个检验是否有应答信号送来的操作函数如下:
3.2 写操作
at24c02允许有两种写操作方式:字节写和页写。
3.2.1 at24c02字节写操作。
其操作时序如图5所示。在字节写模式下,主机发送开始命令和at24c02地址信息(“r/w”位置0)给at24c02,主机在收到at24c02产生应答信号后发送1个字节地址写入at24c02的地址指针。主机在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。at24c02再次应答,并在主机产生停止信号后开始内部数据的擦写。在内部擦写过程中,at24c02不再应答主机的任何请求。根据图5则可以编写出at24c02的字节写操作函数w1byte如下:
3.2.2 at24c02页写操作
at24c02允许每次写入8个字节的页写操作模式,页写操作和字节写操作的时序差不多都相同,不同的是在于传送了一字节数据后并不产生停止信号,主机被允许再发送7个额外的字节。每发送一个字节数据后,at24c02产生一个应答位。如果在发送停止信号之前,主机发送超过8个字节,at24c02内部地址计数器将自动翻转,先前写入的数据被覆盖。接收主机发送的停止信号后,at24c02启动内部写周期将数据写到数据区。因此,可以编写一个页写操作的函数如下:
3.3 读操作
at24c02的读操作主要有立即地址读取、随机地址读取和顺序地址存取3种。立即地址读取方式由一个空字节序列来加载数据地址,当从机寻址码和数据寻址码随钟输入,并被确认时,从机必须产生另一个开始状态,通过发出一个确认读取的信号之后,数据便随时钟串行输出,数据的读取不通过确认状态应答,而是通过一个停止状态来应答。其他两种方式基本类似,只是不需要产生另一个开始状态,而顺序地址读取时,读出的是连续数据。读操作的时序图类似于图4的写操作时序,因此可编出读一个字节的函数rlbyte如下:
当然,对于at2402的读取往往不是只一个字节,更多的时候还是想一连几个字节一起读取,因此,可编出连续读取n个字节的函数如下:
4 综合应用举例
以图6所示硬件电路为例,调用上面所编写的函数,将数据00h~07h送到at24c02内部首地址为10h的地方存放,并将at24c02内部以20h为首地址的连续8个字读到at89c51的内部ram20h~27h存放。其主程序如下:
其实,at24cxx系列的e2prom芯片很多,但其编程不尽相同。由于c语言的编程要精准控制时间很不容易,因此往往有些工程人员碰到类似的i2c硬件结构,大多采用c语言与汇编语言混合编程的方法。经过一番实践之后,觉得上述所编写的函数几乎可以用到所有i2c结构的硬件,只需要大家花一点时间调试下delay函数的时间就可以了。
重庆湃芯创智研发出血氧仪核心芯片 填补国内空缺
浅谈电脑电源保护机制种类
吴明霞女士出任美光中国区总经理
2023年无人机市场规模有望破千亿元,载人自动驾驶飞行器还远吗
苹果iOS 14或有新的增强现实应用
AT24C02的引脚功能和在Keil C中的程序编写步骤
土壤检测之土壤酸化的原因、影响及调控
全球个人电脑出货量Q3下降 9%,市场已触底
来自可拉伸原子片的光将应用于量子技术领域
关于视觉自动检测的三种解决方案的简单介绍
TWS、5G需求 驱动石英晶振量价齐升
平面磁集成EMI滤波器的非接触电磁干扰对滤波性能的影响
VIP+MIPI,实现汽车和数字生态系统功能安全
MOS管和反相器的输出特性曲线讲解
熔融碳酸盐燃料电池
苹果已在App Store上发布其基于云的游戏应用程序迈出了重要的一步
欧司朗智慧产品正式落地,助力中国智慧城市建设
5G EPS Fallback语音方案流程总结
国芯思辰|中科阿尔法霍尔电流传感器AH911应用于烹饪机,常温误差0.4%
Wi-Fi 7 将如何改变游戏业