【单片机】DS2431,STM32,EEPROM读取与写入

芯片介绍: https://qq742971636.blog.csdn.net/article/details/132164189

接线

在这里插入图片描述

在这里插入图片描述

串口结果:

在这里插入图片描述

部分代码:

#include "sys.h"
#include "DS2431.h"unsigned char	serialNb[8];
unsigned char	write_data[128];
unsigned char	read_data[128];
unsigned char	status;unsigned char	position[5] = { 12, 41, 65, 89, 12 };
unsigned char	position_data[5];int main( void )
{int idx = 0;/* 初始化write_data 装ascii */for ( idx = 0; idx < 128; idx++ ){write_data[idx] = idx;}Stm32_Clock_Init( 9 );  /* 系统时钟设置 */uart_init( 72, 9600 );  /* 串口初始化为9600 */delay_init( 72 );       /* 延时初始化 */status = DS2431_Init();printf( "DS2431_Init status: %d\r\n", status );if ( DS2431_ReadRom( serialNb ) == 0 ){printf( "DS2431 found with serial number: %02X %02X %02X %02X %02X %02X %02X %02X\r\n", serialNb[0], serialNb[1],serialNb[2], serialNb[3], serialNb[4], serialNb[5], serialNb[6], serialNb[7] );} else {printf( "DS2431_ReadRom failed,请检查硬件连线 \r\n" );while ( 1 );}/* Check serial number CRC */if ( crc8( serialNb, 7 ) != serialNb[7] ){printf( "A DS2431 was found but the serial number CRC is invalid.\r\n" );while ( 1 );} else {printf( "CRC8 校验通过,器件处于正常工作中。 \r\n" );}/* 随机挑选几个位置写入数据0x55 */for ( idx = 0; idx < 5; idx++ ){status = DS2431_WriteByte( position[idx], 0x55 );if ( status == 0 ){printf( "ds2431的第%d个位置写入成功,写入数据为0x55。 \r\n", position[idx] );} else {printf( "ds2431的第%d个位置写入失败,错误码为%d。 \r\n", position[idx], status );}}/* 读取这几个位置的数据 */for ( idx = 0; idx < 5; idx++ ){status = DS2431_ReadByte( position[idx], position_data + idx );if ( status == 0 ){printf( "ds2431的第%d个位置读取成功,读取到的数据为0x%02X。 \r\n", position[idx], position_data[idx] );} else {printf( "ds2431的第%d个位置读取失败,错误码为%d。 \r\n", position[idx], status );}}delay_ms( 100 );printf( "************************************************ \r\n" );printf( "************************************************ \r\n" );printf( "读取128个字节中。。。 \r\n" );status = DS2431_ReadMemory( 0, 128, read_data ); /* 从地址0开始读取,读取128个字节 *//* 打印出读取到的数据 */if ( status == 0 ){printf( "读取到的数据为: \r\n" );for ( idx = 0; idx < 128; idx++ ){printf( "%d ", read_data[idx] );}printf( "\r\n" );} else {printf( "读取失败,错误码为%d。 \r\n", status );}/* 清空read_data */for ( idx = 0; idx < 128; idx++ ){read_data[idx] = 0;}delay_ms( 100 );printf( "************************************************ \r\n" );printf( "************************************************ \r\n" );printf( "写入128个字节中。。。 \r\n" );for ( idx = 0; idx < 16; idx++ ){status = DS2431_WriteMemory( idx, write_data + idx * 8 );if ( status == 0 ){printf( "ds2431的第%d个块写入成功,每个块有8个字节。 \r\n", idx );} else {printf( "ds2431的第%d个块写入失败,错误码为%d。 \r\n", idx, status );}}delay_ms( 100 );printf( "************************************************ \r\n" );printf( "************************************************ \r\n" );printf( "读取128个字节中。。。 \r\n" );status = DS2431_ReadMemory( 0, 128, read_data ); /* 从地址0开始读取,读取128个字节 *//* 打印出读取到的数据 */if ( status == 0 ){printf( "读取到的数据为: \r\n" );for ( idx = 0; idx < 128; idx++ ){printf( "%d ", read_data[idx] );}printf( "\r\n" );} else {printf( "读取失败,错误码为%d。 \r\n", status );}/* 清空read_data */for ( idx = 0; idx < 128; idx++ ){read_data[idx] = 0;}printf( "************************************************ \r\n" );printf( "************************************************ \r\n" );printf( "程序已经全部演示完毕,如果需要重新演示,请复位。 \r\n" );while ( 1 ){}
}

