微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Keil C的AT24C02串行E2PROM的编程

基于Keil C的AT24C02串行E2PROM的编程

时间:05-24 来源:互联网 点击:

止传送数据并等待一个停止信号,此时主机必须发送一个停止信号给AT24C02,使其进入备用电源模式并使AT24C02处于已知的状态。由此可见,应答信号在AT24C02的读写工作中经常用到,根据图4应答信号的时序图。

可以编出一个检验是否有应答信号送来的操作函数如下:

3。2写操作

AT24C02允许有两种写操作方式:字节写和页写。

3。2。1AT24C02字节写操作。

其操作时序如图5所示。在字节写模式下,主机发送开始命令和AT24C02地址信息(“R/W”位置0)给AT24C02,主机在收到AT24C02产生应答信号后发送1个字节地址写入AT24C02的地址指针。主机在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主机产生停止信号后开始内部数据的擦写。在内部擦写过程中,AT24C02不再应答主机的任何请求。根据图5则可以编写出AT24C02的字节写操作函数W1Byte如下:

3。2。2AT24C02页写操作

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函数的时间就可以了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top