14.6 EEPROM的页写入

2024-01-17 18:18
文章标签 写入 eeprom 14.6

本文主要是介绍14.6 EEPROM的页写入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在向 EEPROM 连续写入多个字节的数据时,如果每写一个字节都要等待几 ms 的话,整体上的写入效率就太低了。因此 EEPROM 的厂商就想了一个办法,把 EEPROM 分页管理。24C01、24C02 这两个型号是 8 个字节一个页,而 24C04、24C08、24C16 是 16 个字节一页。我们开发板上用的型号是 24C02,一共是 256 个字节,8 个字节一页,那么就一共有 32 页。

分配好页之后,如果我们在同一个页内连续写入几个字节后,最后再发送停止位的时序。EEPROM 检测到这个停止位后,就会一次性把这一页的数据写到非易失区域,就不需要像上节课那样写一个字节检测一次了,并且页写入的时间也不会超过 5ms。如果我们写入的数据跨页了,那么写完了一页之后,我们要发送一个停止位,然后等待并且检测 EEPROM 的空闲模式,一直等到把上一页数据完全写到非易失区域后,再进行下一页的写入,这样就可以在很大程度上提高数据的写入效率。
/*****************************I2C.c 文件程序源代码*******************************/
(此处省略,可参考之前章节的代码)
/***************************Lcd1602.c 文件程序源代码*****************************/
(此处省略,可参考之前章节的代码)
   
  1. /****************************eeprom.c 文件程序源代码*****************************/
  2. #include <reg52.h>
  3. extern void I2CStart();
  4. extern void I2CStop();
  5. extern unsigned char I2CReadACK();
  6. extern unsigned char I2CReadNAK();
  7. extern bit I2CWrite(unsigned char dat);
  8. /* E2 读取函数,buf-数据接收指针,addr-E2 中的起始地址,len-读取长度 */
  9. void E2Read(unsigned char *buf, unsigned char addr, unsigned char len){
  10. do { //用寻址操作查询当前是否可进行读写操作
  11. I2CStart();
  12. if (I2CWrite(0x50<<1)){ //应答则跳出循环,非应答则进行下一次查询
  13. break;

这篇关于14.6 EEPROM的页写入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616828

相关文章

Android/Linux 磁盘写入缓存/等待时间 参数修改

Linux系统当进行文件写操作时,并不会将数据立马写入磁盘,而是写写到缓存,等待达到占用内存一定比例或超过一定时间才会批量将这些缓存数据写入磁盘,这样可以减少IO操作,提升性能和磁盘寿命。如果数据还没来得及写入磁盘发生硬件掉电,这些数据就会丢失。应用可以调用sync实时将内容写入磁盘避免丢失。排查丢失问题可以在断电前执行sync命令,看能不能复现,若无法复现,说明就是缓存没有及时写入磁盘导致。

python读取pdf内容写入到Excel表格中

要从每个 PDF 文件中提取全文内容,并将这些内容粘贴到一个新的或现有的表格中,你可以使用 Python 的库来完成这一任务。以下是一个简化的步骤和示例代码,展示如何实现这个过程。 步骤概述 读取文件夹中的所有 PDF 文件。提取每个 PDF 文件的全文内容。创建一个新的 Excel 表格或使用现有的表格。将提取的内容粘贴到表格中,每个 PDF 的内容放在一个垂直单元格中。保存表格文件。 所

C++利用jsoncpp库实现写入和读取json文件(含中文处理)

C++利用jsoncpp库实现写入和读取json文件 1 jsoncpp常用类1.1 Json::Value1.2 Json::Reader1.3 Json::Writer 2 json文件3 写json文件3.1 linux存储结果3.2 windows存储结果 3 读json文件4 读json字符串参考文章 在C++中使用跨平台的开源库JsonCpp,实现json的序列化和反序列

基于 rt-thread的I2C操作EEPROM(AT24C02)

一、AT24C02 The AT24C01A/02/04/08A/16A provides 1024/2048/4096/8192/16384 bits of serial electrically erasable and programmable read-only memory (EEPROM) organized as 128/256/512/1024/2048 words of 8 b

包拯断案 | 数据库从库GTID在变化 为何没有数据写入@还故障一个真相

提问:作为DBA运维的你是否遇到过这些烦恼 1、数据库从库复制链路如何正确配置表过滤信息? 2、数据库从库的GTID在变化,实际却没有数据写入,究竟是什么原因? 心中有章,遇事不慌 作为DBA的你,遇到问题无从下手,除了在问题面前徘徊,还能如何选择?如果你一次或多次遇到该问题还是 无法解决,又很懊恼,该如何排忧呢?关注公众号,关注《包拯断案》专栏,让小编为你排忧解难~ #包拯秘籍#

Flink读取kafka数据并以parquet格式写入HDFS

《2021年最新版大数据面试题全面开启更新》 《2021年最新版大数据面试题全面开启更新》 大数据业务场景中,经常有一种场景:外部数据发送到kafka中,flink作为中间件消费kafka数据并进行业务处理;处理完成之后的数据可能还需要写入到数据库或者文件系统中,比如写入hdfs中; 目前基于spark进行计算比较主流,需要读取hdfs上的数据,可以通过读取parquet:spark.read

Java读取/写入Yaml配置文件

JYaml文件流读取/写入Yaml配置文件 yaml配置文件格式规范:- 表示sequence(list列表结构),: 表示map键值对 #以下是示例yaml结构age: 23children: - age: 8name: mary1sex: man- age: 9name: simon2sex: fatelname: simon.zhangsex: man 1.准备工作,创建

【C++】文件的读取与写入

C++的文件读取与写入感觉比起其它语言特别地难,对比起《【Python】文件读写操作》(点击打开链接)、《【PHP】让记事本成为你调控变量的控制台》(点击打开链接)与《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》(点击打开链接),C++最大的特点就是文件的输入流与输出流分开,同时最关键的是自身并没有字符串变量,在其文件的读取方法变量限制于字符数组char[],

Qt 创建一个json数组对象写入文档并从文档读出q

void createJsonArray() {     // 创建一个JSON数组     QJsonArray jsonArray;     // 创建一些JSON对象并添加到数组中     for (int i = 0; i < 3; ++i) {         QJsonObject jsonObject;         jsonObject["key" + QString::num

QString写入本地文件乱码问题

examContent 是 QString 类型,里面是html格式得一些内容,写得文件也是HTML文件(其他文件也同理)    QFile file(filePath);     if (file.open(QIODevice::WriteOnly | QIODevice::Text))     {         /*QDataStream out(&file);         out