基于I^2C接口EEPROM读写控制器设计

合集下载

I2C读写EEPROM文档说明

I2C读写EEPROM文档说明

通过I2C通讯协议对EEPROM进行读写操作发送串口进行通讯一.描述I2CI2C协议有启动,终止,应答,非应答四种信号,有按位发送数据,按位接收数据,有读操作和写操作。

1.启动I2C程序如下,保持SCL为高电平,SDA为高电平,当检测到SDA下降沿时,启动传送,如果2个信号没有被高则返回0。

程序启动成功返回1。

uint8 I2C_Start(void){CyDelayUs(10);SDA_Write(1);CyDelayUs(10);SCL_Write(1);CyDelayUs(10);if ( SDA_Read() == 0) return 0;if ( SCL_Read() == 0) return 0;SDA_Write(0);CyDelayUs(10);SCL_Write(0);CyDelayUs(10);return 1;}上面是模仿I2C启动时序2.终止传送程序如下SDA保持低电平SCL保持高电平而后拉高SDA,系统检测到SDA上升沿则终止传送。

void I2C_Stop(void){CyDelayUs(10);SDA_Write(0);CyDelayUs(10);SCL_Write(1);CyDelayUs(10);SDA_Write(1);CyDelayUs(10);}3.模拟应答信号,让SDA的低电平时间大于SCL的高电平时间,即可应答;也就是SDAvoid I2C_Ack(void){CyDelayUs(10);SDA_Write(0);CyDelayUs(10);SCL_Write(1);CyDelayUs(10);SCL_Write(0);CyDelayUs(10);}4.模拟非应答信号,让SDA的高电平时间大于SCL高电平时间,就是非应答void I2C_Nack(void){CyDelayUs(10);SDA_Write(1);CyDelayUs(10);SCL_Write(1);CyDelayUs(10);SCL_Write(0);CyDelayUs(10);}5.按位发送数据,按位发送数据的要求是数据位高电平的时间大于SCL,SCL高电平时不允许数据位电平变化,只有SCL低电平时才可以任意变换。

(完整版)课程设计 基于I2C协议的EEPROM读写功能实现毕业论文

(完整版)课程设计 基于I2C协议的EEPROM读写功能实现毕业论文

目录一.设计要求 ............................................................二.设计目的 ............................................................三.器件EEPROM的介绍....................................................1.EEPROM简介........................................................2.EEPROM24XX系列功能概述............................................四.I2C协议的介绍.......................................................1.I2C协议总线特征...................................................2. I2C协议工作原理..................................................3.I2C协议总线基本状态...............................................4.寻址约定..........................................................五.EEPROM读写功能实现..................................................1.写操作............................................................(1)字节写操作...................................................(2)页写入操作...................................................2.确认查询..........................................................3.读操作............................................................(1)当前地址的读操作.............................................(2)随机读操作...................................................(3)连续读操作...................................................六.具体设计过程.........................................................1.程序流程图........................................................2.系统组成模块结构及功能............................................(1)函数定义.....................................................(2)主函数main( )...............................................3.源程序............................................................七.设计心得体会.........................................................八.参考文献 ............................................................基于I2C协议的EEPROM读写功能实现一.设计要求1)通过软件基于I2C协议对EEPROM读写功能的实现。

基于STM32的IIC_EEPROM案例说明

基于STM32的IIC_EEPROM案例说明

基于STM32的IIC_EEPROM案例说明STM32是一系列由STMicroelectronics开发的32位ARM Cortex-M处理器的微控制器。

它具有高性能、低功耗和丰富的外设。

其中一个外设是I2C接口,可以用于连接外部器件,如EEPROM。

EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,可以通过电量抹除并重新编程。

本文将说明如何在STM32微控制器上使用I2C接口来读取和写入EEPROM的数据。

以下是一个I2CEEPROM案例的步骤:1.硬件连接:找到适当的引脚连接STM32和EEPROM。

根据STM32型号和EEPROM的规格书,将SCL引脚连接到STM32的相应引脚,将SDA引脚连接到STM32的相应引脚。

确保EEPROM上的地址引脚正确连接到STM32的引脚,以选择EEPROM的地址。

另外,确保STM32的引脚配置正确。

2.初始化I2C外设:在STM32的代码中,首先需要初始化I2C外设。

这可以通过配置I2C控制器的寄存器来完成。

这些寄存器包含有关时钟速度、地址模式和使能I2C控制器的设置选项。

3.选择EEPROM地址:通过向I2C总线发送一个特定的命令字节,可以选择EEPROM的地址。

这个命令字节包含I2C总线上的设备地址和寻址模式。

4.读取EEPROM数据:为了从EEPROM读取数据,STM32将发送一个读取命令字节,将该命令字节传送到EEPROM,然后从EEPROM读取数据。

在读取数据之前,需要设置读取数据的长度和目标缓冲区。

5.写入EEPROM数据:为了向EEPROM写入数据,STM32将发送一个写入命令字节,将该命令字节传送到EEPROM,然后将数据写入EEPROM。

在写入数据之前,需要设置写入数据的长度和源缓冲区。

6.处理错误和超时:在进行I2CEEPROM读取和写入操作时,可能会出现错误和超时。

