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

相关文章

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序