杰发科技AC7801——读取Flash数据做CRC校验

news2024/11/26 16:22:19

查看Keil的编译结果发现总共6160个字节。计算结果如下,

代码如下

#include "ac780x_crc.h"
#include "ac780x.h"
#include "ac780x_debugout.h"
#include "string.h"
#include "ac780x_eflash.h"

#define TestSize 1024 ///< 4K
#define TestAddressStart 0x08000000
uint8_t Data[9000]; // 共6140 Bytes

uint32_t tmpResult = 0;                   /* CRC计算结果 */
uint32_t tmpCRCType = CRC_PROTOCOL_32BIT; /* CRC 支持16位和32位长度多项式 */
/**
 * @prototype main(void)
 *
 * @param[in] void
 * @return	 void
 *
 * @brief  	 main entry.
 *			 main函数.
 */

int main(void)
{
    CRC_ConfigType CRCConfig;
    memset(&CRCConfig, 0, sizeof(CRCConfig));

    CRCConfig.crcProtocolType = (CRC_ProtocolType)tmpCRCType;

    uint32_t CRCSeed = 0;

    InitDebug(); // Initialize debug UART 1

    // printf("AC7801: CRC_Demo\r\n");

    // if (tmpCRCType > 1)
    // {
    //     printf("tmpCRCType: 0: CRC-CCITT; 1: CRC-32! \r\n");
    //     return -1;
    // }

    EFLASH_UnlockCtrl();
    EFLASH_Read(TestAddressStart, (uint32_t *)Data, TestSize);
    EFLASH_Read(TestAddressStart + TestSize, (uint32_t *)Data + 256, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 2, (uint32_t *)Data + 256 * 2, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 3, (uint32_t *)Data + 256 * 3, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 4, (uint32_t *)Data + 256 * 4, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 5, (uint32_t *)Data + 256 * 5, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 6, (uint32_t *)Data + 256 * 6, 20);

    EFLASH_LockCtrl();

    printf("0x8000000  ");
    unsigned i = 0;
    while (i < 6160)
    {
        printf("%02x", Data[i]);
        i++;
        if (i % 16 == 0)
        {
            printf("\r\n0x%7x  ", 0x8000000 + i);
        }
    }

    printf("\r\n");
    // CRCDataLength = strlen((char *)CRCMsg); // Length of data

    if (tmpCRCType == CRC_PROTOCOL_32BIT) // CRC32 configuration
    {
        CRCConfig.poly = 0x4C11DB7; // CRC-32 Poly: 0x4C11DB7
        CRCSeed = 0xFFFFFFFF;       // CRC-CCITT seed: 0xFFFFFFFF
        CRCConfig.finalXOR = ENABLE;
        CRCConfig.readTransposeType = CRC_READ_TRANSPOSE_BITS_BYTES;
        CRCConfig.writeBytesNumOnce = CRC_WRITE_1_BYTE_ONCE;
        CRCConfig.writeTransposeType = CRC_WRITE_TRANSPOSE_BITS;
    }
    // else // CRC16 configuration
    // {
    //     CRCConfig.poly = 0x1021;     // CRC-CCITT Poly: 0x1021
    //     CRCSeed = 0xFFFF;            // CRC-CCITT seed: 0xFFFF
    //     CRCConfig.finalXOR = ENABLE; // disable final xor
    //     CRCConfig.readTransposeType = CRC_READ_TRANSPOSE_NONE;
    //     CRCConfig.writeTransposeType = CRC_WRITE_TRANSPOSE_BITS_BYTES;
    // }

    CRC_Init(&CRCConfig);

    // if (CRCConfig.crcProtocolType == CRC_PROTOCOL_16BIT)
    // {
    //     tmpResult = CRC_Check(CRCSeed, &CRCMsg[0], CRCDataLength);
    //     printf("CRC-CCITT, Poly:0x%X\r\n", CRCConfig.poly);
    // }
    // else
    {
        tmpResult = CRC_Check(CRCSeed, &Data[0], 6156);
        printf("CRC-32, Poly:0x%X\r\n", CRCConfig.poly);
    }
    printf("CRC result is: 0x%X\r\n", tmpResult);

    while (1)
        ;
}

发现去掉Flash内容后四位的值都是正确的,加上后四位值就不对了,这个据说是Flash的CRC值,但是跟计算出来的去掉4位的值不同。后续有空再慢慢研究。

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

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

相关文章

2024年第二届亚洲前沿图像处理会议(AAIP 2024)即将召开!

2024年第二届亚洲前沿图像处理会议(AAIP 2024)将于2024年7月26-28日在泰国曼谷召开。本次会议由温特沃斯理工学院、国立中山大学、泰国国立法政大学联合主办&#xff0c;JOIG期刊参与支持。会议旨在促进图像处理相关领域学术交流与合作&#xff0c;热忱欢迎从事相关技术研究的专…

【PyQt】17-日历控件

文章目录 前言一、代码二、运行结果总结 前言 固定格式的表述 日期的获取 一、代码 #Author &#xff1a;susocool #Creattime:2024/3/19 #FileName:40-日历控件 #Description: 日历控件的展示 import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQ…

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本&#xff0c;演示 麒麟 V10 一键安装 Oracle 11GR2 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚本第…

代码随想录算法训练营第十一天| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

题目&#xff1a;20. 有效的括号 文章链接&#xff1a;代码随想录 视频链接&#xff1a;LeetCode:20.有效的括号 题目链接&#xff1a;力扣题目链接 图释&#xff1a; class Solution { public:// 有效的括号 bool isValid(string s) {// 遇到左括号时就放入右括号&#xf…

【C语言】结构体类型名、变量名以及typedef

文章目录 分类判断结构体成员的使用typedef 分类判断 struct tag {char m;int i; }p;假设定义了上面这一个结构体&#xff0c;tag 就是类型名&#xff0c; p 就是变量名&#xff0c; m 和 i 就是结构体成员列表。 可以这么记&#xff0c;括号前面的是类型名&#xff0c;括号后…

尝试搭建谷粒商城 记录(四)

1、分布式组件 父工程引入依赖&#xff08;已完成&#xff09; spring boot 2.1.8.RELEASE spring cloud Greenwich.SR3 spring cloud alibaba 2.1.0.RELEASE 1. nacos用作服务注册中心 1、nacos下载安装 下载地址&#xff1a; https://github.com/alibaba/nacos/rel…

教务管理系统(java+mysql+jdbc+Druid+三层架构)

1、项目要求 1.1数据库表描述 设计一个教务管理系统&#xff0c;要求如下&#xff1a; 系统涉及的表有 account表&#xff08;账号表&#xff09; teacher表&#xff08;教师表&#xff09; student表&#xff08;学生表&#xff09; course表 (课程表) score表&#xff08;成…

【运维】MacOS Wifi热点设置

目录 打开热点 配置共享网段 打开热点 打开macOS设置&#xff0c;进入通用->共享 点击如下图标进行配置&#xff0c; 会进入如下界面&#xff08;⚠️目前是打开共享状态&#xff0c;无法修改配置&#xff0c;只有在未打开状态才能进入配置&#xff09; 配置完成后&#x…

STM32-DMA数据转运

DMA进行转运的条件 1&#xff1a;开关控制&#xff0c;DMA_CMD必须使能2&#xff1a;传输计数器必须大于03&#xff1a;触发源必须有触发的信号

短剧app系统开发:在短剧爆发期普通人如何实现收益?

今年春节&#xff0c;几部大热短剧抓住了流量密码&#xff0c;在市场中掀起了一股新的短剧热潮。在短剧火爆的诱惑下&#xff0c;吸引了越来越多的人进行到短剧市场中&#xff0c;市场规模迅速暴涨&#xff0c;已超五百多亿元&#xff01; 随着互联网的发展&#xff0c;各类影…

宝宝洗衣机买几公斤?四款实力扛鼎婴儿洗衣机推荐