基于IIC总线的EEPROM读写驱动

基于IIC总线的EEPROM读写驱动

/****************************************************************************** * 对基于IIC总线的EEPROM进行读写C文件** file: eeprom_device.c* name: zhzhchang* time: 2010.3.17* V1.0* blogs: /zhzht19861011* Nots: 本文件基于at24c02,仅寻址一个字节地址,若是使用大容量eeprom器件,只需增加相应地址即可******************************************************************************* **/#include<reg52.h>#include"eeprom_device.h"//模拟IIC总线延时程序,对不同的CPU应根据相应的主频改变此处的延时时间//at24c512B: t(LOW)=0.4um,t(HIGH)=0.4us,t(WR)=5msvoid delay(void){unsigned char i;for(i=0;i<5;i++);}void mDelay(unsigned char j)//A normal delay{unsigned int i;for(;j>0;j--){for(i=0;i<125;i++){;}}}//启动IIC总线//时钟线保持高电平期间,数据线电平从高到低的跳变作为I2C 总线的起始信号void Start(void){Sda=1;delay();Scl=1;delay();delay();Scl=0;}//停止IIC总线//时钟线保持高电平期间,数据线电平从低到高的跳变作为I2C 总线的停止信号void Stop(void){Sda=0;delay();Scl=1;delay();Sda=1;delay();Scl=0;}//应答IIC总线void Ack(void){Sda=0;delay();Scl=1;delay();Scl=0;delay();}//非应答IIC总线void NoAck(void){Sda=1;delay();Scl=1;delay();Scl=0;delay();}/*发送完一个字节后检验设备的应答信号*/bit Check_Ack (void){bit q;Sda=1;Scl=1;delay();q=Sda;delay();Scl=0;delay();if (q==1)return 0;elsereturn 1;}//发送一个字节void Send(unsigned char Data){unsigned char BitCounter=8;unsigned char temp;do{temp=Data;Scl=0;delay();if((temp&0x80)==0x80)Sda=1;elseSda=0;Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}//读一个字节并返回变量unsigned char Read(void){unsigned char temp=0;unsigned char temp1=0;unsigned char BitCounter=8;Sda=1;do{Scl=0;delay();Scl=1;delay();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}//write to ROM,循环写入,每循环一次写一个字节void WrToROM(unsigned char Data[],unsigned char Address,unsigned char Num) {unsigned char i;for(i=0;i<Num;i++){Start();Send(AddWr);//Write AddressAck();Send(Address+i);//Write sub AddressAck();Send(*(Data+i));//Write DataAck();Stop();mDelay(20);}}//读一个字节void RdFromROM(unsigned char Data[],unsigned char Address){bit ack;Start();Send(AddWr);//Write Addressack=Check_Ack();Send(Address);//Write sub Addressack=Check_Ack();Start();Send(AddRd);//Read Addressack=Check_Ack();*(Data)=Read();//Read DataScl=0;NoAck();Stop();}//a按页写//一次可以写一页,一页的大小根据芯片而定.//比如at24c02,每页8个字节,可以一次写入地址00H~07H共8个字节数据,当然,也可以从04H连续写4个字节数据//但是若从04H写入6个字节的数据时,写入数据的最后两个数据会写入00H,01H内,即超过一页地址的数据会在本页内循环写void WrToROMPage(unsigned char Data[],unsigned char Address,unsigned char Num){unsigned char i;bit ack=1;Start();Send(AddWr);//Write Addressack=Check_Ack();Send(Address);//Write sub Addressack=Check_Ack();for(i=0;i<Num;i++){Send(*(Data+i));//Write Dataif(!Check_Ack())Stop();}Stop();mDelay(20);}//连续读void RdFromRomNByte(unsigned char Data[],unsigned char Address,unsigned char Num) {unsigned char i;bit ack=1;Start();Send(AddWr);//Write Addressack=Check_Ack();Send(Address);//Write sub Addressack=Check_Ack();Start();Send(AddRd);//Read Addressack=Check_Ack();for(i=0;i<Num;i++){*(Data+i)=Read();//Read DataScl=0;if(i!=Num-1){Ack();}elseNoAck();}Stop();}头文件:/****************************************************************************** * 对基于IIC总线的EEPROM进行读写头文件** file: eeprom_device.h* name: zhzhchang* time: 2010.3.17* blogs: /zhzht19861011* V1.0******************************************************************************* **/#define AddWr 0xae //Write Address//8 位从器件地址的高4 位固定为1010,接下来的3位A2 A1 A0 为器件的地址位用来定义哪个器件//以及器件的哪个部分被主器件访问,8位地址的最低位作为读写控制位'1' 表示对从器件进行读操作,'0' 表示对从器件进行写操作.#define AddRd 0xaf //Read Address//全局变量sbit Sda=P1^2; //定义总线连接端口sbit Scl=P1^1; //定义时钟线sbit WP=P1^0; //写保护管脚void mDelay(unsigned char j);//A normal delay//write to ROMvoid WrToROM(unsigned char Data[],unsigned char Address,unsigned char Num);//任意读一个字节void RdFromROM(unsigned char Data[],unsigned char Address);//按页写void WrToROMPage(unsigned char Data[],unsigned char Address,unsigned char Num);//连续读void RdFromRomNByte(unsigned char Data[],unsigned char Address,unsigned charNum);。

