在魔改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模块特色:原翻译:花老板完善命令备注:易生易世本人花费一个月时间才将命令完善了插件的备注说明.且用且珍惜去掉了大漠插件定制版类.因为没用.模块特色:什么是中文模块?大漠插件模块是由大漠类…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
