初学STM32 --- 外部SRAM
目录
SRAM简介
SRAM特性:
XM8A51216 功能框图
8080并口读时序编辑
8080并口写时序
SRAM 读写操作步骤
FSMC介绍
FSMC时序介绍
FSMC控制器对内核地址映射编辑
FSMC HAL库相关驱动
SRAM驱动步骤
SRAM简介
静态随机存取存储器(Static Random-Access Memory,SRAM)
1M字节容量的SRAM芯片XM8A51216为例介绍。
SRAM特性:
高速:具有最高访问速度15ns
低功耗:80MHz时55mA,待机电流 20mA
TTL电平兼容
全静态操作:不需要刷新和时钟电路
三态输出
字节控制功能:支持高/低字节控制
XM8A51216 功能框图
每个地址存放16Bit数据,总容量1MB
A0~18:19根地址线,2^19 = 512K
DQ0~15:16根数据线,输入/输出
CEn:芯片使能信号,低电平有效
OEn:输出(读)使能信号,低电平有效
WEn:写使能信号,低电平有效
BLEn:低字节控制信号(DQ0~7有效)
BHEn:高字节控制信号(DQ8~15有效)
8080并口读时序
这里要注意,tRC读周期时间最小为15ns
tACE地址建立时间,也就是从接收到地址信号到给有效数据的时间。最大为12ns
tDOE OE建立时间,也就是从接收到读使能信号到给有效数据的时间。最大3.4ns
8080并口写时序
这里要注意,tWC读周期时间最小为15ns
tSA地址建立时间,也就是从发送地址信号到给写使能信号的时间。最大为12ns
tPWE WE建立时间,也就是从接收到写使能信号到数据采集的时间。最大3.4ns
SRAM 读写操作步骤
1、设置地址信号线: 发出要访问的存储器目标地址
2、控制片选信号: 选中器件
3、决定数据操作方式
读操作,控制读使能信号OE表示读数据
写操作,控制写使能信号WE表示写数据
4、设置获取数据方式: 掩码信号BLE和BHE指示要访问目标地址的高、低字节部分
5、获取数据:
读过程,存储器通过数据线向主机输出目标地址数据
写过程,使用数据线向存储器目标地址写入目标数据
FSMC介绍
FSMC,灵活的静态存储控制器,能驱动SRAM、NOR/NAND Flash等存储器。
FSMC时序介绍
FSMC是Flexible灵活的,可以产生多种时序来控制外部存储器。
异步时序:
注意:A[0:18] 并不是顺序连接FSMC_A[0:18],不影响正常使用SRAM,因为地址具有唯一性。
FSMC控制器对内核地址映射
FSMC HAL库相关驱动
HAL_StatusTypeDef HAL_SRAM_Init (
SRAM_HandleTypeDef *hsram,
FSMC_NORSRAM_TimingTypeDef *Timing,
FSMC_NORSRAM_TimingTypeDef *ExtTiming )
SRAM_HandleTypeDef 中,设置
FSMC_NORSRAM_TypeDef *Instance; 为 FSMC_NORSRAM_DEVICE;
FSMC_NORSRAM_EXTENDED_TypeDef *Extended; 为FSMC_NORSRAM_EXTENDED_DEVICE
FSMC_NORSRAM_InitTypeDef Init;为SRAM初始化结构体。
SRAM驱动步骤
1、配置FSMC: 使能FSMC时钟,并配置FSMC相关的IO(复用输出)及其时钟使能
2、设置FSMC相关参数: 设置Bank1第三区的存储器 工作模式、位宽和读写时序参数
3、进行数据访问:根据区域,决定操作外部内存的首地址
直接指定变量存储到SRAM空间 全局变量
uint32_t g_test_buffer[250000] __attribute__((at(SRAM_BASE_ADDR)));g_test_buffer[i] = i;
注意:CPU通过AHB总线访问FSMC上的设备,可以按字/半字/字节访问,AHB自动转化控制FSMC访问。
相关文章:

初学STM32 --- 外部SRAM
目录 SRAM简介 SRAM特性: XM8A51216 功能框图 8080并口读时序编辑 8080并口写时序 SRAM 读写操作步骤 FSMC介绍 FSMC时序介绍 FSMC控制器对内核地址映射编辑 FSMC HAL库相关驱动 SRAM驱动步骤 SRAM简介 静态随机存取存储器(Static Random-Access Memory&am…...

创龙3588——debian根文件系统制作
文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…...

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别
javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…...

kylin安装docker
1. 前言 本文详细介绍如何在kylin v10上安装docker。系统环境如下: dockder: 20.10.7 linux os: kylinv 10 (GFB) linux kernel: 4.19.90-52.23.v2207.gfb01.ky10.aarch642. 安装docker 2.1. 下载docker二进制包 wget https://mirror.nju.edu.cn…...

【Yarn】通过JMX采集yarn相关指标的Flink任务核心逻辑
通过JMX采集yarn相关指标的Flink任务核心逻辑 文章目录 通过JMX采集yarn相关指标的Flink任务核心逻辑通过jmx接口查询Yarn队列指标请求JMX配置项核心处理流程输出到kafka格式通过jmx接口查询ResourceManager核心指标请求JMX读取配置yaml配置文件核心处理逻辑输出Kafka格式彩蛋 …...

鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能
文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上,经常可以见到多图片合集。它的特点是:由多张…...

Excel 身份证号计算年龄
1. 设置身份证号列格式 复制身份证列值到记事本或其他地方重新设置身份证号列单元格格式为“文本”将复制出去的身份证号重新复制粘贴回来 2. 年龄列单元格中添加公式 DATEDIF(DATE(LEFT(MID(A2, 7, 8), 4), MID(MID(A2, 7, 8), 5, 2), RIGHT(MID(A2, 7, 8), 2)), TODAY(), …...

【2024年-6月-14日-开源社区openEuler实践记录】探索 test - tools:高效测试的开源宝库
开篇引言 大家好,我是 fzr123,在软件开发领域深耕多年,一直致力于探索各种提升效率的工具与技术。今天,我将为大家深入介绍一款在测试领域极具价值的开源项目——test - tools,它为开发者们提供了一系列强大的测试功能…...

2022浙江大学信号与系统笔记
原视频地址:2022浙江大学信号与系统(含配套课件和代码) - 胡浩基老师-哔哩哔哩 ⭐⭐⭐ 我的笔记:飞书链接 - 信号与系统 基于视频,记得笔记,加了点自己的补充(有的是问 ChatGPT 的)…...

DeepSeek-VL2
《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》是 DeepSeek-AI 团队发布的关于视觉语言模型 DeepSeek-VL2 的论文,以下是对该论文的详细介绍: 研究背景与动机 多模态理解的重要性:在当…...

前端⾯试⼋股⽂
1.http 和 https 的基本概念 - http: 是⼀个客⼾端和服务器端请求和应答的标准(TCP),⽤于从 WWW 服务器传输超⽂本到本地浏 览器的超⽂本传输协议。 - https:是以安全为⽬标的 HTTP 通道,即 HTTP 下 加⼊ SSL 层进⾏加密。其作⽤…...

【Rust自学】8.6. HashMap Pt.2:更新HashMap
8.6.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...

Python异常处理详解:概念、语法与实践
1. 异常的概念 在Python中,异常(Exception)是程序运行时出现的错误或不正常情况。异常通常表示程序在运行时遇到了无法继续执行的条件。Python通过 try/except 语句来捕获和处理异常。 异常可以分为两类: 内建异常:…...

Kotlin在医疗大健康域的应用实例探究与编程剖析(上)
一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业正经历着深刻的变革。随着信息技术的飞速发展,尤其是人工智能、大数据、物联网等新兴技术的广泛应用,医疗行业数字化转型已成为必然趋势。这种转型旨在提升医疗服务的效率和质量,优化医疗资源配置,为患者提供更加…...

QT----------QT Data Visualzation
实现思路: 配置项目:在 .pro 文件中添加 QT datavisualization 以引入 QT Data Visualization 模块。创建主窗口:使用 QMainWindow 作为主窗口,添加 Q3DScatter、Q3DBars 和 Q3DSurface 等三维视图组件。初始化和创建三维图表&a…...

什么是Sight Words(信号词)
🧡什么是Sight Words(信号词) 简单来说,Sight Words就是我们在日常英语中常用的一些基本词汇。可以把它想象成是学练英语的“基础词汇”,这些词在各种考试中经常出现,也是在生活中必不可少的。 …...

SpringBoot日志快速集成详解-生产实战
SpringBoot日志快速集成详解 1. 添加依赖2. 创建 logback-spring.xml 配置文件示例 logback-spring.xml 配置: 3. 启用 Spring Boot 自动配置4. 配置 Spring Boot 启动日志级别5. 运行与验证 博文专注于最快速的实战,没有那么多逼逼叨叨的理论࿰…...

路由技术在网络中的作用及特点
作用:路径选择:在复杂的网络拓扑结构中,路由技术能够根据网络的当前状态和目标地址,为数据报文选择一条最佳的传输路径,确保数据能够快速、准确地到达目的地。例如,在互联网中,当用户访问一个网…...

【Python系列】Flask 与 FastAPI:两个 Python Web 框架的对比分析
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

云手机:虚拟技术的革命性应用与实体手机的优劣对比
在近年来,随着互联网的火速发展,云手机作为一种新兴的技术产品,在游戏行业特别是手游市场中掀起了一股热潮。云手机,顾名思义,是架设在ARM虚拟服务器上的手机,其独特的虚拟技术为用户带来了前所未有的使用体…...

3. C语言 数据类型
本章目录: 前言:C语言中的数据类型分类1. 基本数据类型1.1 整数类型1.2 浮点类型1.3 字符型常量1.4 字符串常量 2. 枚举类型3. void 类型void类型的使用示例: 4. 类型转换4.1 隐式类型转换4.2 显式类型转换类型转换的注意事项 5. 小结 前言&a…...

npm install 安装选项 -d -s -g
在使用 npm install 时,-d、-g 和 -s 是不同的选项,它们分别代表不同的安装模式或行为。以下是它们的详细解释: 1. -d:--save-dev 含义:将包安装为开发依赖(devDependencies)。使用场景&#…...

pdf预览兼容问题- chrome浏览器105及一下预览不了
使用的"tato30/vue-pdf": "^1.11.2"预览插件,发现chrome浏览器105及一下预览不了 pdfPreview预览组件: <template><div id"vue_pdf_view"><div class"tool_tip"><template v-if"pa…...

【可实战】需求分析-测试计划↓-测试设计-测试执行-测试总结↓(包含测试计划、测试总结模板,以公司要求为准)
一、完成软件测试工作的必要步骤 需求分析-测试计划-测试设计-测试执行-测试总结 二、测试计划 (一)测试计划模版 模板在线查看: https://docs.qq.com/doc/DV2hTamxJWnNDaUFF 模板(百度网盘): 链接&…...

MySQL 03 章——基本的SELECT语句
一、SQL概述 (1)SQL背景知识 SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言,与数据直接打交道不同的数据库管理系统生产厂商都支持SQL语句,但都有特有内容 …...

【项目】智能BI洞察引擎 测试报告
目录 一、项目背景BI介绍问题分析项目背景 二、项目功能三、功能测试1、登录测试测试用例测试结果 2、注册测试测试用例测试结果出现的bug 3、上传文件测试测试用例测试结果 4、AI生成图表测试测试用例测试结果 5、分析数据页面测试(异步)测试用例测试结…...

javaEE-文件操作和IO-文件
目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备: 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式: 6.文件的分类 二、java中文件系统的操作 1.File类中的属性: 2.构造方…...

2025跨年倒计时
<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2025年跨年倒计时</title><style>/* 页…...

下载mysql免安装版和配置
1、下载地址 点击去官网下载https://downloads.mysql.com/archives/community/ 2、解压安装mysql 解压的文件夹是没有my.ini文件和data目录,需要我们自己去创建 根目录下创建my.ini,根目录创建data [mysql] default-character-setutf8[mysqld] #端口 po…...

代码模板-C语言常用的errno的名字、值以及对应关系?转换字符串函数?(errno.h, strerror; errno -l; man errno)
背景 errno.h是C 编程语言标准库中的头文件。它定义了使用符号errno (“错误号”的缩写)报告和检索错误情况的宏。经常需要用来在内核态用户态返回错误寻找,本文以供快速检索。 常用函数与用法 strerror 根据errno获取文件 比如ÿ…...