I2C EEPROM读写设计与制作

I2C EEPROM读写设计与制作

四川理工学院课程设计书学院计算机学院专业计算机科学与技术班级2013级 4 班课程嵌入式系统软硬件开发及应用实践题目I2C EEPROM读写设计与制作教师杨维剑学生龚程金黄雨杨坤陈超王俊枭摘要随着计算机系统及电子系统的飞速发展,信息的存储也越来越重要,EEPROM (电可擦写可编程只读存储器)是可用户更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写),断电后存在其中的数据不会丢失,通常用于存放硬件信息,如mac地址、BIOS芯片等,并在嵌入式ARM系统中应用广泛,IIC作为一种常见的总线技术,其方便扩展外围设备的特性使得其应用广泛,AT24C02是一款性价比超高的IIC接口EEPROM,擦写次数多、稳点不易丢失数据,本文将设计并制作ARM系统,并在Linux中实现I2C EEPROM读写。

关键词:ARM,EEPROM,IIC,AT24C02,Linux目录一、LinuxI2C驱动--概述 (1)1.1 设计任务与要求 (1)1.2 I2C (1)1.3 硬件 (1)1.4 软件 (1)二、硬件电路设计 (2)2.1 电路设计要求 (2)2.2 原理图的绘制 (2)2.2.1电源接口 (2)2.2.2UART接口 (3)2.2.3AT24C02接口 (3)2.3 PCB板的制作 (3)三、LinuxI2C驱动--I2C总线 (5)3.1 I2C总线物理结构 (5)3.2 I2C总线特性 (5)3.3 开始和停止条件 (6)3.4 数据传输格式 (6)3.5 响应 (7)3.6 总线仲裁 (8)四、LinuxI2C驱动--解析EEPROM的读写 (9)4.1 概述 (9)4.2 设备地址 (9)4.3 读eeprom (9)4.4 写eeprom (10)五、LinuxI2C驱动--访问eeprom (10)5.1 通过sysfs文件系统访问I2C设备 (10)5.2 通过devfs访问I2C设备 (11)5.3 总结 (11)六、LinuxI2C驱动--浅谈LinuxI2C驱动架构.. 126.1 I2C体系结构 (13)6.2 I2C重要数据结构 (13)七、LinuxI2C驱动--I2C设备驱动 (14)7.1 eeprom板级设备资源 (14)7.2 AT24C02 EEPROM 的I2C设备驱动 (14)7.2.1 at24_driver (14)7.2.3 at24_bin_read() (15)7.2.4 at24_bin_write() (15)7.3 总结 (15)八、LinuxI2C驱动--I2C总线驱动 (16)8.1 三星S3C2410 i2c适配器的硬件描述 (16)8.2 i2c总线驱动的加载/卸载 (17)8.3 i2c总线驱动的probe (17)8.4 启动i2c传输 (18)8.5 通过中断来推进i2c的传输 (18)课程设计体会 (19)参考文献 (20)附录 A (21)附录 B (29)一、LinuxI2C驱动--概述1.1 设计任务与要求1)通过软件基于I2C协议对EEPROM读写功能的实现。

基于IIC协议的EEPROM读写功能的实现

基于IIC协议的EEPROM读写功能的实现

基于IIC协议的EEPROM 读写功能的实现(一)设计要求能用IIC协议实现对EEPROM的数据储存与读出。

(二)设计目的1. 通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《单片机原理与应用》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了单片机的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!2. 通过课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门课程的学习和毕业设计打下坚实基础。

3、知道IIC串行总线协议原理与运用,明白EEPROM的存储结构,知道用keil51软件和proteus仿真进行连调,实习单片机开发。

(三) 所用仪器设备电脑、keil51和proteus软件(四) 方案选择由于用IIC串行总线读写EEPROM我们不能直观的观察他们的读写现象,所以我们选择的是用液晶1602进行读写显示,用4*4矩阵键盘进行读写控制和数字的输入,选用AT89C51为主控制器,选用AT24C02进行存储。

所以这个课程设计主要分为三个模块:1、IIC串行总线读写EEPROM模块;2、液晶显示模块;3、矩阵键盘控制模块;(五) 具体的设计过程现将IIC协议与AT24C02的工作原理讲解如下,关于液晶与AT89C51的工作原理这里不再讲解。

一、IIC串行总线的组成与通信原理I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。

I2C总线只有两根双向信号线。

一根是数据线SDA,另一根是时钟线SCL。

I2C总线通过上拉电阻接正电源。

当总线空闲时,两根线均为高电平。

连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

基于I 2C总线协议的E 2PROM读写器设计