代码:https://github.com/xddun/blog_code_search

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32入门学习之定时器输入捕获

1.定时器的输入捕获可以用来测量脉冲宽度或者测量频率。输入捕获的原理图如下&#xff1a; 假设定时器是向上计数。在图中&#xff0c;t1~t2之间的便是我们要测量的高电平的时间(脉冲宽度)。首先&#xff0c;设置定时器为上升沿捕获&#xff0c;如此一来&#xff0c;在t1时刻可…

AI 绘画Stable Diffusion 研究(九)sd图生图功能详解-老照片高清修复放大

大家好&#xff0c;我是风雨无阻。 通过前面几篇文章的介绍&#xff0c;相信各位小伙伴&#xff0c;对 Stable Diffusion 这款强大的AI 绘图系统有了全新的认知。我们见识到了借助 Stable Diffusion的文生图功能&#xff0c;利用简单的几个单词&#xff0c;就可以生成完美的图片…

阿里云OSS对象存储的核心概念与购买应用

文章目录 1.OSS对象存储基本介绍1.1.OSS对象存储概念1.2.NAS与OSS存储的不同1.3.OSS的应用场景1.4.OSS术语对应表 2.购买OSS存储资源包3.KodCloud云盘接入OSS对象存储3.1.创建Bucket存储空间3.2.创建子用户用于管理Bucket3.3.获取用户的AccessKey3.3.为用户设置权限3.4.将Bucke…

MySQL和Redis如何保证数据一致性

MySQL与Redis都是常用的数据存储和缓存系统。为了提高应用程序的性能和可伸缩性&#xff0c;很多应用程序将MySQL和Redis一起使用&#xff0c;其中MySQL作为主要的持久存储&#xff0c;而Redis作为主要的缓存。在这种情况下&#xff0c;应用程序需要确保MySQL和Redis中的数据是…

软件测试常用工具总结(测试管理、单元测试、接口测试、自动化测试、性能测试、负载测试等)

前言 在软件测试的过程中&#xff0c;多多少少都是会接触到一些测试工具&#xff0c;作为辅助测试用的&#xff0c;以提高测试工作的效率&#xff0c;使用好了测试工具&#xff0c;能对测试起到一个很好的作用&#xff0c;同时&#xff0c;有些公司&#xff0c;也会要求掌握一…

__ob__: Observer 后缀的数组的取值方式

开发中&#xff0c;经常从接口、父组件中&#xff0c;拿到数组然后给新的数组使用&#xff0c; 但是&#xff0c;有时候会发现带有 __ob__: Observer 后缀的数组&#xff0c;对这种数组来说&#xff0c;你是无法取到这个数组的值的&#xff0c; 而且&#xff0c;离谱的是consol…

【深度学习--RNN 循环神经网络--附LSTM情感文本分类】

deep learning 系列 --RNN 循环神经网络 什么是序列模型 包括了RNN LSTM GRU等网络模型&#xff0c;主要用途是自然语言处理、语音识别等方面&#xff0c;比如生成乐曲&#xff0c;音频转换为文字&#xff0c;文本情感分类&#xff0c;机器翻译等等 标准模型的缺陷 以往的标…

flutter 常见的状态管理器

flutter 常见的状态管理器 前言一、Provider二、Bloc三、Redux四、GetX总结 前言 当我们构建复杂的移动应用时&#xff0c;有效的状态管理是至关重要的&#xff0c;因为应用的不同部分可能需要共享数据、相应用户交互并保持一致的状态。Flutter 中有多种状态管理解决方案&#…

0143 串

