zoukankan      html  css  js  c++  java
  • 蓝桥继续水——E2PROM的驱动读写(AT24C02的使用)

    比赛的AT24C02内存最大有2Kbit,即256个Byte。使用的通讯协议是I2C协议。

     

    由于比赛中用到连续按页写,按页读的情况比较少见。(数据没有特别多需要保存)

    所以只在这里介绍以字节为单位的写(Byte Write)随意读(Random Read,当然我就是把它当一个字节的读)。

    1设备地址码:

    由硬件电路图知,0xa0,是我们需要的地址码。(暂不考虑最后1位是读/写命令的问题)

    2.字节写

    S(起始信号)→设备地址+0→A(接收从器件应答)→写入数据的地址→A(接收从器件应答)→写入的数据(8位)→A(接收从器件应答)→P(结束信号)

     函数如下:

    void At24c02Write(unsigned char addr,unsigned char dat)        //这里写得比较粗糙哇,等待应答函数可以用来判断,但是我没有判断,只是贴合时序要求了。
    {
    IIC_Start();
    IIC_SendByte(0xa0);
    IIC_WaitAck();
    IIC_SendByte(addr);
    IIC_WaitAck(); 
    IIC_SendByte(dat);
    IIC_WaitAck();
    IIC_Stop();
    }

    3.随意读

    S(起始信号)→设备地址+0→A(接收从器件应答)→需要读取数据的地址n→A(接收从器件应答)→S→设备地址+1(要求读flash)→A(接收从器件应答)→读取字节→A非(主器件发送非应答信号1)→P(结束信号)

    函数如下:

    unsigned char At24c02Read(unsigned char addr)          //读取的字节需要返回。
    {
    unsigned char num;
    IIC_Start();
    IIC_SendByte(0xa0);
    IIC_WaitAck();//???????
    IIC_SendByte(addr);
    IIC_WaitAck(); //????????

    IIC_Start();
    IIC_SendByte(0xa1);
    IIC_WaitAck();
    num=IIC_RecByte();
    IIC_SendAck(1);
    IIC_Stop();
    return num;
    }

  • 相关阅读:
    AJAX请求 $.post方法的使用
    通过jQuery Ajax使用FormData对象上传文件
    iframe跨域访问
    js编码解码
    ajax头像上传
    无边框窗体和用户控件以及权限
    只开启一个窗体和进程以及多线程的操作
    通过一个窗体操作另一个窗体
    流和打印控件用法
    listview和简单的记事本操作
  • 原文地址:https://www.cnblogs.com/page71/p/13968180.html
Copyright © 2011-2022 走看看