zoukankan      html  css  js  c++  java
  • IIC时序和24C02读写字节时序

        一年前刚学51单片机时,接触到了IIC时序和用IIC通信读写AT24C02的学习历程。那时刚刚大一,对数据线时钟线等概念不是很清楚,也没有分清IIC通信的底层时序和写24c02的时序为什么不同。 

        借着学stm32的机会,再简单整理一下现在对这两种时序的认识。

     ---IIC时序是一种底层的通信协议,它规定了数据0,1写入的有效性,起始终止等

     ---24C02的各种读写时序是该外设的读写规则,它规定了先写XX地址,再写XX地址,再写XX数据……这些顺序。它的各部分内容的写入读出都以IIC为基础

       简单说,IIC时序时24C02时序的基础构成,IIC时序是一种通信时序,是最底层的,类似于SPI等。而24C02作为一种外设,他有着自己的读写操作的规则,先写什么,再写什么,

    我(24C02)才能正确让你对我进行读写操作。而因为这款芯片用的通信方式是I2C传输,所以它时序里的写器件地址,写字地址,写数据内容无一例外用的都是I2C传输过去的。

       IIC时序理解起来很简单,程序也简单易写。

      下面简单分析一下24C02时序中的字节写时序和字节读时序。

     

    这是器件地址格式

    前四位固定为1010,,A2A1A0决定了IIC通信中作为从机的24C02的地址,最后一位R/W决定是对其进行读还是写。

    比如说当我们将24C02的A2A1A0都接地,那么从机的写地址就是1010 0000 即0xA0,而从机的读地址就是0xA1

    以写时序为例

    可以看到依次为起始信号,期间地址,应答,字节地址,应答,数据,应答,停止信号

    下面附一段代码

    //在AT24CXX指定地址写入一个数据
    //WriteAddr  :写入数据的目的地址    
    //DataToWrite:要写入的数据
    void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
    {                                                                                                  
        IIC_Start();  
        if(EE_TYPE>AT24C16)
        {
            IIC_Send_Byte(0XA0);        //发送写命令
            IIC_Wait_Ack();
            IIC_Send_Byte(WriteAddr>>8);//发送高地址
         }else
        {
            IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //发送器件地址0XA0,写数据   //为了兼容更大容量的芯片
        }     
        IIC_Wait_Ack();       
        IIC_Send_Byte(WriteAddr%256);   //发送字节地址
        IIC_Wait_Ack();                                                           
        IIC_Send_Byte(DataToWrite);     //发送字节                               
        IIC_Wait_Ack();                     
        IIC_Stop();//产生一个停止条件 
        delay_ms(10);     
    }

    这就是完全按照时序图写的对24C02指定字节写数据程序。同理读操作也一样。

    A2A1A0全部接地。

    其中的WriteAddr时写字节地址,也就是对24C02的256个字节中的哪一个进行写操作

      

  • 相关阅读:
    泛社交泛泛之交也很重要
    iOS 切后台挂机
    iOS 导航栏translucent用法
    iOS 中UIButton中文字换行
    iOS 给UIimageView添加UITapGestureRecognizer手势点击事件
    iOS15UITableView多了白条,导航栏和Tabbar变成白色和标题变黑处理总结属性变化和原来基本的导航栏属性总结记录(看到就更新)
    iOS延时定时功能
    iOS uiview添加背景图案
    iOS 导航栏返回把样式带回前面怎么办
    iOS 识别图片二维码demo,复制粘贴即用
  • 原文地址:https://www.cnblogs.com/lihaowww/p/9608713.html
Copyright © 2011-2022 走看看