IIC总线协议—读写EEPROM

1、I2C简介

I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

2、I2C物理层

I2C总线只需要两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。SDA线用来装载数据,SCL线用于控制收发。I2C支持多设备的总线。支持多个通讯主机及多个通讯从机。

3、I2C协议层

3.1、协议层总述

当时钟线为高电平时,数据线必须为固定状态。因为时钟线为高电平时,数据线任何变化都会产生开始信号、结束信号。

IIC总共有三种信号:

  • 开始信号:SCL=1 & SDA下降沿触发

  • 传输信号:SCL=0、SCL=1、SCL=0(传输SDA已装载数据)

  • 结束信号:SCL=1 & SDA上升沿触发

下图是IIC传输协议,图中Bn是数据,S代表Start,P代表Pause

3.2、Bn数据的读写

4、EEPROM简介

EEPROM是指带电可擦除可编程的只读存储器,是一类芯片的总称,具有掉电后数据不丢失的特性。

4.1、AT24C02芯片

stm32f103开发板采用的是AT24C02芯片进行I2C 协议传输。工作电压范围:1.8V ~6.0V。采用低功耗CMOS 技术制造。当WP 为高电平时,AT24C02进入写保护状态。

AT24C02芯片使用手册

https://github.com/ruanpei1010/3work_PDF/blob/master/26_AT24c02中文资料.pdf

引脚介绍:

编号 名称 功能
1-3 A0、A1、A2 A2、A1和A0输入引脚作为硬件地址,AT24C02都是0
4 GND 接地
5 SDA 装载串行数据
6 SCL 时钟线,上升沿写入,下降沿读出
7 WP 读写控制,接Vcc只读,接地或悬空正常读写
8 Vcc 高电平

4.2、AT24C02地址约定