对于有了宝宝的家庭来说&#xff0c;洗衣成为了一项重要的家务事。大家都知道&#xff0c;宝宝的皮肤比较娇嫩&#xff0c;容易受到各种细菌、病毒的侵扰。所以&#xff0c;宝宝的衣物应该与大人的分开单独清洗。婴儿洗衣机作为一种专门为婴幼儿家庭设计的洗衣机&#xff0c;其…

Vue.js前端开发零基础教学(二)

目录 前言 2.1 单文件组件 2.2 数据绑定 2.2.2 响应式数据绑定 2.3 指令 2.3.1 内容渲染指令 2.3.2 属性绑定指令 ​编辑 2.3.3 事件绑定指令 2.3.4 双向数据绑定指令 2.3.5 条件渲染指令 2.3.6 列表渲染指令 2.4 事件对象 2.5 事件修饰符 学习目标&am…

VR消防安全体验馆的作用|元宇宙文旅|VR设备价格

VR消防安全体验馆的作用主要包括以下几个方面&#xff1a; 提高火灾防范意识&#xff1a; 通过虚拟现实技术展示各种火灾场景和应急情况&#xff0c;让参观者身临其境地感受到火灾的危险性&#xff0c;从而增强他们的火灾防范意识。 实战演练能力&#xff1a; 参观者可以在虚拟…

安科瑞ASCP 系列电气防火限流式保护器

背景 随着社会经济的飞速发展&#xff0c;电气化程度不断提高&#xff0c;用电负荷过大、线路短路等原因导致电气火灾发生越来越频繁&#xff0c;使得火灾数量呈上升趋势。 据公安部消防局5年的统计分析&#xff0c;电气火灾发生的场所中&#xff0c;住宅发生火灾事故的数量高…

本地gitlab-runner的创建与注册

引言 之前通过一些方式在本地创建runner&#xff0c;时而会出现一些未知的坑&#xff0c;所以写下本文记录runner可以无坑创建的方式。 以下注册runner到相应仓库的前提是已经在本地安装了gitlab-runner 具体安装方式见官网 本地gitlab-runner安装常用的指令 查看gitlab r…

【设计模式】Java 设计模式之模板命令模式(Command)

命令模式&#xff08;Command&#xff09;的深入分析与实战解读 一、概述 命令模式是一种将请求封装为对象从而使你可用不同的请求把客户端与接受请求的对象解耦的模式。在命令模式中&#xff0c;命令对象使得发送者与接收者之间解耦&#xff0c;发送者通过命令对象来执行请求…

ZEM系列台式扫描电镜在陶瓷材料中的应用

陶瓷是一种常见的无机非金属材料&#xff0c;由于其优异的物理化学性能&#xff0c;在航空航天、电子信息、生物医药、高端装备制造等高端科技领域随处可见。如制造电子线路中的电容器用的电介质瓷&#xff0c;制造集成电路基片和管壳用的高频绝缘瓷等。陶瓷材料以其独特的声、…

wireshark 使用实践

1、打开wireshark软件&#xff0c;选择网卡&#xff0c;开始抓包 2、打开浏览器&#xff0c;访问一个http网站&#xff1a;这里我用 【邵武市博物馆】明弘治十一年&#xff08;1498&#xff09;铜钟_文物资源_福建省文 测试&#xff0c;因为它是http的不是https&#xff0c;方…

【VUE】前端阿里云OSS断点续传,分片上传

什么是OSS&#xff1a; 数据以对象&#xff08;Object&#xff09;的形式存储在OSS的存储空间&#xff08;Bucket &#xff09;中。如果要使用OSS存储数据&#xff0c;您需要先创建Bucket&#xff0c;并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后&#xff0c;您…

嵌套循环实现九九乘法表

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 案例描述 利用嵌套循环&#xff0c;实现九九乘法表。 代码 #include <iostream> #include <Windows.h>using namespace std;int main(void) {//外层循环执行一次&#…