新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Keil C的AT24C02串行E2PROM的编程

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

作者: 时间:2012-05-24 来源:网络 收藏

3。2。2页写操作

允许每次写入8个字节的页写操作模式,页写操作和字节写操作的时序差不多都相同,不同的是在于传送了一字节数据后并不产生停止信号,主机被允许再发送7个额外的字节。每发送一个字节数据后,产生一个应答位。如果在发送停止信号之前,主机发送超过8个字节,AT24C02内部地址计数器将自动翻转,先前写入的数据被覆盖。接收主机发送的停止信号后,AT24C02启动内部写周期将数据写到数据区。因此,可以编写一个页写操作的函数如下:

3。3读操作

AT24C02的读操作主要有立即地址读取、随机地址读取和顺序地址存取3种。立即地址读取方式由一个空字节序列来加载数据地址,当从机寻址码和数据寻址码随钟输入,并被确认时,从机必须产生另一个开始状态,通过发出一个确认读取的信号之后,数据便随时钟输出,数据的读取不通过确认状态应答,而是通过一个停止状态来应答。其他两种方式基本类似,只是不需要产生另一个开始状态,而顺序地址读取时,读出的是连续数据。读操作的时序图类似于图4的写操作时序,因此可编出读一个字节的函数RlByte如下:

当然,对于AT2402的读取往往不是只一个字节,更多的时候还是想一连几个字节一起读取,因此,可编出连续读取N个字节的函数如下:

4综合应用举例

以图6所示硬件电路为例,调用上面所编写的函数,将数据00H~07H送到AT24C02内部首地址为10H的地方存放,并将AT24C02内部以20H为首地址的连续8个字读到AT89C51的内部RAM20H~27H存放。其主程序如下:

其实,AT24CXX系列的芯片很多,但其不尽相同。由于C语言的要精准控制时间很不容易,因此往往有些工程人员碰到类似的I2C硬件结构,大多采用C语言与汇编语言混合的方法。经过笔者一番实践之后,觉得上述所编写的函数几乎可以用到所有I2C结构的硬件,只需要大家花一点时间调试下DELAY函数的时间就可以了。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