基于I 2C总线协议的E 2PROM读写器设计
l ^
传 输 数 据 和 发送 停 止 信 号 四个 部 分 当S L 号 高 电平 时 ,S A 号 从 高 电平 向低 电 平 切 换 表 示 C信 D信
起 始 条 件 ; 当S L 号 高 电 平 时 ,S A 号 由 低 电平 向 高 电平 切 C信 D信 换 表 示 停 止 条 件 。数 据 传 输 过 中 , S A 号 必 须 在 时 钟 的 高 电 D信 平 周 期 保 持 稳 定 ,S A 号 的 高 或 低 电平 状 态 只 有 在 S L 号 是 D信 C信 低 电平时才能改变 。 1 1 总 线 写 时 序 . 2 1 C
1I 总 线读 写 时序 C z
组 成 IC 线 的 两 根 信 号 线S A DC 都 是 双 向线 路 ,都 通 过 。总 D ̄SL 个 电流 源 或 上 拉 电 阻 连 接 到 正 的 电 源 电压 。 当 总 线 空 闲 时 , 两 条 线 路 都 是 高 电平 。 .

Sjb d WR C j_dr AK jba WR AK a AK id / K adjC :S 7jd /jC :da Ci 7 t A R a d t t P
真结 果表 明EP ROM读写 器能够 满足I 总线协议 的 电气特性 以及传输规 范 。 c
关键 词 : I 2 线 ;Vei gHDL 总 线 时 序 C总 ro l ;
中图 分类 号 :T 3 4 文献标 识码 :A 文 章编 号 :1 7 —7 9 (0 )0 2 0 9 0 P3 1 57 21 6 2 604— 2
图2 IC 线 读 时 序 总
IC 线 上 数 据 传 送 包 括 发 送 起 始 信 号 、 传 输 从 机 地 址 、 总 2
2E P OM读写 器的Ve i gHD 实现 2 R ro L l

WINCE下I2C总线对EEPROM读写的实现

WINCE下I2C总线对EEPROM读写的实现

取模 块 上 , 实现 了对 系统 基 本设 置信 息的存储 、 取 。 同 时 , 读 还提 供 了一套 完整 、 细 的 Wid w E流驱 动 详 n o sC
设计 方案 。 以借鉴 用于其他 基 于 I 可 C总线设 备 的流驱 动 开发 。
[ 关键 词 ]2 I C总线 ;流驱动 程序 ; 拟地 址 虚 [ 中图分 类号 ] P 3 . T 337 [ 献标 识码 ] 文 B
I 2 C总线最主要的优点是其简单性和有效性 。 由 于接 口直接在组件之上 ,因此 I c总线 占用的空 间 非常小 , 减少 了电路板的空间和芯片管脚的数量 , 降 低了互联成本。总线的长度可高达 2 英尺 , 5 并且能 够以 1K p 的最大传输速率支持 4 个组件。 C总 0 bs O I 2 线的另一个优点是 , 它支持多主控 , 其中任何能够进 行发送和接收的设备都可以成为主总线 。一个主控
泛的应用。 目 前有很多半导体集成电路上都集成了 I 2 口。很多外围器件如存储器、 C接 监控芯片等也提 供F C接 口。 本文 采用 对 I 2 C接 口查 询 的方式 对 2 C系列 串 4 行EPO E R M进行读写 , 从而验证 I 2 C总线通信 的高 效与可靠性。根据 F C总线协议 ,实现 sc40和 32 1
第3 期
被 控 器 )又 是 发送 器 ( 接 收器 )这 取 决 于 它所 要 , 或 ,
完成的功能 。主模式用于初始化总线的数据传输并 产生允许传输时钟信号 S L C ;而从模式则被主器件 寻址 , 并被动的发送或接收数据 。各控制 电路虽然 挂在同一条总线上 , 却彼此独立 , 互不相关 , 方便地 构成多机系统和外 围器件扩展系统 。
总线仅仅依靠两根连线就实现了完善的全双工同步 数据传送 : 一根为串行数据线 S A, D 一根为 串行时 钟线 S L 可发送和接收数据。 C U与被控 I C。 在 P c之 间、 I C与 I C之 间进 行 双 向传 送 ,最 高传 送 速率 10b s 0 k p。各种被控制电路均并联在这条总线上 , 每

基于高云FPGA的I2C读写EEPROM

基于高云FPGA的I2C读写EEPROM

基于高云 FPGA的 I2C读写 EEPROM摘要:无线通信设备设计中,需要对功率平坦度进行调试,所以需要将每个频点的数控衰减值存储于EEPROM,以便设备在正常工作中,使用该衰减值,达到功率输出一致的要求。

同时由于无线通信设备的硬件差异性和环境影响,使得无线通信设备的正反向功率等参数不一致,所以需要EEPROM存储每个设备的基准值,已达到无线通信设备的一致性。

本文主要选用国产芯片使用VHDL语言实现EEPROM的读写,来实现数控衰减值和基准值的存储和读出,广东高云半导体FPGA芯片GW2A-LV55PBGA484C8/I7作为主机,成都华微电子EEPROm芯片HWD24C512作为为从机。

关键词:FPGA;I2C;EEPROM1 引言I2C总线(I2C bus,Inter-IC bus)是一个双向的两线连续总线,提供集成电路之间的通信线路,它是一种串行扩展技术,即就是完成集成电路或功能单元之间的信息交换的规范或者协议[1]。

I2C总线采用一条数据(SDA:串行数据线Serial data line),加一条时钟线(SCL:串行时钟线Serial clock line)来完成数据的传输及外围器件的扩展。

I2C在芯片的配置中应用很广泛,比如摄像头、VGA转HDMI转换芯片[2]。

无线通信设备设计中,需要对功率平坦度进行调试。

