当前位置: 首页 > news >正文

【单片机】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

相关文章:

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

芯片介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132164189 接线 串口结果&#xff1a; 部分代码&#xff1a; #include "sys.h" #include "DS2431.h"unsigned char serialNb[8]; unsigned char write_data[128]; unsigned cha…...

c++11 标准模板(STL)(std::basic_stringbuf)(一)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbuf…...

flutter开发实战-WidgetsBinding监听页面前台后台退出状态

flutter开发实战-WidgetsBinding监听页面前台后台退出状态 在开发过程中&#xff0c;经常监听页面前台后台退出状态&#xff0c;这里用到了WidgetsBinding 一、WidgetsBinding是什么&#xff1f; WidgetsBinding是Flutter中最重要的Binding之一&#xff0c;它提供了与Widget…...

父进程等待子进程退出 / 僵尸进程孤儿进程

Q&#xff1a;父进程为什么要等待子进程退出&#xff1f; A&#xff1a;回顾创建子进程的目的&#xff0c;就是让子进程去处理一些事情&#xff0c;那么“事情干完了没有”这件事&#xff0c;父进程需要知道并收集子进程的退出状态。子进程的退出状态如果不被收集&#xff0c;…...

【LeetCode 75】第二十六题(394)字符串解码

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们字符串&#xff0c;让我们解码&#xff0c;那么该怎么解码呢&#xff0c;被括号【】包裹起来的字符串需要扩展成括号左边第…...

UNIX网络编程——TCP协议API 基础demo服务器代码

目录 一.TCP客户端API 1.创建套接字 2.connect连接服务器​编辑 3.send发送信息 4.recv接受信息 5.close 二.TCP服务器API 1.socket创建tcp套接字(监听套接字) 2.bind给服务器套接字绑定port,ip地址信息 3.listen监听并创建连接队列 4.accept提取客户端的连接 5.send,r…...

[保研/考研机试] KY163 素数判定 哈尔滨工业大学复试上机题 C++实现

题目链接&#xff1a; 素数判定https://www.nowcoder.com/share/jump/437195121691718831561 描述 给定一个数n&#xff0c;要求判断其是否为素数&#xff08;0,1&#xff0c;负数都是非素数&#xff09;。 输入描述&#xff1a; 测试数据有多组&#xff0c;每组输入一个数…...

iOS_crash文件的获取及符号化(解析)

文章目录 1. 使用 symbolicatecrash 解析 .ips 文件&#xff1a;2. 使用 CrashSymbolicator.py 解析 ips 文件3. 使用 atos 解析 crash 文件4. Helps4.1 .ips 文件获取4.2 .crash 文件获取4.3 获取 .dSYM 和 .app 文件4.4 使用 dwarfdump 查询 uuid 5. Tips6. 总结 1. 使用 sym…...

STM32定时器TIM控制

一、CubeMX的设置 1、新建工程&#xff0c;进行基本配置 2、配置定时器TIM2 1&#xff09;定时器计算公式&#xff1a;&#xff08;以下两条公式相同&#xff09; Tout ((ARR1) * PSC1)) / Tclk TimeOut ((Prescaler 1) * (Period 1)) / TimeClockFren Tout TimeOut&…...

网络请求中,token和cookie有什么区别

HTTP无状态&#xff0c;每次请求都要携带cookie&#xff0c;以帮助识别用户身份&#xff1b; 服务端也可以向客户端set-cookie&#xff0c;cookie大小限制为4kb&#xff1b; cookie默认有跨域限制&#xff0c;不跨域共享和传递&#xff0c;例如&#xff1a; 现代浏览器开始禁…...

Javaweb_xml

文章目录 1.xml是什么&#xff1f;2.xml的用途 1.xml是什么&#xff1f; xml 是可扩展的标记性语言 2.xml的用途 1、用来保存数据&#xff0c;而且这些数据具有自我描述性 2、它还可以做为项目或者模块的配置文件 3、还可以做为网络传输数据的格式&#xff08;现在 JSON 为主…...

http相关知识点

文章目录 长链接http周边会话保持方案1方案2 基本工具postmanFiddlerFiddler的原理 长链接 一张网页实际上可能会有多种元素组成&#xff0c;这也就说明了网页需要多次的http请求。可由于http是基于TCP的&#xff0c;而TCP创建链接是有代价的&#xff0c;因此频繁的创建链接会…...

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析 一、EventHub.cpp 监听 /dev/input/event0 节点流程二、EventHub.cpp 读取 /dev/input/event0 节点数据流程系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总…...

走出迷宫(多组输入bfs)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小明现在在玩一个游戏&#xff0c;游戏来到了教学关卡&#xff0c;迷宫是一个N*M的矩阵。 小明的起点在地图中用“S”来表示&#xff0c;终点用“E”来表示&#xff0c;障碍物用“#…...

Linux系统编程-终端、进程组、会话

一、终端的概念 在UNIX系统中&#xff0c;用户通过终端登录系统后得到一个Shell进程&#xff0c;这个终端成为Shell进程的控制终端&#xff08;Controlling Terminal&#xff09;&#xff0c;进程中&#xff0c;控制终端是保存在PCB中的信息&#xff0c;而fork会复制PCB中的信息…...

Linux部分文件操作记录

