基于linux的EEPROM的读写控制设计

合集下载

基于linux的EEPROM的读写控制毕业设计(论文)

基于linux的EEPROM的读写控制毕业设计(论文)

毕业设计[论文]题目:基于linux的EEPROM的读写控制学生姓名:学号:学部(系):专业年级:指导教师:职称或学位:200 年月日目录摘要..................................................... I I ABSTRACT .................................................. I II 1绪论.. (1)1.1开发背景 (1)1.2 EEPROM的开发意义 (1)2LINUX技术简介 (3)2.1开发工具简介 (3)2.2 编译工具简介 (5)2.3 bootloader简介 (6)3操作系统的移植 (8)3.1 LINUX内核的移植 (8)3.2 LINUX内核的目录结构 (9)3.3 LINUX源代码的安装 (11)4EEPROM的概要设计 (13)4.1 IIC总线的读/写控制逻辑 (13)4.2 设计操作过程 (17)4.3 设计参考程序 (18)4.4 实验结果分析 (20)结束语 (22)参考文献 (23)致谢 (24)基于linux的EEPROM的读写控制摘要本文着眼于在linux开发环境下实现EEPROM的读/写控制访问方法.Linux操作系统作为新兴的操作系统,具有内核强大、开源、易扩展和裁减以及丰富的硬件支持等诸多优点,其嵌入式应用具有实时处理能力,广泛应用于智能设备、智能仪器仪表、信息电器领域。

随着计算技术向微型化、网络化方向的发展,嵌入式软件极大地提高了传统工业控制、医疗、办公乃至家用消费类电子产品的附加值和易用性,市场应用前景极为广阔。

项目必要性软件在信息系统中起着核心和灵魂的作用。

本设计在EduKit2410实验平台上,通过编写程序在EEPROM器件AT24C04进行读写访问,掌握EEPROM器件在LINUX下的读/写访问方法,然后把实验数据写入整个EEPROM 的存储空间,接着读出来而进行比较[8]。

Linux中I2C总线的EEPROM 驱动程序

Linux中I2C总线的EEPROM 驱动程序

Linux环境下基于I2C总线的EEPROM 驱动程序1 引言I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。

它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。

在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。

笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C总线在嵌入式系统中应用广泛,I2C总线控制器的类型比较多,对系统提供的操作接口差别也很大。

与I2C总线相连的从设备主要有微控制器、EEPROM、实时时钟、A/D转换器等.MPC8250处理器正是通过内部的I2C总线控制器来和这些连接在I2C总线上的设备进行数据交换的。

由于I2C总线的特性,Linux的I2C总线设备驱动程序的设计者在设计驱动程序时采用了独特的体系结构。

使开发I2C总线设备驱动程序与开发一般设备驱动程序的方法具有很大差别。

因此,开发I2C总线设备驱动程序除了要涉及一般Linux内核驱动程序的知识外.还要对I2C总线驱动的体系结构有深入的了解。

笔者在开发过程中使用设备型号为AT24C01A的EEPROM 来测试I2C总线驱动。

2 工作原理概述在介绍I2C总线结构之前。

要搞清楚两个概念:I2C总线控制器和I2C设备。

I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有I2C总线的特殊序列、协议、仲裁、时序,这里指MPC8250提供的I2C总线控制接口。

I2C设备是指通过I2C总线与微控制器或微处理器相连的设备,如EEPROM、LCD驱动器等,这里指EEPROM。

在一个串行数据通道中.I2C总线控制器可以配置成主模式或从模式。

开发过程中,MPC8250的I2C总线控制器工作在主模式,作为主设备;与总线相连的I2C设备为AT24C01A 型EEPROM,作为从设备。

eeprom读写程序详解

eeprom读写程序详解

eeprom读写程序详解EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。

它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。

对于 EEPROM 的读写程序,需要考虑以下几个方面:1. 读操作:读操作通常包括以下步骤:- 等待上次读操作完成。

- 获取要读取的数据的单元地址。

- 将 EEPGD 位和 CFGS 位清零。

- 启动读操作控制位 RD。

- 等待本次读操作完成。

- 将该单元地址中对应的数据返回。

在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。

因此,在读取操作中需要加入等待步骤。

2. 写操作:写操作通常包括以下步骤:- 等待上次写操作完成。

- 获取要写的数据的单元地址。

- 将要写的数据写入 EEPROM 的单元中。

- 将 EEPGD 位和 CFGS 位清零。

- 启动写操作控制位 WP。

- 等待写操作完成。

在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。

同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。

3. 中断处理:在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。

例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。

为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。

总之,EEPROM 读写程序的实现需要考虑多个方面的因素,包括读操作、写操作、中断处理等。

同时,需要考虑 EEPROM 芯片的特性和限制,以便实现高效、稳定、可靠的 EEPROM 读写操作。

eeprom读写项目课程设计

eeprom读写项目课程设计

eeprom读写项目课程设计一、课程目标知识目标:1. 理解EEPROM的基本概念、内部结构和存储原理;2. 掌握EEPROM的读写操作流程及相关编程技巧;3. 了解EEPROM在嵌入式系统中的应用场景。

技能目标:1. 能够使用相关开发工具和编程语言对EEPROM进行读写操作;2. 学会分析EEPROM读写过程中可能遇到的问题,并提出相应的解决方案;3. 能够运用所学知识,完成一个简单的EEPROM读写项目。

情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发学习热情;2. 培养学生的团队协作意识和沟通能力,学会共同解决问题;3. 增强学生的自信心,使其认识到自己的潜力和价值。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在提高学生的动手能力和编程技能。

学生特点:本课程面向高年级学生,他们已经具备了一定的电子技术基础和编程能力,对实际项目具有强烈的好奇心。

教学要求:教师需结合实际案例,引导学生主动探究,注重理论与实践相结合,确保学生能够将所学知识应用于实际项目中。

在教学过程中,关注学生的个体差异,给予个性化指导,以提高整体教学效果。

通过本课程的学习,使学生达到上述课程目标,为今后的学习和工作打下坚实基础。

二、教学内容1. EEPROM基本概念与原理:- EEPROM定义、特点及应用场景;- EEPROM内部结构、存储单元及工作原理;- EEPROM与其它类型存储器的区别。

2. EEPROM读写操作:- I2C、SPI等通信协议在EEPROM中的应用;- EEPROM编程接口及编程语言选择;- EEPROM读写操作流程及编程技巧。

3. EEPROM应用案例分析:- 简单EEPROM读写项目案例介绍;- 案例中涉及的关键技术及其实现方法;- 分析案例中可能遇到的问题及解决方案。

4. 实践操作与项目实施:- 实践环境搭建,开发工具使用;- 指导学生完成EEPROM读写操作练习;- 分组讨论,协作完成一个简单的EEPROM读写项目。

EEPROM器件读写例程设计报告

EEPROM器件读写例程设计报告

课程设计题目EEPROM器件读写例程设计学院计算机科学与技术专业计算机科学与技术班级姓名指导教师2011 年 6 月22 日课程设计任务书学生姓名:专业班级:计算机班指导教师:工作单位:计算机科学与技术学院题目: EEPROM器件读写例程设计初始条件:1.课程设计使用ZG211硬件综合实验平台(8051单片机),使用AT24C01接口芯片和辅助芯片以及器件;2.ZG211有程序设计集成开发环境,程序设计语言为C语言;3.ZG211硬件综合实验平台使用说明书;要求完成的主要任务:(包括课程设计工作量及其技术要求,撰写说明书具体要求)1.学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2.根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。

3.查阅和学习课程设计题目需要的接口芯片资料,掌握I2C接口芯片的使用方法和编程要领。

查阅和学习课程设计题目需要的辅助芯片以及器件资料。

4.设计接口芯片和辅助芯片以及器件与8051单片机连接硬件电路原理图。

5.设计与硬件电路原理图对应的C语言程序(或8051汇编语言)。

给出程序流程图。

在集成开发环境中调试程序。

给出程序的详细注释。

能够解释使用程序模拟电路时序信号和数据。

6.撰写课程设计报告,1)详细陈述以上的设计过程;2)详细陈述电路的调试过程。

时间安排:第17周:1.熟悉ZG211硬件综合实验平台,KEILC UVISION2集成开发环境;查阅接口芯片资料,熟悉接口芯片和它的使用方法。

2.设计硬件电路原理图,。

第18周:1.使用C语言或汇编语言设计和调试接口程序。

2.撰写计算机硬件综合设计报告。

指导教师签名:年月日系主任(或责任教师)签名:年月日EEPROM器件读写例程设计1 需求分析1.1设计目的(1)掌握I/O口操作;(2)掌握显示及键盘芯片的应用;(3)掌握I2C总线操作。

1.2实验设备1.2.1 硬件设备(1)PC 机一台;ZG-211 单片机系统实验板一块(2)实验连接线若干(3)并口编程线一根(4)串口通讯线一根(5)配套电源1 个(6)芯片:CH451,89S52,CD4052,AT24C021.2.2 软件平台Keil C51 μVision2软件的使用:设计中使用的软件开发平台为Keil C51 μVision2。

eeprom读写程序

eeprom读写程序
#include "EEPROM.h&PROM_Read(unsigned int uiAddress)
{
while(EECR & (1 << EEWE));
EEAR= uiAddress;
EECR |= (1 << EERE);
return EEDR;
DataTemp=DataTemp%100000;
ReadData[1]=DataTemp/10000;
DataTemp=DataTemp%10000;
ReadData[2]=DataTemp/1000;
DataTemp=DataTemp%1000;
ReadData[3]=DataTemp/100;
{
unsigned long TR_APDU_Buffer[6];
unsigned char i;
unsigned long TestCoun=0;
TR_APDU_Buffer[0]=EEPROM_Read2(AddrH,0x0C);
TR_APDU_Buffer[1]=EEPROM_Read2(AddrH,0x0D);
EEPROM_Write(EEPAdr+0x10+ ReadData[3]*11,ReadData[4]);
EEPROM_Write(EEPAdr+0x10+ ReadData[4]+1+ReadData[3]*11,ReadData[5]);
}
unsigned long ReadTestCounter(unsigned char AddrH)
void EEPROM_Write(unsigned int uiAddress, unsigned char ucData)

linux emmc 读写流程

linux emmc 读写流程(原创实用版)目录1.引言:介绍 Linux EMMC 读写流程2.EMMC 设备概述:解释 EMMC 的概念、作用和重要性3.Linux EMMC 子系统分析:详述 Linux EMMC 子系统的初始化流程4.Linux EMMC 读写流程:说明 Linux 系统中 EMMC 的读写操作流程5.结论:总结 Linux EMMC 读写流程的特点和优势正文引言:在现代嵌入式系统中,EMMC(eMMC,即嵌入式多媒体卡)作为一种常见的闪存存储解决方案,已被广泛应用于各类设备中,如智能手机、平板电脑、物联网设备等。

Linux 作为一款广泛应用于嵌入式系统的操作系统,对 EMMC 的支持至关重要。

本文将详细探讨 Linux EMMC 读写流程,以期帮助读者更好地理解和运用这一技术。

一、EMMC 设备概述EMMC 是一种基于闪存的存储技术,它将存储器、控制器和接口集成在一颗芯片上,具有体积小、性能稳定、支持热插拔等特点。

在嵌入式系统中,EMMC 通常用于存储操作系统、应用程序和用户数据等。

二、Linux EMMC 子系统分析在 Linux 系统中,EMMC 子系统主要负责对 EMMC 设备进行初始化和管理。

以下是 Linux EMMC 子系统的初始化流程:1.识别 EMMC 设备:根据设备树中的配置信息,找到 EMMC 设备的节点。

2.配置 EMMC 设备:根据设备节点的配置信息,初始化 EMMC 设备的控制器、接口等。

3.挂载 EMMC 设备:将 EMMC 设备挂载到系统文件系统中,以便系统对设备进行读写操作。

4.创建 EMMC 设备文件:在系统文件系统中创建对应的 EMMC 设备文件,如/dev/mmcblk0 等。

5.启动 EMMC 设备:启动 EMMC 设备,使其进入正常工作状态。

三、Linux EMMC 读写流程在 Linux 系统中,EMMC 的读写操作主要通过 VFS(Virtual File System,虚拟文件系统)和设备驱动来完成。

EEPROM器件读写例程设计.

EEPROM数据读写操作模块则是用来实现对AT24C02进行数据读写操作的,由于设计中的数据读写操作都是通过I2C总线来实现的,所以操作过程要遵循I2C总线协议。首先要发送启动信号,然后再发送从器件地址,收到响应信号之后再开始从I2C总线上读/写数据,最后还要发送一个结束信号,表示数据操作的结束。
数据显示模块则是将每次操作的数据在LED上显示,以便测试代码的正确性,该模块的设计中不仅要包含对数据的显示功能的实现,还要实现对按键中断的功能,即时刻检测实验平台上5个按键的状态,以便对不同状态做出不同的操作。
break;
case 2:
EXA=0;
EXB=1;
break;
case 3:
EXA=1;
EXB=1;
break;
default:
EXA=0;
EXB=0;
break;
}
}
初始化芯片8255
void set_8255()
{
delay_1ms(1000);
COMM8255 = 0x82;
PA8255 = 0x80;
AT24C02支持I2C总线数据传送协议,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。其芯片引脚图如下图所示。
图3.3CH451引脚图
3.4
CD4052是一个差分4通道数字控制模拟开关,有A0、A1两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止漏电流。幅值为4.5~20V的数字信号可控制峰-峰值至20V的模拟信号。例如,若VDD=+5V,VSS=0,VEE=-13.5V,则0~5V的数字信号可控制-13.5~4.5V的模拟信号。这些开关电路在整个VDD-VSS和VDD-VEE电源范围内具有极低的静态功耗,与控制信号的逻辑状态无关。当INH输入端=“1”时,所有的通道截止。二位二进制信号选通4通道中的一通道,可连接该输入端至输出。

EEPROM24C02,程序将对存储器进行读和写

/*EEPROM24C02,程序将对存储器进行读和写,因此涉及到键盘程序,比较复杂,耐心学,例子读取24C02内部数据,在数码管上显示,可通过按键来进行不同地址数据的读取和保存*/#include <reg51.h>#include <intrins.h>#define W24C02 0xA0 //存储器的写地址#define R24C02 0xA1 //存储器的读地址#define MSB 0x80 //8位二进制最高位置1#define LSB 0x01 //8位二进制最低位置1/********************/sbit SDA=P3^6; //A T24C02串行数据5脚sbit SCL=P3^7; //A T24C02串行时钟6脚sbit SPK=P3^4; //蜂鸣器,按键用时蜂鸣void I2C_write(unsigned char tmp); //向I2C总线写数据unsigned char I2C_read(); //向I2C总线读数据void I2C_ACK(bit tmp); //ACK应答void I2C_start(void); //I2C传送数据的开始void I2C_stop(void); //I2C传送数据的结束void _24c02menu(void); //当我们按下按键进入处理I2C数据时用的函数void _24c02wdate(unsigned char tmp); //当我们对24C02存储器进行写数据用到的函数void display(unsigned char *lp,unsigned char lc);//显示,在键盘程序里用过void displaystr(unsigned char *lp,unsigned char lc);//字符的显示函数,同上void delay();//延时子函数void ReadKey(void); //扫描键盘获取键值unsigned char l_key=0xFF; //定义变量,存放键值unsigned char l_keyold=0; //做为按键松开否的凭证code unsigned char l_24C02[5]={0x5b,0x66,0x39,0x3f,0x5b};//定义数组常量在数码管上显示24C02unsigned char l_address=0; //读24C02的地址变量unsigned char l_tmpdate[6]={0,0,0x10,0,0,0}; //数组变量code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//共阴数码管0-9 a-f - 表code unsigned char key_tab[17]={0xed,0x7e,0x7d,0x7b,0xbe,0xbd,0xbb,0xde,0xdd,0xdb,0x77,0xb7,0xee,0xd7,0xeb,0xe7,0XFF};//========================此数组为键盘编码,// 1 2 3 a// 4 5 6 b// 7 8 9 e// * 0 # fvoid main(void) //入口函数{TMOD=0x01; //设置定时器0为模式1方式,TH0=0XD1; //设置初值,为12毫秒TL0=0X20;EA=1; //开启总中断ET0=1; //开启定时器中断0EX0=1; //开启外部中断0IT0=1; // 设置成下降沿触发方式P0=0xf0; //while(1){displaystr(l_24C02,5); //用这个函数显示5个字符if(l_key==0x0e){l_key=0xff; //按下#键调用_24c02menu(); //此函数}}}//以下一部份在键盘程序里有说明,此处不在讲述void key_scan() interrupt 0 //外部中断0 0的优先级最高{EX0=0;TH0=0XD1;TL0=0X20;TR0=1;}void timer0_isr(void) interrupt 1 //定时器0的中断函数{TR0=0;ReadKey();}void ReadKey(void){unsigned char i,j,key;j=0xfe;key=0xff;for (i=0;i<4;i++){P0=j;if ((P0&0xf0)!=0xf0){key=P0;break;}j=_crol_(j,1);}if (key==0xff){l_keyold=0xff;P0=0xf0;SPK=1;EX0=1;return;}else{TH0=0X2E;TL0=0X20;TR0=1;SPK=0;}if(l_keyold!=key){l_keyold=key;for(i=0;i<17;i++){if (key==key_tab[i]){l_key=i;break;}}}}void display(unsigned char *lp,unsigned char lc)//显示{unsigned char i;P2=0;P1=P1&0xF8;for(i=0;i<lc;i++){P2=table[lp[i]];P2=0;if(i==7)break;P1++;}}void displaystr(unsigned char *lp,unsigned char lc)//显示{unsigned char i;P2=0;P1=P1&0xF8;for(i=0;i<lc;i++){P2=lp[i];delay();P2=0;if(i==7)break;P1++;}}void delay(void) //{unsigned char i=10;while(i)i--;}void _24c02menu(void) //处理I2C数据时用的函数{unsigned char tmp,tmp2;P2=0; //数码管显示清0l_key=0xfe; //进入存储器处理程序先读取0地址的数据while (1){if(l_key==0x0c){ //如果按下*号键退出循环,即退出回到主函数l_key=0xff;break;}switch(l_key){ //扫描键盘做相应处理case 0x0a: //按下0X0A键,我们可将它理解为上翻键l_key=0xff;if(l_address>0){l_address--; //将地址减1l_key=0xfe; //读取数据break;case 0x0b: //按下0X0A键,我们可将它理解为下翻键l_key=0xff;if(l_address<255){l_address++; //将地址加1l_key=0xfe; ////读取数据}break;case 0x0e: //如果按下#号键,调用写存储器函数l_key=0xff;_24c02wdate(tmp);l_key=0xfe;break;case 0xfe: //此按值是在键盘是没有的,我们有内部给他增加做为读数据处理l_key=0xff;I2C_start(); //I2C读数据的开始,到下面的结束是读一地址的整个过程,I2C_write(W24C02); //向I2C总线发出读取24C02的地址I2C_ACK(0); //下面就得你们自己结合I2C串口协议进行,先看看24C02数据手册是怎么讲I2C协议的I2C_write(l_address);//先写入地址,I2C_ACK(1);I2C_stop();I2C_start(); //再开始读取数据I2C_write(R24C02);I2C_ACK(0);tmp=I2C_read();I2C_ACK(1);I2C_stop(); //读取一个地址的数据结束l_tmpdate[0]=l_address/16; //数码管前两位显示地址(以16进制显示)l_tmpdate[1]=l_address%16; //将地址变量分开用两位数据l_tmpdate[3]=tmp/100; //后面用10进制数显示数据,中间用"-"隔开,数组l_tmpdate[2]tmp2=tmp%100; //8位二进制最大十进制为255,所以我们也将它分开三位显示l_tmpdate[4]=tmp2/10;l_tmpdate[5]=tmp2%10;break;}display(l_tmpdate,6);}}void _24c02wdate(unsigned char tmp)//对24C02的写数据处理函数{unsigned char tmp2=0;while(1){if (l_key==0x0c){ //如果按下*号键退出循环,即退出回到上一极函数l_key=0xff;break;}if(l_key==0x0e){ //如果按下#号键,将更改的数据写入24C02存储器l_key=0xff;I2C_start(); //下面是写一地址数据的过程I2C_write(W24C02); //先向总线发出写24C02的地址I2C_ACK(0);I2C_write(l_address); //写入地址I2C_ACK(0);I2C_write(tmp); //然后写入数据I2C_ACK(1);I2C_stop();break;}switch(l_key){ //下面是对数据的处理case 0x01: //如果按下1键,数据百位加1l_key=0xff;if(tmp<155)tmp+=100;break;case 0x02: //如果按下2键,数据十位加1l_key=0xff;if(tmp<245)tmp+=10;break;case 0x03: //如果按下3键,数据个位加1l_key=0xff;if(tmp<255)tmp++;break;case 0x04: //如果按下4键,数据百位减1l_key=0xff;if(tmp>=100)tmp-=100;break;case 0x05: //如果按下5键,数据十位减1l_key=0xff;if(tmp>=10)tmp-=10;break;case 0x06: //如果按下6键,数据个位减1l_key=0xff;if(tmp>0)tmp--;break;}l_tmpdate[3]=tmp/100; //地址不变我们不用修改,更改数据显示即可tmp2=tmp%100;l_tmpdate[4]=tmp2/10;l_tmpdate[5]=tmp2%10;display(l_tmpdate,6);}}void I2C_write(unsigned char tmp)//I2C写入一个8位二进制数,高位在前低位在后{unsigned char i;for(i=0;i<8;i++){SCL=0;_nop_();_nop_();_nop_();SDA=(bit)(tmp&0x80);tmp<<=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();}SCL=0;}unsigned char I2C_read(void)////I2C读取一个8位二进制数,也是高位在前低位在后{unsigned char i,tmp;tmp=0;for(i=0;i<8;i++){SCL=0;_nop_();_nop_();_nop_(); //加入空指令增加稳定性,这关系到频率问题SDA=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();tmp<<=1;if(SDA==1)tmp++;}SCL=0;return tmp;}void I2C_ACK(bit tmp) //根据tmp的1、0来决定应答信号{SDA=tmp;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;}void I2C_start(void) //看看I2C开始的波形,再对应SDA、SCL的输出{SDA=1;_nop_();SCL=1;_nop_();SDA=0;_nop_();SCL=0;_nop_();}/*********/void I2C_stop(void) //I2C结束{SDA=0;_nop_();SCL=1;_nop_();SDA=1;_nop_();SCL=0;_nop_();}。

课程设计(论文)-基于i2c协议的eeprom读写功能实现[管理资料]

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

2)需要有EEPROM读写功能的具体实现过程。

二.设计目的通过设计,了解I2C协议的基本原理,并对EEPROM读写功能的实现有个系统的概念,对其实现过程比较清楚。

同时,在设计中,巩固我们所学的理论知识。

三.器件EEPROM的介绍1.EEPROM简介EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。

EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。

EEPROM即电可擦写可编程只读存储器,其可通过高于普通电压的作用来擦除和重编程(重写)。

不像EPROM芯片,EEPROM不需从计算机中取出即可修改。

在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数。

EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于linux的EEPROM的读写控制设计毕业设计[论文]题目:基于linux的EEPROM的读写控制毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。

据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。

对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。

作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。

有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。

学校可以公布论文(设计)的全部或部分内容。

保密的论文(设计)在解密后适用本规定。

作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它目录摘要 (II)ABSTRACT (III)1绪论 (1)1.1开发背景 (1)1.2 EEPROM的开发意义 (1)2LINUX技术简介 (3)2.1 开发工具简介 (3)2.2 编译工具简介 (5)2.3 bootloader简介 (6)3操作系统的移植 (8)3.1 LINUX内核的移植 (8)3.2 LINUX内核的目录结构 (9)3.3 LINUX源代码的安装 (10)4EEPROM的概要设计 (13)4.1 IIC总线的读/写控制逻辑 (13)4.2 设计操作过程 (16)4.3 设计参考程序 (17)4.4 实验结果分析 (20)结束语 (21)参考文献 (22)致谢 (23)基于linux的EEPROM的读写控制摘要本文着眼于在linux开发环境下实现EEPROM的读/写控制访问方法.Linux操作系统作为新兴的操作系统,具有内核强大、开源、易扩展和裁减以及丰富的硬件支持等诸多优点,其嵌入式应用具有实时处理能力,广泛应用于智能设备、智能仪器仪表、信息电器领域。

随着计算技术向微型化、网络化方向的发展,嵌入式软件极大地提高了传统工业控制、医疗、办公乃至家用消费类电子产品的附加值和易用性,市场应用前景极为广阔。

项目必要性软件在信息系统中起着核心和灵魂的作用。

本设计在EduKit2410实验平台上,通过编写程序在EEPROM器件AT24C04进行读写访问,掌握EEPROM器件在LINUX下的读/写访问方法,然后把实验数据写入整个EEPROM 的存储空间,接着读出来而进行比较[8]。

通过检测EEPROM器件AT24C04 和处理器 I2C 总线接口及驱动程序的工作是否正常,比较写入数据与读出数据的结果。

关键词: EEPROM I2C总线读写控制Based on Linux Read-Write control of EERROMAbstractThis article focuses on realizing read/writes control access method of EEPROM under the linux development environment. The Linux operating system as a emerming operating system, has strong core, open - source, easy to expand and the reduction and the rich hardware support and so on, its embedded application has the real-time processing ability, widely applies in the intelligent equipment, the smart instrument measuring appliance, the information electric appliance domain. Along with the computation technology to the microminiaturization, the network direction developing, the embedded software enhanced the tradition industrial control, medical, the work and even the home use expense class electronic products added value and the usability enormously, the market application prospect is extremely broad. The project necessary software is playing the core and the soul role in the information system.This design is in EduKit2410 experiment platform, carries on the read-write visit through the write program in AT24C04 of EEPROM component AT24C04, grasps the access method under the Linux of write-read in EEPROM component, then read and compare it. Through examineing AT24C04 of EEPROM component and the processor I2C bus interface ,then examining if the driver work is normal, comparing the result of write data and read date.Key words:EEPROM I2C Bus Read-Write control1 绪论1.1开发背景linux是当前最流行的操作系统之一。

它具有高效、健壮、安全以及功能齐全等特性,因而赢得了人们的青睐。

它是一个完全免费的UNIX操作系统,来自世界各地的志愿者为这个充满魅力的操作系统的发展贡献着自己的才能。

可以说,LINUX的发展凝聚了世界各地无数开发人员的大量心血,体现了一种信息世界的共建、共享和共荣的精神[1]。

Linux操作系统作为新兴的操作系统,其嵌入式应用具有实时处理能力,可广泛应用于智能设备、智能仪器仪表、信息电器领域。

随着计算技术向微型化、网络化方向的发展,嵌入式软件极大地提高了传统工业控制、医疗、办公乃至家用消费类电子产品的附加值和易用性,市场应用前景极为广阔。

项目必要性软件在信息系统中起着核心和灵魂的作用。

与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。

Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备的绝佳资源。

在保持Linux内核系统更小、更稳定、更具价格竞争力等优势的同时,对系统内核进行实时性优化,使之适应于对工业控制领域高实时性的要求。

这是嵌入式linux操作系统更适合在嵌入式工控系统中应用[2]。

Linux是免费的操作系统。

Linux的创始人LinusTorvalds 将Linux适时地放到GNU公共许可证下,使得Linux本身在短短的几年发展成为一个稳定,健壮的OS,也使得人们不用花钱就可以使用。

使得操作系统真正走上平民化。

Linux的源代码是开放的,源代码随处可得,即使最困难的问题也有办法解决,不存在黑箱技术。

遇到问题时可通过网络,得到丰富的技术支持。

可以看出,Linux用于嵌入式系统方面是可行的,具有广泛的应用前景[3]。

1.2EEPROM的开发意义EEPROM是一种具有掉电记忆功能的存贮器,其内容可以象普通RAM一样进行改写,而且改写时能够自动擦除并换成新内容。

它不象EPROM那样需要紫外线擦除;而只需用电即可擦除并改写存贮在其内部的内容。

EEPROM通常在内部带有编程电源。

由于它只需外接单一+5V电源,因此使用起来十分方便。

和串行芯片相比,并行EEPROM的电路接口和编程设计均简单得多,所以在对电路板面积要求不很苛刻的情况下,使用EEPROM存贮器还是十分的方便。

电可擦除可编程EEPROM在应用系统中既可由软件对其内容进行随机读写,又可在芯片断电的情况下长期保存片内信息,因此兼备了RAM和ROM的基本特点。

EEPROM有串行和并行两大类。

并行EEPROM存储容量较大,读写方法简单,但价格较高,适用于信息量较多的场合。

串行EEPROM结构简单紧凑,价格低廉,但其读写方法复杂,存储单元较小,一般用于掉电情况下需要保存或一些数据需要在线修改的场合,这类数据不多却很重要,若使用常规的RAM芯片,就必须附带一套性能可靠的掉电保护系统,这不仅增加了线路设计的复杂性,同时也给设备的运行和维护带来了诸多不便。

使用串行EEPROM来存储这类数据是最合适不过的[4]。

尤其随着当今智能化仪表趋于小型化,再加上真正需要保存的以及预设的数据位、控制位、保密位并不占据太多的存储空间,串行EEPROM的体积小,功耗低,硬件接口非常简单,因而越来越受到人们的重视,在智能化仪器仪表、控制装置等领域得到广泛的应用。

2LINUX技术简介2.1开发工具简介开发嵌入式linux系统最方便的方法还是够建一个标准的linux开发环境。

相关文档
最新文档