基于STM32的AT24C08数据读写
有关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数据读写相关推荐
- 基于STM32的智能数据采集系统
基于STM32的智能数据采集系统 介绍 由STM32C8T6作为主控芯片,控制温湿度传感器与光照强度传感器来检测温湿度值和光照强度值,取得的数据经过处理后可在0.96寸OLED显示屏上实时显示,还可根 ...
- MySQL 基于maxscale服务构建数据读写分离
目录 MySQL 基于maxscale服务构建数据读写分离 读写分离概述 读写分离原理 MySQL读写分离 案例拓扑 构建读写分离 构建思路 基于maxscale服务配置数据读写分离 配置mysql一 ...
- 基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计
目录 前言 STM32F103ZET6单片机 RC522 相关引脚连接 准备工作 Mifare卡 读卡过程 最终实现功能 代码 RC522.C代码 RC522.H main.c led.h 前言 本人 ...
- 基于 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 ...
- 基于STM32单片机采集数据数据上云
前言 以往采集数据均是采用Arduino开发板.esp32wifi模块等,本次实验采用的是STM32单片机,STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex- ...
- 基于STM32的多功能MP3设计 毕业设计(论文)开题报告
中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专 业:电子科学与技术 班 级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...
- 【FatFs】基于STM32 SD卡移植FatFs文件系统
相关文章 <[SDIO]SDIO.SD卡.FatFs文件系统相关文章索引> 1.前言 FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统.它完全是由 ANSI C 语 ...
- 基于STM32的农业灾害监测系统设计
毕业论文(设计) 基于STM32的农业灾害监测系统设计 院:XX 学院(三号黑体字,下同) 业:XXXX 班 级:XXXX 班 名:X X X 号:2006XXXXXXX 指导教师:X X X 20X ...
- stm32采集脉冲信号_基于STM32+FPGA的数据采集系统的设计与实现
引言 由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任.针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多 ...
- 基于STM32的Flash读写详解
基于STM32的Flash读取 前言 介绍 STM32 FLASH 闪存的编程和擦除 Flash读写的标准库函数 软件设计 FLASH的读取 直接读取某一地址的内容 读取选定位置的选定大小的内容 FL ...
最新文章
- 90行代码!大一学生自学编程,自创搜题网站,已在GitHub开源
- python之numpy基础_Python知识普及:Numpy基础操作
- 划线价格怎么弄java_京东可以设置划线价格吗?怎么设置?
- linux mysql 5.6.23_MySQL 5.6.23升级到MySQL 5.7.9
- 谷歌提出 RNN 版 Transformer,或为长文本建模的当前最优解
- 转载:SQL server2005 里面没有management studio!下载SQL开发版本
- zeroc ice的概念、组成与服务
- Oracle中奇怪的【不等于号】
- python汉字转到ascii码_python中ASCII码字符与int之间的转换方法
- CCS安装教程——学习DSP的第一步
- OpenCV 实现读取摄像头、视频读取保存 (C++)
- 叩丁狼java培训:LinkedList的原理介绍
- 磷脂PEG磷脂,DSPE-PEG-DSPE
- Go语言开发工具 LiteIDE X27 发布
- 处理 __iob_func 无法链接的问题
- 嵌入式计算机的生活应用,嵌入式系统在生活中有哪些应用
- 今天没有穿内裤._今天...
- Linux命令——bash
- 理想低通滤波器(频率域滤波)
- 什么是联盟营销以及如何使用它在网上赚更多的钱
热门文章
- 使用C语言创建顺序表
- c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
- mysql 数据恢复软件_Recovery Toolbox for MySQL(MySQL数据库修复软件)
- 学前端的记录帖html+css b站千峰19版
- linux的vmstat命令,vmstat命令参数详解
- 银行行号和银行代码是一样的吗?区别是什么?
- ae编程语言as_18种常用AE表达式解析
- 高薪设计师必修课 AE移动UI动效设计从入门到实战
- 项目过程管理(五)需求文档
- SegNet论文理解