在魔改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模块特色:原翻译:花老板完善命令备注:易生易世本人花费一个月时间才将命令完善了插件的备注说明.且用且珍惜去掉了大漠插件定制版类.因为没用.模块特色:什么是中文模块?大漠插件模块是由大漠类…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