芯片AT24C02在开发板上的外设地址,有如下约定:1010前四位固定,后四位A2\A1\A0用不到,R\W`是读写位(0代表写入,1代表读取)。也就是说AT24C02作为EEPROM外设,只可能出现写读两种地址:10100000和10100001(0xA0和0xA1)

4.3、例程代码

完整代码

完整代码挂在github,例程名DEMO05_IIC_EEPROM1

例程复刻野火stm32f103vet指南者代码,

开发环境:野火stm32f103vet6,gcc编译环境,CubeMX,dap仿真器

CubeMX配置IIC

相关HAL函数简介:

HAL_StatusTypeDef HAL_I2C_Mem_Write(...)

HAL_StatusTypeDef HAL_I2C_Mem_Write ( I2C_HandleTypeDef * hi2c,
uint16_t DevAddress,
uint16_t MemAddress,
uint16_t MemAddSize,
uint8_t * pData,
uint16_t Size,
uint32_t Timeout
)

@brief 向内存中写数据

@arg 第一个参数为 I2C 操作句柄。

@arg 第二个参数为 EEPROM 的写操作设备地址。

@arg 第三个参数为内存地址。

@arg 第四个参数为内存地址长度,EEPROM 内存长度为 8bit。

@arg 第五个参数为数据缓存的起始地址。

@arg 第六个参数为传输数据的大小。AT24C02 型号的芯片页写入时序最多可以一次 发送 8 个数据,其他芯片也有 16 位传输。

@arg 第七个参数为操作超时时间。

同理:

HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

完整代码挂在github,例程名DEMO05_IIC_EEPROM1

IIC总线协议—读写EEPROM的更多相关文章

  1. 十天学会单片机Day5 IIC总线AT2402芯片(EEPROM)应用

    1.采用串行总线技术可以使系统的硬件设计大大简化.系统的体积减小.可靠性提高.同时,系统的更改和扩充极为容易. 常用的串行扩展总线有: IIC (Inter IC BUS)总线.单总线(1-WIRE ...

  2. IIC总线协议---以存储芯片at24c64为例

    IIC总线协议 前言:年前给老师做个红外抄表系统,,现在对当中用到的一些模块总结一下. 1.只有在总线空闲时才允许启动数据传送. 2.在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允 ...

  3. IIC总线协议基础1

    文档类别 文档标识 IIC总线协议基础1 当前版本号 V0.2 作    者 Louis 完毕时间 2015-05-27 IIC总线协议基础1 IIC总线协议基础1. 1.            II ...

  4. 用I/O口模拟IIC总线协议遇到的一些问题

    最近做的一个项目,是基于IIC总线通信的传感器系统.由于另外一个传感器使用的是类IIC协议,而不是标准IIC,所以MCU不能与其通信,最后没有办法,只有通过I/O口模拟的方式实现IIC的总线通信.具体 ...

  5. IIC总线协议

    前言:年前给老师做个红外抄表系统,,现在对当中用到的一些模块总结一下. 1.只有在总线空闲时才允许启动数据传送. 2.在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变.时钟线 ...

  6. IIC总线协议和时序

    IIC标准速率为100Kbit/s,快速模式400Kbit/s,支持多机通信,支持多主控模块,但是同一时刻只允许有一个主控.由数据线SDA和时钟SCL构成串行总线:每个电路模块都有唯一地址.I2C设备 ...

  7. ARM裸板开发:07_IIC 通过IIC总线接口读写时钟芯片时间参数实现的总结

    问题一:程序直接在iRAM内部可正常执行,而程序搬移(Nand ->SDRAM)之后,就不能正常运行了 #define NAND_SECTOR_SIZE 2048 /* 读函数 */ void ...

  8. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

  9. C51—模拟IIC总线实现EEPROM存取数据

    a - 什么是IIC总线 -什么是EEPROM -IIC总线的通信格式 模块化设计注解 整体代码 - 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少.控制简单.器件封装形式小.通信 ...

  10. 【接口时序】6、IIC总线的原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE .ChipScope 硬件平台: 1. FPG ...

随机推荐

  1. PLC入门笔记8

    梯形图基础电路 起保停电路 多点起保停电路 互锁控制电路 周期闪烁电路 这应该是等价的!! 定时器的接力电路 同 延时接通,延时断开电路 同 保持信号变脉冲信号电路 定时器TON 接通延时变断开延时电 ...

  2. java-------token

    https://el-admin.vip/guide/hdsc.html#%E6%96%B0%E5%BB%BA%E6%A8%A1%E5%9D%97

  3. Verilog 变量声明与数据类型二

    Verilog 变量声明与数据类型二 上节介绍了wire,reg数据类型及其用法,并对变量定义中的向量的定义及使用做了说明.本节主要介绍其它几种类型.常用的有如下几种:整数integer,实数 rea ...

  4. CF1338E JYPnation

    题意:给定一个竞赛图,且其中不包含任意一组三元环 $(a, b, c)$,满足 $a \to d$,$b \to d$,$c \to d$,求每个点两两之间的距离之和(若无法达到即为 $614n$). ...

  5. 关于TIdTCPClient的几种方法

    关于TIdTCPClient的几种方法 收藏  其实Indy比较简单,但是可以提供的方法太多了.我找了很久,才搞明白. 比方说这个读取缓冲区的数据,就有很多种方法.相对于TTcpClient的几种方法 ...

  6. FreeType 矢量字体 测试移植(1)

    之前有做过 ascii 和汉字库的字体点阵在lcd上显示的例子,都是按照指定大小的字库的点阵来显示的,所以一但选定了字体文件后,就固定了大小,不可变化,当然也可以存放各种 大小的字体文件,但这样的话就 ...

  7. Error parsing HTTP request header 控制台报错分析与解决

    控制台报错信息: org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request hea ...

  8. Adams:一种使接触力(力矩等等)失效的方法

    1 第一步:点击"运行脚本". 2 第二步:右击选择"仿真脚本",点击"创建". 3 第三步:选择"脚本类型"为&quo ...

  9. KERNEL1

    WHAT IS KERNEL KERNEL是一个负责连接计算机硬件与软件的一个模块,当软件对硬件进行调用的时候,或者发送一些置零的时候,KERNEL负责将这些指令转化并发送给CPU或者计算机中其他硬件 ...

  10. SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突

    在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS