【单片机】DS2431芯片,读写128个字节,程序

2024-06-17 07:12

本文主要是介绍【单片机】DS2431芯片,读写128个字节,程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ds2431p+t&r

stm32读写程序:
在这里插入图片描述
部分程序:


#include "sys.h"
#include "delay.h"
#include "usart.h"#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include "sys.h"
#include "DS2431.h"unsigned char serialNb[8];
unsigned char read_data[129] = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10,111, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 0xff};unsigned char write_data[129] = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10,111, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 2, 3, 4, 5, 6, 7, 0xff};
unsigned char status;
unsigned char debug = 0; /* 0: release, 1: debug Õý³£¸ø0 */u8 tim_data_finish_status = 0;
u8 start_tim = 0;
u8 rev_data_uart_buffer[600];
int rev_data_uart_buffer_cnt = 0;int rev_counter_deal = 0;//´¦ÀíµÄʱºòµÄ¼ÆÊýÆ÷
u8 rev_data_tmp = 0; //´¦ÀíµÄʱºòµÄÁÙʱ±äÁ¿
u8 rev_sm_cnt = 0; //´¦ÀíµÄʱºòµÄ¼ÆÊýÆ÷
u8 check_ifg = 0; //´¦ÀíµÄʱºòÊÇ·ñÐèÒª´¦Àíu8 retry = 3;//ÖØÊÔ´ÎÊý
u8 success_all = 0;//ÊÇ·ñ³É¹¦int main(void) {int idx = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                       /* ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ */delay_init();                                                           /* ÑÓʱº¯Êý³õʼ»¯ */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);              /* ¹Ø±Õjtag£¬Ê¹ÄÜSWD£¬¿ÉÒÔÓÃSWDģʽµ÷ÊÔ */delay_ms(500);                                                        /* µÈ´ýÎȶ¨ */uart_init(115200);                                                    /* uart */printf("************************************************ \r\n");printf("************************************************ \r\n");if (debug == 0) {while (1) {status = DS2431_Init();printf("DS2431_Init status: %d\r\n", status);if (DS2431_ReadRom(serialNb) == 0) {printf("ÒѾ­¶ÁÈ¡µ½ÐòÁÐÂë: %02X %02X %02X %02X %02X %02X %02X %02X\r\n",serialNb[7],serialNb[6],serialNb[5],serialNb[4],serialNb[3],serialNb[2],serialNb[1],serialNb[0]);/* Check serial number CRC */if (crc8(serialNb, 7) != serialNb[7]) {printf("CRCУÑ鲻ͨ¹ý£¬Ð¾Æ¬ÓÐÎÊÌâ.\r\n");} else {printf("CRC8 УÑéͨ¹ý£¬Æ÷¼þ´¦ÓÚÕý³£¹¤×÷ÖС£ \r\n");break;}} else {printf("ûÓжÁÈ¡µ½ÐòÁÐÂ룬ÇëÁ¬½ÓÆ÷¼þ¡£ \r\n");}delay_ms(1000);}}delay_ms(100);printf("************************************************ \r\n");printf("************************************************ \r\n");printf("¶ÁÈ¡128¸ö×Ö½ÚÖС£¡£¡£ \r\n");if (debug == 0) {status = DS2431_ReadMemory(0, 128, read_data);        /* ´ÓµØÖ·0¿ªÊ¼¶ÁÈ¡£¬¶ÁÈ¡128¸ö×Ö½Ú */} else {status = 0;                                             /* 0: success */}/* ´òÓ¡³ö¶ÁÈ¡µ½µÄÊý¾Ý */if (status == 0) {printf("¶ÁÈ¡µ½µÄÊý¾ÝΪ(16¿é£¬Ã¿¿é8¸ö×Ö½Ú)£º \r\n");for (idx = 0; idx < 128; idx++) {printf("%02X ", read_data[idx]);if ((idx + 1) % 8 == 0) {printf(" ");}if ((idx + 1) % 16 == 0) {printf("\r\n");}}printf("\r\n");} else {printf("¶Áȡʧ°Ü£¬´íÎóÂëΪ%d¡£ \r\n", status);}printf("************************************************ \r\n");printf("************************************************ \r\n");//¶ÁÈ¡ÆäËûµØÖ·µÄÊý¾Ýmemset(read_data, 0, sizeof(read_data));DS2431_ReadMemory(0x80, 8, read_data);printf("µØÖ·0080h Êý¾Ý0x%02X (±£»¤Ò³0)\r\n", read_data[0]);printf("µØÖ·0081h Êý¾Ý0x%02X (±£»¤Ò³1)\r\n", read_data[1]);printf("µØÖ·0082h Êý¾Ý0x%02X (±£»¤Ò³2)\r\n", read_data[2]);printf("µØÖ·0083h Êý¾Ý0x%02X (±£»¤Ò³3)\r\n", read_data[3]);printf("µØÖ·0084h Êý¾Ý0x%02X (¸´ÖƱ£»¤)\r\n", read_data[4]);printf("µØÖ·0085h Êý¾Ý0x%02X (¹¤³§)\r\n", read_data[5]);printf("µØÖ·0086h Êý¾Ý0x%02X (Óû§1)\r\n", read_data[6]);printf("µØÖ·0087h Êý¾Ý0x%02X (Óû§2)\r\n", read_data[7]);printf("************************************************ \r\n");printf("************************************************ \r\n");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µÄµÚ%02d¸ö¿éдÈë³É¹¦£¬Ã¿¸ö¿éÓÐ8¸ö×Ö½Ú¡£ \r\n", idx);} else {printf("ds2431µÄµÚ%02d¸ö¿éдÈëʧ°Ü£¬´íÎóÂëΪ%d¡£ \r\n", idx, status);}}delay_ms(100);printf("************************************************ \r\n");printf("************************************************ \r\n");printf("¶ÁÈ¡128¸ö×Ö½ÚÖС£¡£¡£ \r\n");if (debug == 0) {status = DS2431_ReadMemory(0, 128, read_data);        /* ´ÓµØÖ·0¿ªÊ¼¶ÁÈ¡£¬¶ÁÈ¡128¸ö×Ö½Ú */} else {status = 0;                                             /* 0: success */}/* ´òÓ¡³ö¶ÁÈ¡µ½µÄÊý¾Ý */if (status == 0) {printf("¶ÁÈ¡µ½µÄÊý¾ÝΪ(16¿é£¬Ã¿¿é8¸ö×Ö½Ú)£º \r\n");for (idx = 0; idx < 128; idx++) {printf("%02X ", read_data[idx]);if ((idx + 1) % 8 == 0) {printf(" ");}if ((idx + 1) % 16 == 0) {printf("\r\n");}}printf("\r\n");} else {printf("¶Áȡʧ°Ü£¬´íÎóÂëΪ%d¡£ \r\n", status);}printf("************************************************ \r\n");printf("************************************************ \r\n");while (1) {}
}void USART1_IRQHandler(void)                                          /* ´®¿Ú1ÖжϷþÎñ³ÌÐò */
{u8 Res;if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)      /* ½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ) */{Res = USART_ReceiveData(USART1);                      /* ¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý */}
}

全部程序

ds2431p+t&r 是这个封装:
在这里插入图片描述

TSOC封装:

在这里插入图片描述

这篇关于【单片机】DS2431芯片,读写128个字节,程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2