Arduino I2C + AC24C32 EEPROM
主要特性
AC24C32是Atmel的两线制串行EEPROM芯片,根据工作电压的不同,有-2.7、-1.8两种类型。主要特性有:
- 工作范围:-2.7类型范围4.5~5.5V,-1.8类型1.8~5.5V。本文用的为-2.7类型。
- 待机功耗:与工作电压有关,见下图

- 容量:4096 x 8bits,即32k bits
- 接口:I2C,工作在5V时支持最大时钟频率400kHz,其他电压时100kHz
- 允许一次写一页(32-byte page write mode)
- 一次写动作完成的时间:与工作电压有关,最大20ms
- 写保护(write protect)功能
- 输入脚有施密特触发器,用于噪声抑制
- 可靠性:可写1百万次;数据可保存100年
- 封装:8-Pin PDIP/SOIC/TSSOP
管脚定义

- VCC:电源脚
- GND:地
- A0、A1、A2:器件I2C地址控制脚,7位I2C地址为0b1010A2A1A0。浮空时都为低电平。
- SCL、SDA:I2C接口时钟线、数据线。
- WP:写保护输入脚。当连接低电平时,器件正常读写;当连接高电平时,无法对前8k bits内容进行写入。浮空时为低电平。
与Arduino的连接

与Arduino UNO的I2C接口连接。
VCC连接5V;GND连接GND;AC24C32的SCL连接UNO的A5(SCL);AC24C32的SDA连接UNO的A4(SDA)。
功能调试
1. Page Write时,一次最多写入32个字节。当地址到达该页末尾时,会自动roll over到同一页的起始地址。
2. Sequential Read时,没有连续读取的字节数目限制(实际受限于Arduino的Wire库中buffer的大小)。当地址到达最后一页的末尾时,会自动roll over到首页的起始地址。
3. 写操作时,MCU发送stop后,AC24C32还需要一段tWR时间(tWR在5V供电时最大为10ms)进行内部工作,之后数据才正确写入。在tWR时间内,芯片不会回应任何接口的操作。
测试代码
以下代码向AC24C32写入了一段字符串,之后将写入的信息反复读出。
/*
access to EEPROM AT24C32 using Arduino
storage capacity: 32K bits (4096 bytes)
*/ #include <Wire.h> #define ADDRESS_AT24C32 0x50 word wordAddress = 0x0F00; //12-bit address, should not more than 4095(0x0FFF)
char str[] = "This is ZLBG."; //string size should not more than 32 and the buffer size
byte buffer[]; int i; void setup()
{
Wire.begin();
Serial.begin(); //write
Wire.beginTransmission(ADDRESS_AT24C32);
Wire.write(highByte(wordAddress));
Wire.write(lowByte(wordAddress));
for (i = ; i < sizeof(str); i++)
{
Wire.write(byte(str[i]));
}
Wire.endTransmission(); delay(); //wait for the internally-timed write cycle, t_WR
} void loop()
{
//read
Wire.beginTransmission(ADDRESS_AT24C32);
Wire.write(highByte(wordAddress));
Wire.write(lowByte(wordAddress));
Wire.endTransmission();
Wire.requestFrom(ADDRESS_AT24C32, sizeof(str));
if(Wire.available() >= sizeof(str))
{
for (i = ; i < sizeof(str); i++)
{
buffer[i] = Wire.read();
}
for(i = ; i < sizeof(str); i++)
{
Serial.print(char(buffer[i]));
}
Serial.println(); delay();
}
参考资料
AT24C32 - Atmel Corporation
Arduino playground: Using Arduino with an I2C EEPROM
xAppSoftware Blog: How to interface the 24LC256 EEPROM to Arduino
Arduino I2C + AC24C32 EEPROM的更多相关文章
- STM32F10x_模拟I2C读写EEPROM
Ⅰ.写在前面 说到IIC,大家都应该不会陌生,我们初学单片机的时候或多或少都知道或了解过,甚至使用I2C控制过器件.但是,有多少人真正去深入理解,或者深入研究过I2C通信协议呢? 1.我们有必要学习I ...
- STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
Ⅰ.写在前面 上一篇文章是“STM32F10x_模拟I2C读写EEPROM”,讲述使用IO口模拟I2C总线通信,对EEPROM(AT24Xxx)进行读写操作的过程. 上一篇文章主要内容:I2C协议.模 ...
- 第23章 I2C—读写EEPROM—零死角玩转STM32-F429系列
第23章 I2C—读写EEPROM 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- Arduino学习笔记⑦ EEPROM断电保存数据
1.前言 EEPROM,叫做电可擦可编程可读寄存器(是不是觉得好官方,不知道是什么鬼?反正我也一脸懵逼),只需要知道这是一种断电后数据不会丢失的存储设备,可以用来应对需要做记录做保存的场合.简 ...
- 转载:关于STM32硬件I2C读写EEPROM代码实现原理的理解与总结
http://home.eeworld.com.cn/my/space-uid-716241-blogid-655190.html 一.I2C协议简介 I2C是两线式串行总线,用于连接微控制器及其外围 ...
- am335x system upgrade kernel i2c rtc eeprom(六)
1 Scope of Document This document describes i2c bus hardware design and support i2c-devices: ee ...
- Arduino I2C + 三轴加速度计LIS3DH
LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能.主要特性有: 宽工作电压范围:1.71 ~ 3.6V 功耗:低功耗模式2μA:正常工作模式.ODR = 50Hz时功耗11μA ...
- I2C与EEPROM
一.基本概念 RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的.它在任何时候都可以读写,RAM 通常是作为操作系统或其他正在运 ...
- 基于FPGA的I2C读写EEPROM
I2C在芯片的配置中应用还是很多的,比如摄像头.VGA转HDMI转换芯片,之前博主分享过一篇I2C协议的基础学习IIC协议学习笔记,这篇就使用Verilog来实现EEPROM的读写,进行一个简单的I2 ...
随机推荐
- CSS 父级方法清除浮动方法
.baseMod:after { clear: both; content: ' '; display: block; visibility: none; height: 1% } 2. overfl ...
- leetcode844
class Solution { public: bool backspaceCompare(string S, string T) { stack<char> ST1; ; i < ...
- 使用ffmpeg合并视频文件的三种方法
ffmpeg合并视频的方法有三种.国内大多数仅介绍了其中之一.于是觉得有必要翻译一下.其实在ffmpeg的 FAQ文档中有比较详细的说明. 使用concat协议进行视频文件的合并 这种方式的适用场景是 ...
- Linux虚机密码破解
1 重启机器,在机器读秒时按回车键 2 选择要启动的操作系统按 e 3 选择kernel所在行按 e 4 末尾输入空格 single 5 敲回车 在按 b 系统将进入单用户模式 然后 可以 通过 p ...
- IE11 - Object doesn't support property or method 'includes'
IE不支持字符串的includes()方法:可以用indexOf()替换: includes()方法返回true和false; var str = "asdklmn": if(st ...
- Vertex Modifier of Surface Shader
[Vertex Modifier of Surface Shader] Surface shader compilation directive vertex:functionName 可以用于指定 ...
- OPEN LDAP
一.安装OPENLDAP 安装完成后退出 编辑两个文本,输入以下内容,并把文本文件改名为ldap01.ldif和ldap02.ldif. ldap01.ldif: dn: dc=maxcrc,dc=c ...
- 【LA2531 训练指南】足球联赛 【最大流】
题意: 有n支队伍进行比赛,每支队伍需要打的比赛数目相同.每场比赛恰好一支队伍胜,另一支败.给出每支队伍目前胜的场数和败的场数,以及每两支队伍还剩下的比赛场数,确定所有可能的冠军的球队.(获胜场数最多 ...
- Hibernate多对多操作
---------------------siwuxie095 Hibernate 多对多操作 以用户和角色为例 (一)多对多映射配置 第一步:创建两个实体类,用户和角色 第二步:让两个实体类之间互相 ...
- Git,GitHub以及GitLab的区别
Git - 版本控制工具 Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等 GitLab - 基于Git的项目管理软件 Git分布式版本控制系统 Git是一款 ...