即就是对其所有工作频点进行功率校准,使设备处于发射状态时,所有工作频点下输出功率基本一致并且在特定的范围内,否则会出现状态不一致甚至烧坏其他部件的情况。

本文通过改变每个频点下的数控衰减值,以达到功率一致,并将每个频点的数控衰减值存储于EEPROM,以便设备在正常工作中,使用该衰减值,达到功率输出一致的要求。

无线通信设备设计中,由于硬件差异性和环境影响,使得无线通信设备的一致性不同,为了使得控制一致,所以需要EEPROM存储每个设备的基准值,已达到无线通信设备的一致性。

本文以实际项目中用于存储参数的EEPROM的读写设计为实例。

IIC接口EEPROM的控制

IIC接口EEPROM的控制

I 2C 接口EEPROM 的控制AT24Cxx 是Atmel 公司生产的串行电可擦的可编程存储器EEPROM ,它采用8引脚双排直插式封装,具有结构紧凑、存储容量大等特点,可以在I 2C 总线上并接4片该芯片,特别适用于具有大容量数据存储要求的数据采集系统。

本设计以AT24C512为例,介绍该芯片的工作原理和与单片机的软硬件接口。

一.AT24C512简要介绍AT24C512是Atmel 公司生产的64KByte 串行电可擦的可编程存储器,内部有512页,每一页为128Byte ,任一单元的地址为16位,地址范围为0000~0FFFFH 。

它采用8引脚封装,具有结构紧凑、存储容量大等特点,可以在I 2C 总线上并接4片芯片,特别适用于具有大容量数据存储要求的数据采集系统。

因此在测控系统中被大量采用。

1、AT24C512的主要特性具有如下3种工作电压:5.0 (VCC = 4.5V to 5.5V)。

2.7 (VCC = 2.7V to 5.5V)。

1.8 (VCC = 1.8V to 3.6V)。

存储容量为65,536Byte 即512Kbit( 64Kx 8bit)。

与100kHz 、400kHz 、1MHz I 2C 总线兼容。

ESD 保护电压>4kV 。

数据可保存40年。

CMOS 低功耗技术,最大写入电流为3mA 。

采用施密特触发,可抑制输入噪声。

符合双向数据传送协议。

具有硬件写保护和软件数据保护功能。

具有128Byte 页写入缓存器。

自动定时的写周期。

具有8引脚DIP 及20引脚SOIC 封装等多种。

2、管脚说明AT24C512的管脚如图 所示各引脚的功能如下:A0、A1:地址选择输入端。

在串行总线结构中,如需连接4个AT24C512芯片,则可用A0、A1来区分各芯片。

A0、A1悬空时为0。

SDA :双向串行数据输入输出口。

用于存储器与单片机之间的数据交换。

SCL :串行时钟输入。

基于STM32F103的I2C总线EEPROM的读写(带超时检测)

基于STM32F103的I2C总线EEPROM的读写(带超时检测)

基于STM32F103的I2C总线EEPROM的读写(带超时检测)————————————————————————————————作者:————————————————————————————————日期:【原创】基于STM32F103的I2C总线EEPROM的读写(带超时检测)本人最近参考了st 公司关于STM32的I2C的例程,觉得不是很适合我的应用,于是自己写了一个基于STM32F103的I2C总线EEPROM(24C256)的读写程序,总线的最高速度可达400K,现在将源代码原原本本的公布如下,希望得到高手的指点,也希望能够给和我有同样想法的同仁们一些参考价值。

注意:最好将固件库升级一下,st网站上面有V2。

03库的补丁。

u32 ulTimeOut_Time;/***********************************************************************************************************I2C_EE_WriteStr()** Description : 将一个数据块写入EEPROM 的指定的地址**Argument(s) : xChip - 从器件地址* xAddr — EEPROM存储空间地址*xpBuf —数据缓冲区指针* xLen - 数据长度**Return(s) : none.**Caller(s) : Application.** Note(s) :(1)*——--—-——----————--—-——---——--—--—---—-—----———--—-—-————-——-——---—-—--—————----——--—————-—-——--——-———--*Modified by :* Modified date :* Description :*—---———----———-—------——--—--—-——————-—-————-——-———-——---—--——-——————--—————----———-—---—-——-——-—-——--—**********************************************************************************************************/void I2C_EE_WriteStr(u8 xChip, u16 xAddr, u8 *xpBuf, u16 xLen){u8 *pbuf;u8 err;u8 retry;u16 addr;u16 len;个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途//pbuf = xpBuf;addr = xAddr;len = xLen;I2C_EE_Drv_BusEn(); // 允许总线,写允许retry = 5; // 重试5次while(len){err = I2C_EE_Drv_WriteByte(xChip,addr, *pbuf);if(err){if(--retry == 0 ) // 已经试了5次,写下一个数据{retry = 5;pbuf++;addr++;len——;}}else // 顺利,写下一个数据{pbuf++;addr++;len--;}}I2C_EE_Drv_BusDis(); // 失能总线,写保护}/*********************************************************************************************************** I2C_EE_ReadStr()**Description :从EEPROM 的指定的地址读出一个数据块** Argument(s) : xChip —从器件地址* xAddr - EEPROM存储空间地址*xpBuf - 数据缓冲区指针*xLen - 数据长度**Return(s) : none.** Caller(s) : Application。

I 2C串行EEPROM应用系统的健壮性设计

I 2C串行EEPROM应用系统的健壮性设计

V 掉 电或 降到 最 小 电 压 以 下 , 无 论 时 间长 短 , 无 法 确 则 均
1 防 意外 写措 施
器 件 在 上 电/ 电期 间 或 者 S 掉 DA/ CL线 的 噪 声 过 大 S 时 都 有 可 能 导 致 意 外 写 操 作 。 为 了 解 决 这 一 问 题 , 方 面 一
保 被 写 页 面 的数 据 完 整 性 , 能 导 致 编 程 数 据 的 不 正 确 。 可 此 外 , 于无 法 对 E ROM 单 元 进 行 完 全 编 程 , 件 的 由 EP 器 数 据 保 留 时 间会 比数 据 手 册 中 规 定 的 时 间 短 。 对 于 写 周
需 要 使 用 去 耦 电容 ( 量 通 常 为 0 1F ) 帮 助 滤 除 V 容 . F 来
在 整 个 写 周 期 内 ( 于 大 多 数 器 件 而 言 , 常 最 大 为 对 通 5 ms , 须 将 V 维 持 在 最 小 工 作 电压 以 上 。如 果 此 时 )必
册 规 范 之 外 , 必 须 考 虑更 多 的 因 素 , 样 才 能 实 现 更 健 还 这
壮 的 总 体 设 计 , 保 系 统 具 有 优 良 的质 量 特 性 。 确
对 于具 有 硬 件 写 保 护 功 能 的 器 件 , 可 以将 其 wP引 既 脚连接到 V 来 保 护 整 个 阵 列 , 可 以 将 其 WP引 脚 连 接 也 到 V 来 放 弃 写 保 护 。通 常 用 户 可 以 将 wP 引 脚 连 接 到
制 器 何 时 被 复 位 , E R M 存 储 子 系 统 都 可 保 持 数 据 的 E P O
对 其 S A 引 脚 与 微 控 制 器 之 间 的连 接 进 行 通 断 控 制 来 实 D

基于I^2C串行总线在单片机系统中的数据读写

基于I^2C串行总线在单片机系统中的数据读写

基于I^2C串行总线在单片机系统中的数据读写
陈章余
【期刊名称】《电脑知识与技术》
【年(卷),期】2009(0)11X
【摘要】简要介绍了I2C串行总线原理及AT24CXX系列串行EEPROM的特点。

着重阐述了利用I2C串行总线和AT24CXX系列串行EEPROM实现数据存储的技术,给出了单片机与串行EEPROM硬软件实现方法和实用的读/写子程序。

【总页数】3页(P9059-9061)
【关键词】单片机;I2C串行总线;EEPROM
【作者】陈章余
【作者单位】南京工程高等职业学校电子工程系
【正文语种】中文
【中图分类】TP368.12
【相关文献】
1.基于I2C串行总线在单片机系统中的数据读写 [J], 陈章余
2.基于I 2C串行总线的两点温度测量系统设计 [J], 王超
3.单片机模仿I^2C串行总线技术 [J], 高进忠;舒鹏
4.I^2C串行总线在单片机上的实现 [J], 赵军委;戚丽丽;贺贵明
5.单片机模拟I^2C总线实现串行E^2PROM的读写 [J], 陈红仙
因版权原因,仅展示原文概要,查看原文内容请购买。

EEPROM读写学习笔记与I2C总线(二)

EEPROM读写学习笔记与I2C总线(二)

EEPROM读写学习笔记与I2C总线(⼆)⽆论任何电⼦产品都会涉及到数据的产⽣与数据的保存,这个数据可能并不是⽤来长久保存,只是在运⾏程序才会⽤到,有些数据体量较⼤对于获取时效性并不太强,各种各样的数据也就有不同的存储载体,这次在EEPROM读写中,顺道把看到的关于存储的⼀些东西整理⼀下,有些话来⾃于⽹友,所以还是那句话,看到的⼈要带着⾃⼰的思考去看,记住尽信书不如⽆书,fighting⼀、基本概念最熟悉的两个词语应该是RAM与ROM,RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,⽤来存储和保存数据的。

它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运⾏程序的临时存储介质,它的⼀切都是最好的,唯⼀缺点断电⼀切东西都没有了。

⼀般情况下,现在移动设备也多了,我们叫它内存,更通常的叫运⾏内存。

还有⼀个熟悉的词DDR2或DDR3,后⾯还会学习到的。

ROM(Read Only Memory)的全名为唯读记忆体,它相当于PC机上的硬盘,⽤来存储和保存数据。

ROM数据不能随意更新,但是在任何时候都可以读取。

即使是断电,ROM也能够保留数据。

但是资料⼀但写⼊后只能⽤特殊⽅法或根本⽆法更改,但这么久了ROM已经有了很⼤的发展,不再是最初的摸样了。

rom最初不能编程,出⼚什么内容就永远什么内容,不灵活。

后来出现了prom,可以⾃⼰写⼊⼀次,要是写错了,只能换⼀⽚,⾃认倒霉。

⼈类⽂明不断进步,终于出现了可多次擦除写⼊的EPROM,每次擦除要把芯⽚拿到紫外线上照⼀下,想⼀下你往单⽚机上下了⼀个程序之后发现有个地⽅需要加⼀句话,为此你要把单⽚机放紫外灯下照半⼩时,然后才能再下⼀次,这么折腾⼀天也改不了⼏次。

历史的车轮不断前进,伟⼤的EEPROM出现了,拯救了⼀⼤批程序员,终于可以随意的修改rom中的内容了,这⼀段话就说出了ROM的发展历程。

狭义的EEPROM:这种rom的特点是可以随机访问和修改任何⼀个字节,可以往每个bit中写⼊0或者1。

i2c读写eeprom手册

i2c读写eeprom手册

i2c读写eeprom手册
I2C读写EEPROM的手册主要包括以下步骤:
1. 确定EEPROM的设备地址:I2C通讯时,地址跟读写方向连在一起构成一个8位数。

当R/W位为0时,表示写方向,加上7位地址,其值为
“0xA0”,常称该值为I2C设备的“写地址”;当R/W位为1时,表示读方向,加上7位地址,其值为“0xA1”,常称该值为“读地址”。

2. 准备读写操作:主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后。

3. 发送存储地址:从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写入。

4. 进行读写操作:根据一次读操作读取数据量的多少,读操作可分为随机读操作和顺序读操作。

随机读操作可以理解为单字节数据的读取。

5. 结束操作:读写操作完成后,主机发送停止信号结束操作。

请注意,所有I2C设备均支持单字节数据写入操作,但只有部分I2C设备支持页写操作;且支持页写操作的设备,一次页写操作写入的字节数不能超过设备单页包含的存储单元数。

此外,EEPROM芯片中还有一个WP引脚,
具有写保护功能,当该引脚电平为高时,禁止写入数据,当引脚为低电平时,可写入数据。

以上步骤仅供参考,如果使用实验板EEPROM的型号、设备地址或控制引
脚不一样,需根据实际工程修改。

I2C读写EEPROM问题总结

I2C读写EEPROM问题总结

2017 年6 月3 0 日星期五目的:利用TMS320F2801芯片上外设I2C (2线串口)读写EEPROM数据(24LC128)关键点1 : 24LC时钟频率400KHZ,寄存器设置如下://Prescaler- need7-12Mhzo nm oduleclk=10; 〃NOTE:mustbe non zero=5; 〃NOTE:mustbe non zero时钟频率也可设为200KHz,三个参数分别为9、20、20(CPU时钟频率为100MHz)(未测试)关键点2 :波形分析问题:I2C模块是不是只有I2CCNT减到0才会发出停止信号I2C模块是硬件的,当检测到发送完了就会发结束自动发信号,不需要人为干预问题1:字节写操作正常,但是字节读函数出错原因:写EEPROM是在七位器件地址后添加写标志,而读EEPROM需要在七位器件地址后添加写标志。

关键点:读EEPROM数据需要发送两次命令。

第一次为写地址(此地址会被赋值给EEPROM 内的地址指针),因此需要添加写标志;第二次为读数据,将写标志改为读标志。

问题2:主机接收时,SDA数据线上有数据传输,且I2CDRR接收数据寄存器有数据更新,但寄存器显示不可读,即CPU认为一直没接收到数据,一直停在下面语句while!=1);关键点:初始化设置时采用的是FIF O接收方式,因此无效,应查询FIF O接收中断位while!=1);//FIFORX 方式查询位。

此位只有在非FIFO中断接收方式时才有效。

问题3:断续单字节读写正常,但是采用连续的单字节读写出错。

原因:EEPRO M写过程的结束并不是I2C总线写结束就结束,实际上I2C总线的写入数据先被保存到了EEPRO M内部的缓冲区,当遇到I2C结束条件后,EEPROM才启动内部写过程,这个过程才是保存数据的过程。

非常悲哀的是这个过程比较长,官方文档标注为5ms。

如果在这5ms以内对EEPROM芯片访问将被忽略。

基于I2C接口EEPROM读写控制器设计

基于I2C接口EEPROM读写控制器设计

基于I2C接口EEPROM读写控制器设计
杨帆
【期刊名称】《微型机与应用》
【年(卷),期】2015(34)10
【摘要】The Inter-Integrated Circuit (I2C) bus protocol is introduced briefly. Using Field-Programmable Gate Array (FPGA) chip of Altera Company to design I2C bus interface controller to control Electrically Erasable Programmable Read-Only Memory (EEPROM ) read and write operations.%简单介绍 I2C 总线协议,用 Altera 公司的 FPGA (现场可编程门阵列)芯片设计 I2C 总线接口控制器,用于控制 EEPROM (带电可擦写可编程只读存储器)的读写操作。

