首页 > 系统相关 >Linux平台I2C多字节数据、按页连续读写E2PROM Demo(AT24C16)

Linux平台I2C多字节数据、按页连续读写E2PROM Demo(AT24C16)

时间:2024-06-22 22:28:22浏览次数:25  
标签:字节 16 Demo 按页 AT24C16 地址 源码 数据 E2PROM

1)Linux 平台I2C多字节数据按页连续读写E2PROM之AT24C16小知识,分享给将要学习或者正在学习Linux平台I2C多字节按页连续读写E2PROM开发的同学。

2)内容属于原创,若转载,请说明出处。

3)提供相关问题有偿答疑和支持。

我测试使用的是 E2PROM(AT24C16)芯片,其中内部地址是1010 外部的地址(A0~A2)是接地000,因此实际测试的时候需要将地址右移一位:0x50,先使用i2c的测试工具来dump下数据:

下面来测试一次性写5字节数据:从0地址开始(源码1)


实际测试当一次性向0地址发送超过16字节的时候,就会覆盖前面的地址数据:

因此对于E2PROM可能一次性最大的写地址数据长度值16字节,超过16字节需要换地址;下面是改进的写,写全部的寄存货器地址:(源码2)



如下是测试写完以后读取数据:

读数据发现和写数据不一样,读数据可以连续读:(源码3)

疑问:当一次性向0地址发送超过16字节的时候,就会覆盖前面的地址数据,为什么?
首先以上的Demo本身支持一次性发送多个字节,但是由于E2PROM的原因限制,一次最多可以发送16字节,为什么呢?下面看下E2PROM的数据手册,我是用测试的AT24C16:

手册上说AT24C16支持字节写和页写模式:字节写就是一个地址一个数据的写;页写是连续写数据,一个地址多个数据的写,但是页写不能自动跨页,如果超出一页长度,超出的数据会覆盖原先写入的数据。

一页最多写16字节:

因此以上源码需要修改,使用每当16字节写完,需要换页才可以正确的写。完整源码已经附在主页有链接。

标签:字节,16,Demo,按页,AT24C16,地址,源码,数据,E2PROM
From: https://blog.csdn.net/EmLinuxDeveloper/article/details/139888867

相关文章

  • SqlserverCDCcrudSourceSink mssql数据实时同步demo
    packageorg.hu.fk.datastream_connector;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.ververica.cdc.connectors.base.options.StartupOptions;importcom.ververica.cdc.connectors.shaded.org.apache.kafka.connect.data.Fie......
  • 米尔全志T527系列加推工控板和工控机,更多工业场景DEMO
    自米尔首发基于全志T527系列核心板以来,这款基于八核CPU的高性能国产核心板得到广大客户的好评。这款产品支持Android13、Linux5.15操作系统,还将适配Ubuntu系统,满足开发者们更灵活地开发各种创新应用。米尔为满足不同的客户需求,推出基于全志T527的全系列的产品:米粉派T527、MYD-LT5......
  • WPF绘制3D小demo
    试过了WPF原生3D和HelixToolkit.Wpf,感觉还是SharpDX的效果比较好,所以使用了HelixToolkit.Wpf.SharpDX初学,仅供参考,没搞懂怎么双面渲染,所以每个面用了2个三角形分别显示正面和反面 <Grid><hx:Viewport3DXEnableSwapChainRendering="True"FXAALevel="Low"Backg......
  • DEMO_02:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序
    /***考核点:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序*<p>*题目:*1.使用while循环获取20个五位数随机数并打印;*2.遍历20个数,筛选出随机数中3的倍数,并统计个数;*3.符合2的数中,找出五位数中3的倍数和位置*4.符合2的数中,把这五位数......
  • H5移动端加载预览pdf文件——demo
    前言:正常情况下需要在HTML中嵌入本地docx或pdf文件时,我们会有以下解决办法:1.使用<iframe>标签2.使用<embed>标签3.使用<object>标签4.使用第三方库(如PDF.js)当实际操作时,会发现前三种方式在pc端支持,但在移动端不支持,因为这些标签在移动端浏览器中的支持并不统一。为了兼容移......
  • DEMO_01:List数据存储,回调函数,集合转字符串,元素去重
    *题目:*1.构建属性结构List<DemoNode>data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)*2.将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String>list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办*3.将list里元素去重后......
  • 实现一个实时数据平台的小型demo
    近期自己梳理了一下自己所属业务线上的数据中台技术栈,以常见的实时链路为例,从最初的埋点到数据服务层查询到结果,依次经过:1、埋点上报2、写入消息队列3、flink读取队列4、flink写入clickhouse或hbase5、spring项目提供查询和接口返回搭建个简易版的实时数据平台流程跑......
  • Demo | 利用机器学习构建作物模型的Python源码
    作物模型提出很早,但应用有限。看起来复杂,其实解决的是环境与表型间的关联,可参考前期推文:作物生长模型CropGrow。环境组的复杂,关键在于数据的准确性获取。对于数据分析人员来说,如果不care数据准确性,分析其实很简单的,就是经典的机器学习流程。这里提供一段伪代码仅供参考。1.导库......
  • clion+msvc+qml demo
    CMake设置-DCMAKE_PREFIX_PATH=C:\Qt\6.6.2\msvc2019_64demo工程结构:├───CMakeLists.txt└───main.cpp└───Main.qml└───MyObject.cpp└───MyObject.h└───MyRectangle.qmlCMakeLists.txtcmake_minimum_required(VERSION3.16)project(qmltest02......
  • youcomplete的vimrc配置文件demo
    离开youcompleteme,vim的使用体验差很多。下面是vimrc文件中ycm相关配置demo。对于C/C++语言的语法补齐需要安装clangd.setnusetexpandtabsettabstop=4setshiftwidth=4setmouse=asetshell=bashsethlssetencoding=utf-8"YoucomPleteMe:语句补全插件",reftoh......