在魔改PLUS-F5280开发板上使用合封qsp iflash
文章目录
- 引言
- 硬件调整
- 软件调整
- 总结
引言
由于目前灵动官网暂未发布正式版的PLUS-F5280开发板,可以使用现有的PLUS-F5270 v1.2开发板(下文简称PLUS-F5270开发版)替换为MM32F5280微控制器芯片,改装为PLUS-F5280开发板。本文记录了使用现有的PLUS-F5270开发板评估MM32F5280微控制器的软硬件调整过程。
硬件调整
PLUS-F5270 开发板上,使用MM32F5270微控制器的qspi接口对接了外置flash存储芯片。PLUS-F5270 板载华邦flash存储芯片的 W25Q64JVSIQ,容量为 8MB (64Mb),3.3V 供电,默认情况下,四线模式处于打开状态。
MM32F5270连接该 QSPI Flash 所使用的引脚号如图1所示:

MM32F5280微控制器芯片,是在MM32F5270微控制器的基础之上,在芯片内部合封了一块2MB容量的flash,合封flash芯片同MM32F5270的die也是通过qspi接口对接。但当前版本的PLUS-F5270开发板外界flash芯片的qspi引脚同MM32F5280合封内部使用的qspi引脚不相同。见表1所示。
| qspi function | PLUS-F5270 pin | MM32F5280 pin |
|---|---|---|
| CS | PB10 | PF6 |
| SCK | PG7 | PG7 |
| D0 | PG6 | PG6 |
| D1 | PA3 | PF8 |
| D2 | PB3 | PF10 |
| D3 | PG8 | PG8 |
MM32F5270微控制器芯片同MM32F5280除了合封qspi接口的引脚未引出,其余引脚完全相同,故改装后的PLUS-F5280可以使用绝大多数原PLUS-F5270开发板的功能,除了少量功能,包括:
- ADC温感、电位器功能将无法使用
- 以太网功能将无法使用(原RMII模式连线已弃用)
软件调整
同时,需要在MindSDK为PLUS-F5270开发的样例工程中,修改pin_init.c文件中引脚复用配置。以spiflash_sfud_qspi工程为例。
原PLUS-F5270工程中的pin_init.c源文件:
void BOARD_InitPins(void)
{.../* PB10 - QSPI_CS. */gpio_init.Pins = GPIO_PIN_10;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &gpio_init);GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_10);/* PG7 - QSPI_SCK. */gpio_init.Pins = GPIO_PIN_7;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);/* PG6 - QSPI_IO0. */gpio_init.Pins = GPIO_PIN_6;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);/* PA3 - QSPI_IO1. */gpio_init.Pins = GPIO_PIN_3;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_init);GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_10);/* PB3 - QSPI_IO2. */gpio_init.Pins = GPIO_PIN_3;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &gpio_init);GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_10);/* PG8 - QSPI_IO3. */gpio_init.Pins = GPIO_PIN_8;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);
}
魔改PLUS-F5280工程中的pin_init.c源文件:
void BOARD_InitPins(void)
{.../* PF6 - QSPI_CS. */gpio_init.Pins = GPIO_PIN_6;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOF, &gpio_init);GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);/* PG7 - QSPI_SCK. */gpio_init.Pins = GPIO_PIN_7;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);/* PG6 - QSPI_IO0. */gpio_init.Pins = GPIO_PIN_6;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);/* PF8 - QSPI_IO1. */gpio_init.Pins = GPIO_PIN_8;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOF, &gpio_init);GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);/* PF10 - QSPI_IO2. */gpio_init.Pins = GPIO_PIN_10;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOF, &gpio_init);GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);/* PG8 - QSPI_IO3. */gpio_init.Pins = GPIO_PIN_8;gpio_init.PinMode = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDraingpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &gpio_init);GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);
}
还要注意,因为新增使用了GPIOF端口,还需要在clock_init.c文件中启用GPIOF端口的总线访问时钟。
void BOARD_InitBootClocks(void)
{CLOCK_ResetToDefault();CLOCK_BootToHSE120MHz();.../* GPIOF. */RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOF, true);RCC_ResetAHB1Periphs(RCC_AHB1_PERIPH_GPIOF);...
}
总结
魔改之后,可以使用MindSDK中为PLUS-F5270微控制器提供的软件包(启动代码、驱动程序、样例及演示工程),评估MM32F5280微控制器芯片。
相关文章:
在魔改PLUS-F5280开发板上使用合封qsp iflash
文章目录引言硬件调整软件调整总结引言 由于目前灵动官网暂未发布正式版的PLUS-F5280开发板,可以使用现有的PLUS-F5270 v1.2开发板(下文简称PLUS-F5270开发版)替换为MM32F5280微控制器芯片,改装为PLUS-F5280开发板。本文记录了使…...
uni-app 瀑布流
效果图 一、组件 components/u-myWaterfall.vue <template><view class"u-waterfall"><view id"u-left-column" class"u-column"><slot name"left" :leftList"leftList"></slot></view&…...
华为OD机试 - 去除多余空格(Python)| 真题+思路+考点+代码+岗位
去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQABYuJD-1676475739950)(https://…...
MyBatis 二级缓存简单使用步骤
1、二级缓存使用 在 MyBatis 中默认二级缓存是不开启的,如果要使用需手动开启。在 mybatis-config.xml 配置文件中设置 cacheEnabled true ,配置如下: <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE c…...
kubeadmin kube-apiserver Exited 始终起不来查因记录
kubeadmin kube-apiserver Exited 始终起不来查因记录 [rootk8s-master01 log]# crictl ps -a CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD b7af23a98302e …...
论文投稿指南——中文核心期刊推荐(工程材料学)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
【动态规划】背包问题题型及方法归纳
背包问题的种类 背包问题是在规定背包容量为j的前提下,每个物品对应的体积为v[i],价值为w[i],从物品0到物品i中选择物品放入背包中,找出符合某种要求的价值。 (1)背包问题种类 01背包:每种物…...
全球十大资质正规外汇期货平台排行榜(最新版汇总)
外汇期货简称为FxFut,是“Forex Futures”的缩写,是在集中形式的期货交易所内,交易双方通过公开叫价,以某种非本国货币买进或卖出另一种非本国货币,并签订一个在未来的某一日期根据协议价格交割标准数量外汇的合约。 …...
使用Paramiko时遇到的一些问题
目录 1.背景 2.问题合集 1)“bash: command not found” 2)Paramiko中正常的输入,却到了stderr,而stdout是空 3)命令实际是alias 1.背景 在自动化脚本中,使用了库Paramiko,远程SSH到后台服…...
数据预处理(无量纲化、缺失值、分类特征、连续特征)
文章目录1. 无量纲化1.1 sklearn.preprocessing.MinMaxScaler1.2 sklearn.preprocessing.StandardScaler2. 缺失值3. 分类型特征4. 连续型特征数据挖掘的五大流程包括:获取数据数据预处理特征工程建模上线 其中,数据预处理中常用的方法包括数据标准化和归…...
【C#基础】C# 运算符总结
序号系列文章2【C#基础】C# 基础语法解析3【C#基础】C# 数据类型总结4【C#基础】C# 变量和常量的使用文章目录前言运算符1,算术运算符2,布尔逻辑运算符3,位运算符4,关系运算符5,赋值运算符6,其他运算符7&am…...
存储性能软件加速库(SPDK)
存储性能软件加速库SPDK存储加速存储性能软件加速库(SPDK)SPDK NVMe驱动1.用户态驱动1)UIO2)VFIOIOMMU(I/O Memory Management Unit)3)用户态DMA4)大页(Hugepage…...
微服务(五)—— 服务注册中心Consul
一、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>二、配置yml文件 server:port: 8006spring:application:name: cloud-payment-con…...
冷冻电镜 - ChimeraX Density Map 密度图 操作
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129055160 由冷冻电镜所生成的Volume,需要观察其内部结构,使用ChimeraX进行操作。 加载Volumes,例如my_volume.mrc 效果如下: 高斯滤波 在命令行(Co…...
Matlab 点云旋转之轴角式
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 三维空间中表示旋转的方法有很多种,轴角式是其中非常经典的一种表示方式。虽然欧拉角表示旋转的方法很是常用,但欧拉角存在着万向锁这个问题,因此轴角式旋转在旋转使用中更为合适。其原理也很是明了,如下所述:…...
2023美赛数学建模资料思路模型
美赛我们为大家准备了大量的资料,我们会在比赛期间给大家分析美题目和相关的思路 全文都是干货,大家仔细阅读,资料文末自取! 首先我们来看美赛23年题型的一个变化: 美赛23年题目变化: A题:连…...
Nginx配置HTTP强制跳转到HTTPS
https 访问我们的测试域名 https://www.xxx.com 站点,但是当我们直接在浏览器地址栏中直接输入 www.xxx.com 的时候却发现进入的是 http 协议的网站,这与我们的初衷不一致。由于浏览器默认访问域名使用的是80端口,而当我们使用SSL证书后&…...
从实现到原理,聊聊Java中的SPI动态扩展
原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 八股文背多了,相信大家都听说过一个词,SPI扩展。 有的面试官就很喜欢问这个问题,SpringBoot的自动装配是如何实现的? 基本上,…...
3、MySQL字符集
1.MySQL字符集和校验规则 字符集:是一套符号和编码的规则校验规则:是对该套符号和编码的校验,定义字符的排序和比较规则,其中是否区分大小写,跟校验规则有关。2.查看字符集方法 netstat -lntup |grep 3306 tcp6 0 0 :::3306 :::* …...
大漠插件最新中文易语言模块7.2302
模块名称:大漠插件中文模块最新通用7.2302模块简介:大漠插件中文模块最新通用7.2302模块特色:原翻译:花老板完善命令备注:易生易世本人花费一个月时间才将命令完善了插件的备注说明.且用且珍惜去掉了大漠插件定制版类.因为没用.模块特色:什么是中文模块?大漠插件模块是由大漠类…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
