【蓝桥杯单片机组】AT2C02 EEPROM

发布者:数字火花最新更新时间:2020-07-17 来源: eefocus关键字:蓝桥杯  单片机组  AT2C02  EEPROM 手机看文章 扫描二维码
随时随地手机看文章

这个也是iic总线结构!


在此总结一下iic的程序结构


在同一个函数内读、写操作(以读eeprom为例)


(1)开启总线


(2)写地址字,等待回应(写命令)


(3)写要读的地址,等待回应


(4)再次开启总线


(5)写地址字,等待回应(读命令)


(6)读要读的地址


(7)发出回应


(8)结束总线


放上代码:


unsigned char read_eeprom(unsigned char add)

{

unsigned char dat;

IIC_Start(); //(1)开启总线

IIC_SendByte(SlaveAddrW); //(2)写地址字,等待回应(写命令)

IIC_WaitAck();

IIC_SendByte(add); //(3)写要读的地址,等待回应

IIC_WaitAck();

 

IIC_Start(); //(4)再次开启总线

IIC_SendByte(SlaveAddrR); //(5)写地址字,等待回应(读命令)

IIC_WaitAck();

dat = IIC_RecByte(); //(6)读要读的地址

IIC_Ack(0); //(7)发出回应

IIC_Stop(); //(8)结束总线

return dat;

 

}





写eeprom的过程与PCF8591一样

void write_eeprom(unsigned char add,unsigned char dat)

{

IIC_Start();

IIC_SendByte(SlaveAddrW); //地址字

IIC_WaitAck();

IIC_SendByte(add); //传要写的地址

IIC_WaitAck();

IIC_SendByte(dat);    //要写的数字

IIC_WaitAck();

IIC_Stop(); //结束

somedelay(10); //适当延时

}


现在总结一下I2C官方驱动中的坑:


(1)需要改延时为33个nop


(2)读数据后的主机发出的回应是ack(0)

关键字:蓝桥杯  单片机组  AT2C02  EEPROM 引用地址:【蓝桥杯单片机组】AT2C02 EEPROM

上一篇:【蓝桥杯单片机组】PCF8591 关于蓝桥杯坑爹I2C的吐槽
下一篇:【蓝桥杯单片机组】(3)键盘

推荐阅读最新更新时间:2024-11-06 10:52

AVR单片EEPROM的读写
一 AVR存储类型 不要外挂方便使用 1.FLASH 存储程序代码 2.EEPROM 运行的数据掉电不丢失的 数据存储 分页的数据 3.SRAM 运行的临时数据 EEPROM:读写以字节为单位 通过专用指令或SPI、JTAG直接读写 使用RC震荡作为时钟,典型值为8.5ms 有时数据丢失的原因:刚上电电压不稳就操作、读写时被中断打断、程序跑飞了 怎样预防: 熔丝位的电压检测设置:低于电压就停止 熔丝位系统时钟的设置:设置上电暂停时间长一点 双字节存储,或加校验位 操作时尽量关中断 二 相关寄存器 存储器 需要数据和地址来操作
[单片机]
STM32入门学习笔记之EEPROM存储实验1
16.1 EEPROM概述 EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程,一般用在即插即用设备中。 这种存储芯片可以通过高于普通电压的作用来擦除或重写,EEPROM芯片一般用在需要频繁存储数据,但是数据量不大的场合,本实验以Atmel公司设计的AT24C02为例,来详细描述EEPROM的基本操作。 AT24C02是一片存储容量在2Kbit的的存储芯片,即存储容量512Byte,通过IIC总线协议进行数据通信,STM32F1内置的I
[单片机]
STM32入门学习笔记之<font color='red'>EEPROM</font>存储实验1
PIC写内部 EEPROM 问题探讨
在做一个项目时,需要对测试数据实时的保存,以被重新上电后读取.采用了PIC的内部EEPROM,正常读取时没有什么问题.反复上电掉电就出现了EEPROM被清0(改写). 查阅相关资料:EEROM写过程包括两个阶段:先擦除(电压为20V) 再写入(电压18V);EEPROM在写入过程中如果电压不稳定,很容易导致错误.先使用了软件冗余法,同一个data写在连续3个地址,使用时比较,只有2个相同时才使用.这样做,反复上电掉电出错几率小了很多,但是还是会出错.在反复上电100多次时还是出错.另一个解决办法就是使能BOD,写EEPROM时,先检测BOD.网上一位兄弟使用此方法反复上电2000多次才错误一次. 上述方法有两个致命缺陷:
[单片机]
以C语言完成读写24LCxx系列的EEPROM的实例
//************************************************************************ //* Using I2C Master Mode for access Slave (EEPRM) //* //* Written by: Richard Yang //* Sr. Corporate Application Engineer //* Microchip Technology Inc. //* Date: Oct. 3nd '2002
[单片机]
51proteus仿真:I2c总线和EEPROM2404的读写
仿真电路图: 仿真程序: #include reg52.h #include INTRINS.H #define uchar unsigned char #define uint unsigned int sbit SCL=P1^0; sbit SDA=P1^1; void delay(void) { _nop_(); _nop_(); _nop_(); _nop_(); } void InitI2C(void) { SDA = 1; SCL = 1; } void I2CStart(void) { SDA=1; delay(); SCL=1; delay(); SDA=0; delay(); SCL=0; }
[单片机]
51proteus仿真:I2c总线和<font color='red'>EEPROM</font>2404的读写
最新全能数控电源IC-ADP1043A
    1 通讯系统     1.1 I2C接口     ADP1043A的控制通过I2C接口被载出,ADP1043A接到I2C总线作为从属元件,由主控器件控制。     1.2 I2C地址     ADP1043A的I2C地址有外部从VDD端接到AGND的外部电阻来设置,表1列出了推荐的电阻值及相应的地址,8个不同的地址可用。     如果一个不正确的电阻值被用上,结果I2C地址会紧靠两地之间的临界处,一个标志就被设置出来。     在表1中推荐的值可以变化±2kΩ,ADP1043A扔回相同的地址。因此,推荐选择1%精度的电阻用于ADD端。     I2C地址0*58是广播地址,它允许多个部分同时写入,用广播地址提到表1中的
[电源管理]
最新全能数控电源IC-ADP1043A
stm8s eeprom读写
stm8s有自带的eeprom,起始地址是0x4000,终止到哪看手册,因为我用的时候只写一个4字节数据,配置如下: 入参:eeprom偏移地址,写入的数据 void eeprom_write(const unsigned char addr,unsigned long date) { asm( sim ); FLASH_CR1_FIX = 1;//编程时间固定为标准编程时间 FLASH_CR2_WPRG = 1;//使能字编程 FLASH_NCR2_NWPRG = 0;/使能字编程 do { FLASH_DUKR = 0xAE; FLASH_DUKR = 0x56; } wh
[单片机]
EEPROM 存储电台PLL子程序
这是一个单片机控制的收音机程序完整代码和原理图下载地址: http://www.51hei.com/bbs/dpj-19294-1.html 下面我我截图的一个子程序. #include STC12C5620AD.H #include EEPROM.H #include Channel_Handle.H /********************** 声明外部变量**************************/ /********************** EEPROM 存储电台PLL*************************/ void EEPROM_Save_PLL(uchar Index,uint Udata
[单片机]
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved