SPI Flash and External SPI RAM(基于ESP32)

主要参考资料:
乐鑫ESP-IDF资料SPI Flash API: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-reference/peripherals/spi_flash/index.html
乐鑫ESP-IDF资料SPI Flash and External SPI RAM Configuration: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/flash_psram_config.html?highlight=psram

目录

  • 简介
  • Flash 功能支持情况
    • 支持的 Flash 列表
    • Flash 可选的功能
  • 一些术语
  • 如何配置Flash and PSRAM?
    • SPI Flash and External SPI RAM的速度配合

简介

找到ESP32-S3的系统框图,可以看到ESP32支持QSPI的Flash和QSPI/OSPI的PSRAM。
在这里插入图片描述

Flash 功能支持情况

支持的 Flash 列表

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

Flash 可选的功能

在这里插入图片描述

一些术语

在这里插入图片描述

  • 在ESP32-S3上,MSPI代表SPI0/1。SPI0和SPI1共用一个SPI总线。主Flash和PSRAM连接到MSPI外设。CPU通过Cache(缓存)访问它们。

  • 在DDR模式,数据在正边和负边都采样。例如:如果Flash设置为80mhz和DDR模式,则Flash的最终速度为160mhz。这比Flash设置为120 Mhz和STR模式要快。

  • SPI 即传统的4线制spi,4线分别为cs,clk,di,do。
    标准SPI为全双工,di只用于数据输入,do只用于数据输出;其余的spi均为半双工
    DSPI 即双数据线的SPI,信号线包括cs,clk,d0,d1,d0,d1 分时复用输入和输出,clk的一个边沿可以发送/接收 2bit 数据
    QSPI 即4数据线的SPI,信号线包括cs,clk,d0-d3,d0-d3 分时复用输入和输出,clk的一个边沿可以发送/接收 4bit 数据;
    OSPI 即8数据线的SPI,信号线包括cs,clk,d0-d7,d0-d7 分时复用输入和输出,clk的一个边沿可以发送/接收 8bit 数据;

如何配置Flash and PSRAM?

打开menuconig/Serial flasher config,这是配置Flash的,可以看到如下页面。
在这里插入图片描述

SPI Flash and External SPI RAM的速度配合

这张表里以F8R8(Flash8M和PSRAM8M)为例,左边的Flash mode需要适配右边的PSRAM mode,如果不匹配就会报出下面的错误。
在这里插入图片描述

错误的line mode:
在这里插入图片描述
**Flash或者PSRAM选了OSPI,但是ESP32不支持
在这里插入图片描述

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

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

相关文章

场景 - 分库分表

分什么 数据量大分表,并发大分库 分表字段如何选择 如果对交易订单进行分表,可以选择的东西很多,比如说商户id,用户id,地区等等 分表的时候要考虑到数据倾斜问题 数据倾斜 比如说按商户号进行分表,一共…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究:使用 pnpm 安装依赖时,node_modules 下是什么结构 回顾 npm3 之前:依赖树 缺点: frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…

2024年 Flutter 面试题大全(持续更新中)

提示:页面中按 Ctrl F 查找关键字,点击链接跳转到详情 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 &#x1f…

Php 通过 FFmpeg 获取远程视频的时长和截图

突然发现 FFmpeg 这个软件还可以直接拉取远程视频的相关信息,也就是可以不通过下载视频到本地的方式,直接远程去获取视频时长和截图。 假设我们的视频url是:http://my.com/a.mp4 第一步,Linux 安装 FFmpeg 软件 第二步&#xf…

Day 20 Linux的WEB服务——apache

WEB服务简介 目前主流的web服务器软件 Linux:apache , nginx Windows-server:IIS 服务器安装nginx或apache后,叫做web服务器(又称WWW服务器) web服务器软件属于C/S框架模型 web服务器是一种被动程序只…

薄板样条插值TPS原理以及torch和opencv实现

薄板样条插值TPS原理以及torch和opencv实现 1、薄板样条插值TPS原理概述原理以及公式推导2、torch实现3、opencv实现1、薄板样条插值TPS原理 概述 薄板样条(Thin Plate Spline),简称TPS,是一种插值方法,可找到通过所有给定点的“最小弯曲”光滑曲面。因为它一般都是基于…

[Android]Jetpack Compose页面跳转和传值

一、页面跳转和返回 1.添加 Navigation 依赖 在你的 build.gradle (Module)文件中, 添加 Navigation Compose 依赖。 dependencies {implementation ("androidx.navigation:navigation-compose:2.5.3") } 2.创建跳转页面 接下来&#xff…

MQTT协议应用场景

MQTT协议应用场景 MQTT(Message Queuing Telemetry Transport)协议是一种基于发布/订阅模式的轻量级消息传输协议,它设计用于低带宽、高延迟或不可靠的网络环境。由于其高效、简单和可靠性,MQTT在多种应用场景中得到了广泛的应用。…

leetcode hot100_part25

2024/4/23 56.合并区间 略 189.轮转数组 使用额外数组 遍历老数组,每个位置的元素放到新数组的位置(取余)。 环状替换 这个思路也想到了但是没想出来。 也就是连续跳,从i位置跳到它应该在(取余后)的位置x,再从x位…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

Vue基于高德地图API封装一个地图组件

一、参考资料 高德开放平台 | 高德地图API (amap.com) 二、安装及配置 pnpm i vuemap/vue-amap --save man.ts 密钥及安全密钥需要自己到高德地图开放平台控制台获取. import { createApp } from vue import App from ./App.vue import router from ./router i…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中,比如发布某篇文章,需要取文章中的某张图片作为封面,那么此时需要文章内容,获取html内容中的图片地址作为封面,下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

Python学习教程(Python学习路线+Python学习视频):Python数据结构

数据结构引言: 数据结构是组织数据的方式,以便能够更好的存储和获取数据。数据结构定义数据之间的关系和对这些数据的操作方式。数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方…

智能合约语言(eDSL)—— 如何使用wasmtime运行合约

在我们使用高级语言生成了智能合约——WASM之后,接下来就是对智能合约——WASM的使用。首先,我们需要引入wasmtime库,使用wasmtime运行我们的合约。我们的Rust程序为: use anyhow::Result; use std::fs; use wasmtime::*;fn main…

android openGL ES详解

1、渲染线程与主线程的通信 两个线程之间的通信可以用如下方法: 在主线程中的 GLSurfaceView 实例可以调用 queueEvent( )方法传递一个 Runnable 给后台渲染线程,渲染线程可以调用 Activity 的 runOnUIThread()来传递事件 (event) 给主线程。 2、顶点…

Redhawk:ATE如何产生top level sta file

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接 redhawk: create STA file 在“redhawk: create STA file”一文中介绍了ate的用法,可以应对block level的设计,但当需要做top level分析时&

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

Qt实现XYModem协议(八)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

单片机学习过程

继电器光耦隔离电压转换步进电机直流电机 arduino是最好用的一种,他提供了完整的设备库文件,任何外部设备只要查找相应的库,就可以很方便的使用 , 但是如果不去学习51 或stm32 或 嵌入式玩玩还可以,如果碰到没有实现的…

【深耕 Python】Data Science with Python 数据科学(10)pandas 数据处理(一)

写在前面 关于数据科学环境的建立,可以参考我的博客: 【深耕 Python】Data Science with Python 数据科学(1)环境搭建 往期数据科学博文: 【深耕 Python】Data Science with Python 数据科学(2&#xf…