AT24C02读写操作 一

2024-01-18 16:52
文章标签 读写操作 at24c02

本文主要是介绍AT24C02读写操作 一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//AT24C02初始化

void AT24C02_Init(void)

{

    IIC_Init();

}

//AT24C02的字节写入   写一个字节

void AT24C02_WordWrite(uint8_Address,uint8_t Data)

{

        //1。主机发送开始信号

         IIC_StartSignal();

      //2.主机发送器件地址 写操作

         IIC_SentBytes(0xA0);

   //3.主机等侍从机应答

    if(IIC_WaitAck()==1)  //如果没有应答

     {

        printf("AT24C02 Ack Device Address Error\n");

         IIC_StopSignal();

      }

    printf(" AT24C02 Ack Device Address OK\N");

      //4.主机发送存储地址  写操作

      IIC_SendBytes(Address);

       

if(IIC_WaitAck()==1)  //如果没有应答

     {

        printf("AT24C02 Ack Data Address Error\n");

         IIC_StopSignal();

      }

    printf(" AT24C02 Ack Data Address OK\N");

//5主机发送存储数据   写操作

 IIC_SendBytes(Data);

if(IIC_WaitAck()==1)  //如果没有应答

     {

        printf("AT24C02 Ack Write Data Error\n");

         IIC_StopSignal();

      }

    printf(" AT24C02 Ack Write Date OK\N");

//6主机发送停止信号

             IIC_StopSignal();

  }

       //AT24C02读取一个字节   随机读

uint8_t   AT24C02_WordRead(uint8_t Address )

{

               

       uint8_t data=0;              

        

//1。主机发送开始信号

         IIC_StartSignal();

      //2.主机发送器件地址 写操作

         IIC_SentBytes(0xA0);

   //3.主机等侍从机应答

        if(IIC_WaitAck()==1)  //如果没有应答

             {

                printf("AT24C02 Ack Device Write  Address Error\n");

                 IIC_StopSignal();

                }

      printf(" AT24C02 Ack Device Write   Address OK\N");

//4.主机发送存储地址 打算读取数据的地址

       IIC_SendBytes(Address);

 //5主机等待应答

      if(IIC_WaitAck()==1)  //如果没有应答

             {

                printf("AT24C02 Ack Data Device Address Error\n");

                 IIC_StopSignal();

                }

          printf(" AT24C02 Ack Data  Device Address OK\N");

//6.主机再次发送开始信号

 IIC_StartSignal();

//7.主机发送器件地址 读操作

 IIC_SentBytes(0xA1);

 //8主机等待应答

      if(IIC_WaitAck()==0)  //如果没有应答

             {

                printf("AT24C02 Ack Device Read Address Error\n");

                 IIC_StopSignal();

                }

          printf(" AT24C02 Ack  Device Read Address OK\N");

  //9主机读取1个字节数据

                    data=IIC_ReadBytes( ); 当前读

   //10主机发送应答信号

                   IIC_MasterAck(1);

//11主机发送停止信号

                IIC_StopSignal();

return data

}

//读取n字节数据

void   AT24C02_RandomRead(uint8_t Address  uint8_t *RecvBuf uint8_t Dataleng)

{       

          

//1。主机发送开始信号

         IIC_StartSignal();

      //2.主机发送器件地址 写操作

         IIC_SentBytes(0xA0);

   //3.主机等侍从机应答

        if(IIC_WaitAck()==1)  //如果没有应答

             {

                printf("AT24C02 Ack Device Write  Address Error\n");

                 IIC_StopSignal();

                }

      printf(" AT24C02 Ack Device Write   Address OK\N");

//4.主机发送存储地址 打算读取数据的地址

       IIC_SendBytes(Address);

 //5主机等待应答

      if(IIC_WaitAck()==1)  //如果没有应答

             {

                printf("AT24C02 Ack Data Device Address Error\n");

                 IIC_StopSignal();

                }

          printf(" AT24C02 Ack Data  Device Address OK\N");

//6.主机再次发送开始信号

 IIC_StartSignal();

//7.主机发送器件地址 读操作

 IIC_SentBytes(0xA1);

 //8主机等待应答

      if(IIC_WaitAck()==0)  //如果没有应答

             {

                printf("AT24C02 Ack Device Read Address Error\n");

                 IIC_StopSignal();

                }

          printf(" AT24C02 Ack  Device Read Address OK\N");

  //9主机读取1个字节数据

Datalen=Datalen-1;

while(Datalen--)

{

                    *IRecvBuf++=IIC_ReadBytes( ); 

                          IIC_MasterAck(0);          //表示主机收到

}

*IRecvBuf=IIC_ReadBytes( );   //读最后一个字节

   //10主机发送应答信号

                   IIC_MasterAck(1);

//11主机发送停止信号

                IIC_StopSignal();

return data

}

//uint8_t AT24C02_CurrentAddressRead(void) 当前读 保存当前下一个地址

{     

                             uint8_t data=0;              

        

//1。主机发送开始信号

         IIC_StartSignal();

      //2.主机发送器件地址 读操作

         IIC_SentBytes(0xA1);

   //3.主机等侍从机应答

        if(IIC_WaitAck()==1)  //如果没有应答

             {

                printf("AT24C02 Ack Device Address Error\n");

                 IIC_StopSignal();

                }

printf(" AT24C02 Ack Device  Address OK\N");

      //4.主机读取1个字节数据

                    data=IIC_ReadBytes(); 当前读 读当前下一个地址

   //5主机发送应答信号

                   IIC_MasterAck(1);

//6主机发送停止信号

                IIC_StopSignal();

}

这篇关于AT24C02读写操作 一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/619646

相关文章

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

基于 rt-thread的I2C操作EEPROM(AT24C02)

一、AT24C02 The AT24C01A/02/04/08A/16A provides 1024/2048/4096/8192/16384 bits of serial electrically erasable and programmable read-only memory (EEPROM) organized as 128/256/512/1024/2048 words of 8 b

【spark 读写数据】数据源的读写操作

通用的 Load/Save 函数 在最简单的方式下,默认的数据源(parquet 除非另外配置通过spark.sql.sources.default)将会用于所有的操作。 Parquet 是一个列式存储格式的文件,被许多其他数据处理系统所支持。Spark SQL 支持对 Parquet 文件的读写还可以自动的保存源数据的模式 val usersDF = spark.read.load("e

C++对文件进行读写操作

C++对文件进行读写操作 std::ifstream infile; //输入流infile.open(conf, std::ios::in);if(!infile.is_open ()){std::cout << "Open file failure" << std::endl;}else{while (!infile.eof()) // 若未到文件结束一直循

java多线程环境下对变量的读写操作的原子性问题

本文转载自:http://www.cnblogs.com/qlee/archive/2011/09/13/2174434.html 以下多线程对int型变量x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; C. ++x; D. x=1; 从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。   01  x = y;  02  mov ea

Go 1.19.4 文件读写操作-Day 14

1. 文件读写操作 在我们对一个文件进行读写操作前,有一个必做步骤,那就是要先打开文件。 打开文件主要使用os模块的 Open 和 OpenFile 。 Open:适合读。OpenFile:适合读写。 2. 打开文件 2.1 Open 作用:         以只读方式打开文件,权限使用文件默认权限。 下面是Open的源码: func Open(name string) (*Fil

51单片机-第九节-AT24C02存储器(I2C总线)

一、AT24C02存储器介绍: AT24C02是存储器,且掉电不丢失,可存储单片机要永久保存的数据。 通讯接口:I2C总线。 容量:256字节。 二、存储器简化模型: 引脚及应用电路: 三、I2C总线: 1.介绍: (1)I2C总线 (Inter IC BUS)是由Philips公司开发的一种通用数据总线 (2)两根通信线:SCL(Serial Clock)、SDA(Se

三、IIC总线协议——2、AT24C02

一、AT24C02介绍         EEPROM是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载。         AT24C02是一个2K bit的EEPROM存储器,使用IIC通信方式。         A0/1/2 : 设备地址决定引脚。、         WP : 写保护引脚。         SCL : 时钟线。         SDA

C++文件简单的读写操作实例

#include <iostream>#include <fstream>using namespace std;void main(){// 写操作ofstream in;in.open("com.txt", ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建if (in.fail()){cout << "ERROR!";}in

文件读写操作汇总解析

转载博客:http://www.cnblogs.com/lianghui66/archive/2013/09/05/3303546.html InputStream 字节流输入类,读取byte数组 Reader 字符流读取类,读取Char数组和String对象 FileInputStream 文件输入字节流 BufferedReader 带缓冲的字符流读取 InputStre