目录 4.串 4.1串的定义和实现 4.2串的模式匹配 部分习题 4.串 4.1串的定义和实现 4.2串的模式匹配 部分习题 1.设有两个串S1和S2&#xff0c;求S2在S1中首次出现的位置的运算称为&#xff08;&#xff09; A.求字串 B.判断是否相等 C.模式匹配 D.连…

Vue2(组件开发)

目录 前言一&#xff0c;组件的使用二&#xff0c;插槽slot三&#xff0c;refs和parent四&#xff0c;父子组件间的通信4.1&#xff0c;父传子 &#xff1a;父传子的时候&#xff0c;通过属性传递4.2&#xff0c;父组件监听自定义事件 五&#xff0c;非父子组件的通信六&#x…

麦肯锡发布《2023年度科技报告》!

在经历了 2022 年技术投资和人才的动荡之后&#xff0c;2023 年上半年&#xff0c;人们对技术促进商业和社会进步的潜力重新燃起了热情。生成式人工智能&#xff08;Generative AI&#xff09;在这一复兴过程中功不可没&#xff0c;但它只是众多进步中的一个&#xff0c;可以推…

总说绿幕直播抠像抠不干净?很有可能是你不知道这个神器!

在绿幕直播的时候&#xff0c;你是不是座位、绿幕、灯光都摆对了&#xff0c;但主播轮廓仍然有绿边和虚化的情况发生&#xff1f;这种很大可能就是你使用的直播抠像软件有问题。今天小编把市面上的常见直播软件来和vLive虚拟直播的抠像做一个对比&#xff0c;让你直观感受下他们…

机器学习笔记 - 基于PyTorch + 类似ResNet的单目标检测

一、获取并了解数据 我们将处理年龄相关性黄斑变性 (AMD) 患者的眼部图像。 数据集下载地址,从下面的地址中,找到iChallenge-AMD,然后下载。 Baidu Research Open-Access Dataset - DownloadDownload Baidu Research Open-Access Datasethttps://ai.baidu.com/bro…

基于ACF,AMDF算法的语音编码matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .......................................................................... plotFlag …

函数递归专题(案例超详解一篇讲通透)

函数递归 前言1.递归案例:案例一&#xff1a;取球问题案例二&#xff1a;求斐波那契额数列案例三&#xff1a;函数实现n的k次方案例四&#xff1a;输入一个非负整数&#xff0c;返回组成它的数字之和案例五&#xff1a;元素逆置案例六&#xff1a;实现strlen案例七&#xff1a;…

服务器遭受攻击之后的常见思路

哈喽大家好&#xff0c;我是咸鱼 不知道大家有没有看过这么一部电影&#xff1a; 这部电影讲述了男主是一个电脑极客&#xff0c;在计算机方面有着不可思议的天赋&#xff0c;男主所在的黑客组织凭借着超高的黑客技术去入侵各种国家机构的系统&#xff0c;并引起了德国秘密警察…

Mac如何打开隐藏文件中Redis的配置文件redis.conf

Redis下载(通过⬇️博客下载的Redis默认路径为&#xff1a;/usr/local/etc) Redis下载 1.打开终端进入/usr文件夹 cd /usr 2.打开/local/文件夹 open local 3.找到redis.conf并打开,即可修改配置信息

讯飞星火认知大模型全新升级,全新版本、多模交互—测评结果超预期

写在前面 版本新功能 1 体验介绍 登录注册 申请体验 2 具体使用 2.1 多模态能力 2.1.1 多模理解 2.1.2 视觉问答 2.1.3 多模生成 2.2 代码能力 2.2.1 代码生成 2.2.2 代码解释 2.2.3 代码纠错 2.2.4 单元测试 2.3 插件功能 2.3.1 PPT生成 2.3.2 简历生成 2.3.4 文档问答 3 其他…

Android学习之路(3) 布局

线性布局LinearLayout 前几个小节的例程中&#xff0c;XML文件用到了LinearLayout布局&#xff0c;它的学名为线性布局。顾名思义&#xff0c;线性布局 像是用一根线把它的内部视图串起来&#xff0c;故而内部视图之间的排列顺序是固定的&#xff0c;要么从左到右排列&#xf…

Android之版本号、版本别名、API等级对应关系(全)(一百六十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…