【总页数】3页(P22-24)
【作者】杨帆
【作者单位】贵州大学大数据与信息工程学院,贵州贵阳 550025
【正文语种】中文
【中图分类】TN495
【相关文献】
1.WINCE下I2C总线对EEPROM读写的实现 [J], 王义杰
2.EEPROM基于I2C总线的一种读写方法 [J], 苏琦;刘宇;田敬民
3.基于FPGA的I2C读写控制器的设计与实现 [J], 陈景;李建华
4.用I2C总线实现串行EEPROM与EM78P447SB单片机的接口设计及应用 [J], 施建珍;袁秋锦;宋国华
5.带I2C接口的EEPROM可编程TFTVCOM校准器 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
了 一 种 性 能 优 越 的
2 E E P R 0M 读 写 控 制 器 模 块 的 设 计 与 实现
在进 行数 据传 输 时 , 读 写 控 制 器 首 先 产 生 一 个 启 动
信号( 当 S C L为 高 电 平 时 , S D A 由高 变 为低 ) , 接 着 发 送 控 制字 ( 即 I 2 C总线器 件 的特 征编 码 和 3 b i t E E P R OM 的
Ab s t r a c t :T h e I n t e r - I n t e g r a t e d Ci r c u i t ( I C)b u s p r o t o c o l i s i n t r o d u c e d b r i e l f y .Us i n g F i e l d — P r o g r a mma b l e Ga t e Ar r a y( F P GA)
线器 件特 征码 为 1 0 1 0. 而 3 b i t E E P R OM 的 芯 片 地 址 为 0 0 0。 接着 主控 制器 释放 总线 , 等待 E E P R O M 发 出 的 应 答 信号, 由于采 用 的 E E P R O M 型号 是 2 4 L C 6 4, 因 此 在 控 制 器 收到应答 后 , 将 首先发送 E E P R O M 高 字 节 的 存 储 单 元 地址 。 当控制 器再 次收到 应答后 继续 发送 E E P R O M 低 字
双 向两 线 串行 总线 I 2 C( I n t e r — I n t e g r a t e d C i r c u i t ) 总 线 。 进
行 F P G A设 计 时经 常需 要与 外 围提 供 I 2 C接 口 的 芯 片 进
芯 片地址 ) 以及 写 状 态 R/ W 位 为 0到 总 线 上 。这 里 的 总
c h i p o f A h e r a C o mp a n y t o d e s i g n I 2 C b u s i n t e r f a c e c o n t r o l l e r t o c o n t r o l E l e c t i r c a l l y E r a s a b l e P r o g r a mma b l e Re a d- On l y Me mo  ̄
( EE P ROM ) r e a d a n d w it r e o p e r a t i o n s .
Ke y wo r d s:I 2 C b u s ;F P GA ; E E PR OM
O 引 言
随 着 电 子 技 术 快 速 发 展 ,有 许 多 的 I C 需 要 相 互 之
I ℃ 总线接 口, 进 而实现 E E P R O M 的读 写 操 作 。
1 I ℃ 总 线 原 理 概 述
I 2 C 总 线 有 两 条 串 行 总 线 , 一 条 是 串 行 时 钟 线
( S C L) , 一条是串行数据线 ( S DA) , 连 接 到 总 线 上 的 每
节 的存 储单 元 地址 , 当控 制 器再 次 收 到应 答 后 , 判 断 是
行 通 信 ,虽 然 市 场 上 有 专 门 的 I 2 C 总 线 接 口 芯 片 ,但 是 大 多性 能指标 固定 、 功 能单 一 、 使用 不方便 。根据 I 2 C总
线 协 议 和 其 电 路 的 电 气 特 性 .在 A h e r a 公 司 的 E P 4 C E1 0 F 1 7 C 8 N型号 的 F P G A 芯 片 上 可 以 方 便 地 实 现
接 口控 制 器 , 用 于 控 制 E E P RO M( 带 电可擦 写 可编 程 只 读存 储 器 ) 的读 写操 作 。
关 键 词 :I z C总线 ; F P G A; E E P R O M
中 图 分 类 号 :T N 4 9 5 文 献 标 识 码 :A 文 章 编 号 :1 6 7 4 — 7 7 2 0 ( 2 0 1 5) 1 0 — 0 0 2 2 — 0 3
读还 是写 , 如 果是 写操作 , 则 控制 器发送 数据 字节 , 并 把 数据 写入 被 寻址 的存 储单 元 , E E P R O M 再 次 发 送 应 答 信
个 器 件 既 可 以 作 为 发 送 器 又 可 以 作 为 接 收 器 , 且 每 个 器 件 都 有 唯 一 的地 址 识 别 。主 机 主 要 负 责 产 生 时 钟 、 初 始 化 发 送 和 终 止 发 送 等 操 作 。 从 机 则 是 被 主 机 寻 址
基于 I 2 C接 口 E E P R O M 读 写控 制器 设 计
杨 帆
( 贵 州大 学 大 数 据 与信 息工 程 学院 , 贵州 贵 阳 5 5 0 0 2 5 )
摘 要 : 简 单 介 绍 I 2 C总 线 协 议 , 用A l t e r a公 司 的 F P G A( 现 场 可 编 程 门阵 列 ) 芯片设计 I 2 C 总线
Ba s e d o n t h e I 2 C i n t e r f a c e EEPROM r e a d a nd wr i t e c o n t r o l l e r d e s i g n
Ya n g Fa n .
( C o l l e g e o f B i g Da t a a n d I n f o r ma t i o n E n g i n e e i r n g, Gu i z h o u Un i v e r s i t y, Gu i y a n g 5 5 0 0 2 5, C h i n a)
相关文档
最新文档