有关AT24C02/04/08的区别:02有2k的空间,04有4k,08有8k,每2k作为一个page;

器件地址的区别:

根据芯片手册:

可以看到:对于2k的器件,A2,A1,A0均作为地址位;对于4k的器件,A2和A1作为地址位,而A0位则作为寻页位,也就是A0为0时,选定第一页,A0为1时,选定第二页;而对于8k的器件,仅有A2位作为地址位,而A1和A0均作为寻页位,当A1A0为:00,01,10,11时,依次对应第1,2,3,4页。

而最低位为确定读还是写操作,为0时表示写操作,1表示读操作。

所以对于本次使用的AT24C08,进行写操作时,其器件地址可以为 0xA0 | XX(XX为00,01,10,11);进行读操作时,其器件地址可以为 0xA1 | XX(XX为00,01,10,11).

对应写操作的时序图:

/**@breif   指定地址写入一个字节*@param  器件地址(写):0xA0|XX,XX可以为00,01,10,11,表示不同页(总共1024k)数据所在地址:0x00~0xFF要写入的一个字节:Data*@retval     无
*/
void AT24C08_WriteByte(uint8_t DeviceAdd_W,uint8_t DataAdd,uint8_t Data)
{IIC_Start();IIC_Send_Byte(DeviceAdd_W);IIC_Wait_Ack();IIC_Send_Byte(DataAdd);IIC_Wait_Ack();IIC_Send_Byte(Data);IIC_Wait_Ack();IIC_Stop();Delay_ms(2);
}

值得注意的是:进行EEPROM写操作是需要一定的写入时间,否则数据会产生混乱。

对应读操作的时序图:

/**@breif   指定地址读取一个字节*@param  器件地址(写和读):0xA0|XX,XX可以为00,01,10,11,表示不同页(总共1024k)数据所在地址:0x00~0xFF*@retval 读取到的数据:Data
*/uint8_t AT24C08_ReadByte(uint8_t DeviceAdd_W,uint8_t DeviceAdd_R,uint8_t DataAdd)
{uint8_t Data;IIC_Start();IIC_Send_Byte(DeviceAdd_W);IIC_Wait_Ack();IIC_Send_Byte(DataAdd);IIC_Wait_Ack();IIC_Start();IIC_Send_Byte(DeviceAdd_R);IIC_Wait_Ack();Data = IIC_Read_Byte(0);//No AckIIC_Stop();return Data;
}

而进行EEPROM读操作连续读是没有问题的。

主函数进行验证:

#include "stm32f10x.h"                  // Device header
#include "I2C.h"
#include "AT24C08.h"
#include "OLED.h"
#include "Delay.h"int main(void)
{uint8_t Num1 = 0,Num2 = 0,Num3 = 0,Num4 = 0;OLED_Init();IIC_Init();AT24C08_WriteByte(0xA0,0x00,11);//在第1页的0x00写11AT24C08_WriteByte(0xA2,0x00,22);//在第2页的0x00写22AT24C08_WriteByte(0xA4,0x00,33);//在第3页的0x00写33AT24C08_WriteByte(0xA6,0x00,44);//在第4页的0x00写44Num1 = AT24C08_ReadByte(0xA0,0xA1,0x00);Num2 = AT24C08_ReadByte(0xA2,0xA3,0x00);Num3 = AT24C08_ReadByte(0xA4,0xA5,0x00);Num4 = AT24C08_ReadByte(0xA6,0xA7,0x00);//逐个读取OLED_ShowString(2,1,"Read Num:");while(1){OLED_ShowNum(2,10,Num1,3);Delay_s(1);OLED_ShowNum(2,10,Num2,3);Delay_s(1);OLED_ShowNum(2,10,Num3,3);Delay_s(1);OLED_ShowNum(2,10,Num4,3);Delay_s(1);}
}

最终结果:

