基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

功能需求

  • 支持设备运行日志记录(设备至少使用10年);
  • 支持上位机读/写/擦除 Flash;
  • 支持本地信息查询;
  • 支持多台设备参数管理

系统设计

  • Flash型号:W25Q256JVEIQ
  • 总线:SPI
  • 时钟速率:25MHz

日志功能

  • 上电默认不开启日志功能(防止上一次运行日志被擦除)
  • 单条日志长度为256字节,每分钟记录一次
  • 使用两个 32KB 空间进行存储,每存满一个 32KB,擦除另一个 32KB 继续记录(双缓存设计可以保证在擦除过程断电,也有日志可查)
  • 日志内容:回复帧信息(包含运行时间)
  • 寿命计算(按照10年寿命来设计):
    • 擦除一次记录日志条数:64K(B)/256(B) = 256(条)
    • 若频率为 1分钟,则擦除一次可以记录 256 分钟
    • 连续擦除10万次可记录时长:100000*256(分钟)/60(分钟)/24(小时)/365(天) = 48.7 (年)

上位机参数存储

上位机读取 flash 模块状态,当模块为空闲状态时可进行 flash 的读/写/擦除操作。

本地参数查询

上位机下发信息查询帧,设备发送信息回复帧。

多台设备参数管理

设备通过信息查询帧自动进行设备ID分配,上位机可指定其中一台或者广播方式进行参数管理。

在这里插入图片描述

系统框图

在这里插入图片描述

通信协议定义

见协议文档。

Flash芯片

引脚定义

在这里插入图片描述

Flash相关指令

Read Manufacturer / Device ID (90h)
在这里插入图片描述


在这里插入图片描述
Write Enable (06h)

每次进行页编程、擦除、写状态寄存器都要先执行该指令。

在这里插入图片描述
Sector Erase (20h)

1 Sector = 4KB

在这里插入图片描述
32KB Block Erase (52h)
在这里插入图片描述
64KB Block Erase (D8h)
在这里插入图片描述
Page Program (02h)

1 Page = 256B

在这里插入图片描述
Read Data (03h)

Read Status Register
在这里插入图片描述
Write Status Register
在这里插入图片描述

状态寄存器定义

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

AC参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试结果

日志功能

在这里插入图片描述

上位机读/写/擦除 Flash

在这里插入图片描述

本地信息查询及多台设备参数管理

在这里插入图片描述

调试心得

该芯片每次指令操作开始都要拉低片选信号,单条指令完成后需拉高片选信号,否则 Flash无法正常工作。

Read more

Chrome 开发者工具(DevTools)快速入门——前端必备技能

Chrome 开发者工具(DevTools)快速入门——前端必备技能

在前端开发中,Chrome 开发者工具(DevTools) 是我们排查问题、优化性能、理解浏览器行为最强大的助手之一。无论是想快速定位页面样式异常、分析接口请求,还是调试 JavaScript 逻辑,DevTools 都能提供直观高效的方式帮助我们“看清代码背后发生了什么”。 这篇笔记将带你快速入门,从最基本的面板功能到常用调试技巧,让你能在实战中灵活运用它,提升开发效率与问题解决能力。 1. 打开方式与放大缩小 1. 快捷键: * Windows/Linux:F12 或 Ctrl + Shift + I * macOS:Command + Option + I 1. 右键打开:在页面任意元素上右键 → “检查 (Inspect)” 2. 菜单打开:点击右上角 ⋮ → “更多工具” → “开发者工具” 在使用 Chrome 开发者工具时,可以通过 鼠标滚轮 快速调整界面缩放。

Flutter-WebRTC 鸿蒙平台使用指南

1. 插件介绍 fluttertpc_flutter_webrtc 是一个专为开源鸿蒙(HarmonyOS)平台适配的 Flutter WebRTC 插件,基于官方的 flutter_webrtc 项目进行定制修改,提供了完整的 WebRTC 功能支持,包括实时音视频通信、设备管理、屏幕共享等核心能力。 主要功能特性 * 设备管理:支持枚举、选择音频/视频输入输出设备 * 媒体流处理:获取摄像头、麦克风媒体流,支持自定义分辨率和帧率 * 对等连接:实现完整的 WebRTC 信令流程和媒体协商 * 屏幕共享:支持获取屏幕共享媒体流 * 数据通道:支持点对点数据传输 2. 插件安装与配置 2.1 Git 依赖引入 由于这是一个专为鸿蒙平台定制的修改版本,需要通过 Git 方式引入依赖。在 Flutter

【前端地图】地图基本操作控制——平移、缩放、旋转、手势控制、地图样式切换、全屏模式支持

【前端地图】地图基本操作控制——平移、缩放、旋转、手势控制、地图样式切换、全屏模式支持

🎮 第3节 | 地图基本操作控制 🎯 学习目标 老曹说:“地图不能动算什么地图?今天教你让地图飞起来!” 1. 🧭 掌握地图平移、缩放、旋转三大基础操作 2. 🖱️ 理解手势控制与事件监听机制 3. 🎨 实现地图样式动态切换(白天/黑夜/卫星图) 4. 🖥️ 支持全屏模式与自适应布局 🧠 引言:让用户掌控地图! 地图不只是看的,更是用来“玩”的!优秀的用户体验离不开流畅的操作反馈。本节课带你解锁地图操控的所有姿势,让你的地图像游戏一样丝滑。 老曹吐槽时间: “有些产品地图做得跟 PPT 似的,点都点不动……用户:你礼貌吗?” 🧭 一、三大基础操作详解 1.1 平移(Pan)📍 平移是最常见的操作,通过改变地图中心点实现视角移动。 ✅ 高德地图实现 // 方法一:直接设置中心点 map.setCenter([116.404,

前端人拿不到offer,九成是不知道这个新风向

今年大部分互联网公司面试的题目已经开始小部分八股文,大部分场景题了,公司需要的不仅是知识扎实,而且招进来就能上手项目的面试者… 2026最新高频场景题 * 1. 请求失败会弹出一个toast,如何保证批量请求失败,只弹出一个toast * 2. 如何减少项目里面if-else * 3. babel-runtime 作用是啥 * 4. 如何实现预览PDF文件 * 5. 如何在划词选择的文本上添加右键菜单(划词:鼠标滑动选择一组字符,对组字符进行操作) * 6. 富文本里面,是如何做到划词的(鼠标滑动选择一组字符,对组字符进行操作)? * 7. 如何做好前端监控方案 * 8. 如何标准化处理线上用户反馈的问题 * 9. px如何转为rem * 10. 浏览器有同源策略,但是为何 cdn 请求资源的时候不会有 跨域限制 * 11. cookie可以实现不同域共享吗 * 12. axios是否可以取消请求 * 13. 前端如何实现折叠面板效果? * 14. dom里面,如何判定a元素是否是b元素的子元 * 15. 判断一个对象是否为空,包含了其原型链上是否有自