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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SE语法总结博文(附思维导图)

Java中的规范 注释 //单行注释 /*多行注释 */ /**文档注释 */命名规范 命名时可以包含&#xff1a;字母、数字以及 下划线和 $ 符号等等。 但是不能以数字开头&#xff0c;也不能是关键字&#xff0c;且严格区分大小写。 类名&#xff1a;每个单词的首字母大写(大驼峰)&…

花钱就能过?PMP到底有没有用

在项目管理领域&#xff0c;PMP&#xff08;Project Management Professional&#xff09;认证常被看作是专业能力的金牌标准。 然而&#xff0c;伴随着这一认证的普及&#xff0c;也出现了一些质疑声&#xff0c;比如“PMP认证是否只是金钱和时间的投入就能获得的证书&#xf…

JavaWeb之JSP、EL表达式、JSTL标签

JSP JSP&#xff1a;Java Server Pages&#xff0c;是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。动态插值使用 <%值%> 的格式 jsp本质上就是servlet JSP九大内置对象 private JSPWriter out;//输出流对象 privat…

【代码随想录】【算法训练营】【第36天】[452]用最少数量的箭引爆气球 [435]无重叠区间 [763]划分字母区间

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 36&#xff0c;周三&#xff0c;最难坚持的一天~ 题目详情 [452] 用最少数量的箭引爆气球 题目描述 452 用最少数量的箭引爆气球 解题思路 前提&#xff1a;区间可能重叠 思路&#xff1a;…

【探索Linux命令行】从基础指令到高级管道操作的介绍与实践

目录 man 指令&#xff08;说明&#xff09; 介绍 cp 指令&#xff08;复制&#xff09; ​编辑 mv 指令&#xff08;移动&#xff09; ​编辑 cat 指令&#xff08;类似cout&#xff09; less&#xff08;查找&#xff09; head & tail&#xff08;打印&#xff…

【CT】LeetCode手撕—88. 合并两个有序数组

目录 题目1- 思路2- 实现⭐88. 合并两个有序数组——题解思路 2- ACM实现 题目 原题连接&#xff1a;88. 合并两个有序数组 1- 思路 模式识别 模式1&#xff1a;两个有序数组合并 ——> 双指针模式2&#xff1a;返回结果填充到 nums1[mn] ——> 需要开辟新的数组空间 …

Linux shell 重定向输入和输出

Linux shell 重定向输入和输出 1. Standard I/O streams2. Redirecting to and from the standard file handles (标准文件句柄的重定向)2.1. command > file2.2. command >> file2.3. command 2> file2.4. command 2>> file2.5. command < file2.6. comm…

餐饮食堂安全守护者:可燃气体报警器故障处理与检测要点解析

在餐饮食堂中&#xff0c;可燃气体报警器的正常运行对于预防火灾和保障人员安全至关重要。 接下来&#xff0c;佰德将围绕可燃气体报警器的故障现象识别、原因排查、安全操作准则、专业工具与备件、故障处理步骤、验证与测试以及维护与保养建议等方面进行详细阐述&#xff0c;…

VS2022打开.netcore2.2 问题解决

1.vs2022运行时一直提示异常 2.解决方法&#xff0c;双击当前的项目修改xxxx.csproj文件 把当前的版本修改为2.2.0即可重新编译运行

低代码开发平台

a.本质&#xff1a;降本增效的体系 1.强制统一组件库复用 2.提升系统一致性 3.降低开发资源投入 一、强制统一组件库复用&#xff1a;物料堆的建立 物料堆的形态&#xff1a;直联、整合 1.直联必须一层嵌套一层&#xff1a;el-form el-form-item el-input 2.整合是经过优…

快慢指针技巧

快慢指针技巧 在说快慢指针之前&#xff0c;我们先说一下双指针。 双指针 双指针&#xff1a;使用两个指针来解决问题。 所谓的指针其实就是指数组的下标&#xff0c;或者链表的节点的地址。 我们以数组为例介绍一下。 有两个指针分别存储着数组的两个下标&#xff0c;这就…

秋招突击——6/15——复习{(树形DP)树的最长路径,(单调队列优化DP)——最大子序和,无重复最长子串}——新作{四数之和}

文章目录 引言复习树形DP——树的最长路径实现代码答疑 单调队列优化DP——最大子序和个人实现思路参考思路分析实现代码 无重复最长字串思路分析实现代码 新作四数之和实现思路需要注意的问题 参考代码分析思路实现代码 总结 引言 今天好好看看树的最长的路径&#xff0c;自己…

JavaWeb之初识Tomcat

Tomcat 轻量级应用服务器、JSP、Servlet Tomcat目录结构 在IDEA中创建web项目 在这里不使用maven构建项目&#xff0c;这种方式后面会更新 新建一个java项目File -> Project Settings -> Facets -> -> Web -> OK ( 此时src目录下有一个web目录 )Edit ->…

39、基于深度学习的(拼音)字符识别(matlab)

1、原理及流程 深度学习中常用的字符识别方法包括卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;。 数据准备&#xff1a;首先需要准备包含字符的数据集&#xff0c;通常是手写字符、印刷字符或者印刷字体数据集。 数据预处理&#xff1…

ElasticSearch + kibana:类型声明

当我们使用 kibana 创建索引时&#xff0c;如果不申明数据类型&#xff0c;默认字符串赋予 text类型&#xff0c;如下图所示 接下来我们继续创建多条数据如下&#xff1a; 下面我们来检索下&#xff1a; 通过以上两个案例我们发现&#xff0c;使用 match 模糊查询 li-3 明明…

智利企鹅濒临灭绝,回顾曾仕强的2025年预言!实干才是硬道理——早读(逆天打工人爬取热门微信文章解读)

你相信我们5000年凝结的精华易经吗&#xff1f; 引言Python 代码第一篇 洞见 有人晒出高考后家长支出清单&#xff0c;我觉得是时候告诉孩子挣钱的真相了第二篇 视频新闻结尾 引言 昨天有点破了 看小视频不小心看过头了 大概看了有2个小时 才醒悟过来 再接再厉呀&#xff01; …

vue3中如何使用pinia -- pinia使用教程(一)

vue3中如何使用pinia -- pinia使用教程&#xff08;一&#xff09; 安装使用创建 store使用 store访问修改 store 使用组合式 api 创建 store -- setup storepinia 和 hook 的完美结合如何解决上面的问题 使用 hook 管理全局状态和 pinia 有何优缺点&#xff1f;参考小结 pinia…

哈喽GPT-4o——对GPT-4o 文本创作的思考与看法

目录 用法1&#xff1a;创作小说用法2&#xff1a;创作散文用法3&#xff1a;创作诗歌1、古诗2、现代诗 用法4&#xff1a;创作儿童故事用法5&#xff1a;创作剧本 大家好&#xff0c;我是哪吒。 都说ChatGPT4o是目前文本创作的最强大模型&#xff0c;它都可以用于哪些方面的文…

ArcGIS 10.2软件安装包下载及安装教程!

今日资源&#xff1a;ArcGIS 适用系统&#xff1a;WINDOWS 软件介绍&#xff1a; ArcGIS是一款专业的电子地图信息编辑和开发软件&#xff0c;提供一种快速并且使用简单的方式浏览地理信息&#xff0c;无论是2D还是3D的信息。软件内置多种编辑工具&#xff0c;可以轻松的完成…

VirtualHere 允许通过网络远程使用 USB 设备,就像本地连接一样!

传统上&#xff0c;USB 设备需要直接插入计算机才能使用。有了 VirtualHere&#xff0c;就不再需要这样做&#xff0c;网络本身就变成了传输 USB 信号的电缆&#xff08;也称为 USB over IP、USB/IP、USB over WiFi、USB over Ethernet、USB 设备服务器&#xff09;。 此 USB …