基于STM32的AT24C08数据读写相关推荐

  1. 基于STM32的智能数据采集系统

    基于STM32的智能数据采集系统 介绍 由STM32C8T6作为主控芯片,控制温湿度传感器与光照强度传感器来检测温湿度值和光照强度值,取得的数据经过处理后可在0.96寸OLED显示屏上实时显示,还可根 ...

  2. MySQL 基于maxscale服务构建数据读写分离

    目录 MySQL 基于maxscale服务构建数据读写分离 读写分离概述 读写分离原理 MySQL读写分离 案例拓扑 构建读写分离 构建思路 基于maxscale服务配置数据读写分离 配置mysql一 ...

  3. 基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计

    目录 前言 STM32F103ZET6单片机 RC522 相关引脚连接 准备工作 Mifare卡 读卡过程 最终实现功能 代码 RC522.C代码 RC522.H main.c led.h 前言 本人 ...

  4. 基于 STM32对音频数据的 Flash 读取与 DAC 播放

    目录 1 项目准备1.1 具体要求 1.2 项目环境 2 原理简介 2.1 STM32 的内部 FLASH 2.2 STM32 的 DAC 通道2.2.1 何为 DAC 2.2.2 STM32 的 D ...

  5. 基于STM32单片机采集数据数据上云

    前言 以往采集数据均是采用Arduino开发板.esp32wifi模块等,本次实验采用的是STM32单片机,STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex- ...

  6. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告

    中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专    业:电子科学与技术 班    级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...

  7. 【FatFs】基于STM32 SD卡移植FatFs文件系统

    相关文章 <[SDIO]SDIO.SD卡.FatFs文件系统相关文章索引> 1.前言 FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统.它完全是由 ANSI C 语 ...

  8. 基于STM32的农业灾害监测系统设计

    毕业论文(设计) 基于STM32的农业灾害监测系统设计 院:XX 学院(三号黑体字,下同) 业:XXXX 班 级:XXXX 班 名:X X X 号:2006XXXXXXX 指导教师:X X X 20X ...

  9. stm32采集脉冲信号_基于STM32+FPGA的数据采集系统的设计与实现

    引言 由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任.针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多 ...

  10. 基于STM32的Flash读写详解

    基于STM32的Flash读取 前言 介绍 STM32 FLASH 闪存的编程和擦除 Flash读写的标准库函数 软件设计 FLASH的读取 直接读取某一地址的内容 读取选定位置的选定大小的内容 FL ...

最新文章

  1. 90行代码!大一学生自学编程,自创搜题网站,已在GitHub开源
  2. python之numpy基础_Python知识普及:Numpy基础操作
  3. 划线价格怎么弄java_京东可以设置划线价格吗?怎么设置?
  4. linux mysql 5.6.23_MySQL 5.6.23升级到MySQL 5.7.9
  5. 谷歌提出 RNN 版 Transformer,或为长文本建模的当前最优解
  6. 转载:SQL server2005 里面没有management studio!下载SQL开发版本
  7. zeroc ice的概念、组成与服务
  8. Oracle中奇怪的【不等于号】
  9. python汉字转到ascii码_python中ASCII码字符与int之间的转换方法
  10. CCS安装教程——学习DSP的第一步
  11. OpenCV 实现读取摄像头、视频读取保存 (C++)
  12. 叩丁狼java培训:LinkedList的原理介绍
  13. 磷脂PEG磷脂,DSPE-PEG-DSPE
  14. Go语言开发工具 LiteIDE X27 发布
  15. 处理 __iob_func 无法链接的问题
  16. 嵌入式计算机的生活应用,嵌入式系统在生活中有哪些应用
  17. 今天没有穿内裤._今天...
  18. Linux命令——bash
  19. 理想低通滤波器(频率域滤波)
  20. 什么是联盟营销以及如何使用它在网上赚更多的钱

热门文章

  1. 使用C语言创建顺序表
  2. c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
  3. mysql 数据恢复软件_Recovery Toolbox for MySQL(MySQL数据库修复软件)
  4. 学前端的记录帖html+css b站千峰19版
  5. linux的vmstat命令,vmstat命令参数详解
  6. 银行行号和银行代码是一样的吗?区别是什么?
  7. ae编程语言as_18种常用AE表达式解析
  8. 高薪设计师必修课 AE移动UI动效设计从入门到实战
  9. 项目过程管理(五)需求文档
  10. SegNet论文理解