AT24C02读写操作 一

news/2024/7/24 5:09:23 标签: java, 服务器, 网络

//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();

}


http://www.niftyadmin.cn/n/5332664.html

相关文章

腾讯云 腾讯云服务器 - 腾讯云 产业智变·云启未来

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

HarmonyOS —— buildMode 设置(对比 Android Build Varient)

前言 在安卓中 Build Variant 主要依赖模块(module)中 build.gradle 的 BuildType 和 ProductFlavor 提供的属性和方法,我们可以使用 Build Type 可以配置不同的构建方式、ProductFlavor 主要用来进行多渠道打包。 在鸿蒙中要做到同样像效果…

【HTML】-- 01 初识HTML

HTML 1.初识HTML Hyper Text Markup Language:超文本标记语言 1.1 W3C标准 W3C World Wide Web Consortium(万维网联盟)成立于1994年,Web技术领域最权威和最具影响力的国际中立性技术标准机构http://www.w3.org/http://www.chinaw3c.org/ W3C标准包括…

C++核心编程之通过类和对象的思想对文件进行操作

目录 ​​​​​​​一、文件操作 1. 文件类型分类: 2. 操作文件的三大类 二、文本文件 1.写文件 2.读文件 三、二进制文件 1.写二进制文件 2.读二进制文件 一、文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将…

【QA】Linux-CentOS彻底卸载MySQL

文章概述 Linux系统下,若要卸载干净默认的MySQL,从而安装新的版本,需要卸载干净,不然会在不经意间影响后续安装 文章演示的系统:Linux CentOS 卸载步骤 1、查询是否安装了MySQL [rootlocalhost ~]# rpm -qa | gre…

鸿蒙OS4.0兼容性测试

背景 OpenHarmony兼容性测评主要是验证合作伙伴的设备和业务应用满足OpenHarmony开源兼容性定义的技术要求,确保运行在OpenHarmony上的设备和业务应用能稳定、正常运行,同时使用OpenHarmony的设备和业务应用有一致性的接口和业务体验。 OpenHarmony兼容…

电商平台spu和sku的完整设计

一、关于数据库表的设计 1、商品属性表 比如一个衣服有颜色、尺码、款式这个叫属性表 -- ------------------------ -- 商品属性表 -- ------------------------ DROP TABLE IF EXISTS attribute; CREATE TABLE attribute (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT CO…

博弈论题选

UTPC Contest 09-08-23 Div. 1 I 首先对于每一堆考虑SG函数 考虑如果只能取一个,那么SG函数是10101010…然后观察出这个东西具有奇偶性 考虑如果 f m o d 2 1 f~mod~21 f mod 21 那么奇偶性不变 考虑如果 f m o d 2 0 f~mod~20 f mod 20 那么考虑 f f f 位…