问题描述 多级文件夹下&#xff0c;有多个同名文件&#xff0c;以及其他无关文件&#xff0c;为了减轻体量&#xff0c;遍历目录&#xff0c;只保留对应文件 首先open terminal here find . -type f \( ! -name algo_imu.bin -a ! -name post_gnss_only_error.log -a ! -name…...

Android系统-进程-Binder2-Java层

引言&#xff1a; 对于Android系统&#xff0c;一般是从java层到native层&#xff0c;再到kernel驱动层&#xff0c;形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构&#xff0c;从java层到底层驱动层是怎么样的一个架构和原理的呢&#xff1f; 概念与…...

体渲染原理及WebGL实现【Volume Rendering】

体渲染&#xff08;Volume Rendering&#xff09;是NeRF神经场辐射AI模型的基础&#xff0c;与传统渲染使用三角形来显示 3D 图形不同&#xff0c;体渲染使用其他方法&#xff0c;例如体积光线投射 (Volume Ray Casting)。本文介绍体渲染的原理并提供Three.js实现代码&#xff…...

VUE3组件

组件基础 {#components-basics} 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行单独的思考。在实际应用中&#xff0c;组件常常被组织成层层嵌套的树状结构&#xff1a; 这和我们嵌套 HTML 元素的方式类似&#xff0c;Vue 实现了自己的组件…...

【iOS】autoreleasepool

来说一下最近在了解的autoreleasepool吧&#xff0c;我们可能平时书写过许多脑残代码&#xff0c;其有很多的缺陷但是我们可能当时学的比较浅就也不太了解&#xff0c;就像下面这样的&#xff1a; for (int i 0; i < 1000000; i) {NSNumber *num [NSNumber numberWithInt…...

从CI/CD流水线故障排查说起:当git pull显示已更新,但服务器文件纹丝不动时怎么办?

从CI/CD流水线故障排查说起&#xff1a;当git pull显示已更新&#xff0c;但服务器文件纹丝不动时怎么办&#xff1f; 在自动化部署的世界里&#xff0c;最令人抓狂的莫过于明明看到git pull输出"Already up-to-date"&#xff0c;却发现服务器上的代码纹丝未动。这种…...

VisualCppRedist AIO终极指南:一键解决Windows运行库缺失问题

VisualCppRedist AIO终极指南&#xff1a;一键解决Windows运行库缺失问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个革命性的Win…...

Kotaemon保姆级教程:从零开始搭建私有化RAG系统

Kotaemon保姆级教程&#xff1a;从零开始搭建私有化RAG系统 1. 为什么选择Kotaemon搭建RAG系统&#xff1f; 在当今信息爆炸的时代&#xff0c;企业面临着海量文档管理的挑战。无论是内部知识库、产品手册还是客户资料&#xff0c;如何快速准确地从中提取有价值的信息成为关键…...

免费绕过iOS 15-16.6激活锁的终极指南:applera1n工具详解

免费绕过iOS 15-16.6激活锁的终极指南&#xff1a;applera1n工具详解 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n applera1n是一款专为iOS设备设计的免费激活锁绕过工具&#xff0c;支持macOS和Lin…...

一键激活Windows和Office:告别繁琐的智能KMS工具指南

一键激活Windows和Office&#xff1a;告别繁琐的智能KMS工具指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统激活烦恼吗&#xff1f;KMS_VL_ALL_AIO 是你的终极解决方案&#xff…...

终极指南:如何在iOS 17-26系统上安全越狱并解锁iPhone隐藏功能

终极指南&#xff1a;如何在iOS 17-26系统上安全越狱并解锁iPhone隐藏功能 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &#x1f447; 项…...

Qwen3-VL-4B Pro商业价值:图文理解提效60%,人工审核成本下降45%

Qwen3-VL-4B Pro商业价值&#xff1a;图文理解提效60%&#xff0c;人工审核成本下降45% 在当今信息爆炸的时代&#xff0c;企业每天需要处理海量的图文内容——从商品图片审核到用户生成内容管理&#xff0c;从文档数字化到智能客服。传统的人工处理方式不仅效率低下&#xff…...

rk3568_总线设备模型匹配机制_注册dev

device注册过程1、首先将dev放入核的device链表中(platform_device_register) 2、将dev和内核中的驱动进行表较&#xff0c;若匹配则不进行后续比较&#xff0c;若不匹配&#xff0c;则一直比较直到遍历完所有的drv 3、匹配成功进入对应驱动的probe函数 platform_device_regist…...

zmq源码分析之mailbox_t

文章目录 概述 核心结构 核心成员及其作用 公开接口 1. 构造函数 2. 获取文件描述符 3. 发送命令 4. 接收命令 工作原理 命令传递流程 状态转换 技术特点 1. 线程安全设计 2. 高效的事件通知 3. 跨平台支持 4. Fork 安全 与其他组件的关系 使用场景 性能优化点 技术细节 1. 命令…...

别再手动点鼠标了!用这个Praat脚本批量提取音频时长和F1F2共振峰(附Excel作图教程)

语音数据分析自动化&#xff1a;用Praat脚本高效提取时长与共振峰 每次打开Praat软件&#xff0c;面对几十个甚至上百个音频文件时&#xff0c;你是否感到手指发酸&#xff1f;那些重复点击"Analyse"→"Formant"→"To Formant"的操作&#xff0c…...