IIC读写EEPROM

本文详细介绍了IIC通信协议,包括其物理层特性(如多主机、两条数据线、地址分配和仲裁机制)、协议层时序、以及EEPROM(如24LC04B)的工作原理。还涉及了部分代码分析,展示了模块设计、接口逻辑和控制流程,以及仿真示例。
摘要由CSDN通过智能技术生成

一.IIC通信协议

1.1 IIC通信协议简介

  • IIC:(Inter-Integrated Circuit)即集成电路总线,是一种两线
    式串行总线,由 PHILIPS 公司开发,用于连接微控制器及其外围设备。
    多用于主机和从机在数据量不大且传输距离短的场合下的主从通信
  • IIC 总线由数据线 SDA 和时钟线 SCL 构成通信线路,既可用于
    发送数据,也可接收数据,是一种半双工通信协议。

1.2物理层

在这里插入图片描述

  • 我们需要了解的信息如下

    1.IIC支持多主机多从机

    2.IIC有两条线,一条SCL串行时钟线,用于数据收发同步;一条SDA串行数据线,用来表示数据

    3.每个连接到IIC总线的设备都有一个唯一的地址(ID),主机可以通过地址与不同的从机建立连接

    4.IIC 总线通过上拉电阻接到电源。当 IIC 设备空闲时,设备会输出高阻态,当所有设备都空闲,都输出高阻态时,由上拉电阻把 IIC总线拉成高电平。

    5.IIC总线有仲裁机制:当多个主机同时发起传输时,触发仲裁机制,最终只给一个主机授权。

    6.具有三种传输模式,每种传输模式对应的传输速率不同

    传输模式传输速率
    标准模式100kbit/s
    快速模式400kbit/s
    高速模式3.4Mbit/s

1.3协议层

  • SCL/SDA时序如下(单字节)
    在这里插入图片描述

  • 我们分段理解一下(其实可以用上课提问的过程类比:老师为主机,学生为从机)

    1.空闲状态:SCL和SDA都为高电平

    2.起始位:在SCL为高电平时,SDA被拉低(这就相当于老师说“要开始抽人提问了”,学生们这时做好被抽问的准备)

    3.数据传输:SCL低电平时数据变化,SCL高电平时采样(主机进行数据读写,IIC协议规定,数据传输时先发送寻址字节,即7位从机地址+0/1。其中0表示主机写,1表示主机读。寻址字节发送完成后才是数据字节)(主机发送寻址字节时就好比是老师抽到一个学生,后续发送写入的数据就可以看作是问题,那么主机读回的数据就可以看作是学生回答的答案)

    4.应答位:发送端每发送一个字节就需要由接收端反馈一个应答信号。应答位为0表示成功接收(ACK),应答位为1时表示没有成功接收(NO ACK)(类比到提问就可以理解为学生是否听清了老师的问题/老师是否收到了学生的回答)

    5.停止位:在SCL为高电平时,SDA拉高,回到空闲状态(这就相当于老师说“提问到此结束")

1.4写操作传输格式

在这里插入图片描述

1.5读操作传输格式

在这里插入图片描述

1.6先写后读传输格式

在这里插入图片描述

二.EEPROM简介(手册分析)

  • ​EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。本项目中使用的是24LC04B

  • 器件ID(可以视为是7’b1010000加上一位的0/1)
    在这里插入图片描述

  • 单字节写
    在这里插入图片描述

  • 页写
    在这里插入图片描述

  • 当前地址读
    在这里插入图片描述

  • 随机地址读
    在这里插入图片描述

  • 顺序地址读
    在这里插入图片描述

  • 24LC04B存储空间包括2个block,每个block中包含256个字节
    在这里插入图片描述

三.部分代码分析

3.1模块设计

在这里插入图片描述

3.2接口模块

  • 状态转移
    在这里插入图片描述

状态解析(针对主机):
在这里插入图片描述

状态转移条件:
在这里插入图片描述

  • 根据传输速率计算传输1bit需要的时间
    在这里插入图片描述

在这里插入图片描述

  • 命令

    在这里插入图片描述

在这里插入图片描述

  • 三态门
    在这里插入图片描述

在这里插入图片描述

  • 考察输出
    在这里插入图片描述

  • 考察输入
    在这里插入图片描述

3.3control模块

  • 状态转移
    在这里插入图片描述

状态转移条件
在这里插入图片描述

  • 字节计数器复用
    在这里插入图片描述

  • task

    在这里插入图片描述

  • 写入数据
    在这里插入图片描述

四.源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值