目录

如同 STM32F103C8T6 与 CBT6 有着同样的128K flash容量一样, 市面上很多芯片, 同一系列的多个型号其实底下使用的是相同的硬件, 只是通过软件, 芯片ID, 某些隐藏寄存器(例如AIR32F103)或者物理熔断对容量进行限制. 让我们看一看 PY32F002AF15P 这颗标称 20K Flash, 3K RAM 的芯片还隐藏着哪些资源.

声明

任何在厂家数据手册之外的资源都是无保证的, 本文的内容仅对当前测试中使用的样品有效, 请勿以此作为选型参考, 一切以厂家手册为准. 因此产生的任何问题本人概不负责.

PY32F002A 的 RAM

当前样品的型号是 PY32F002AF15P, TSSOP20封装, 因为内存容量的检测只涉及代码修改, 对这片 PY32F002AF15P 进行了内存可用容量的测试

  1. 修改ld文件, 将内存设为 4KB, 写入成功, 读取成功
  2. 修改ld文件, 将内存设为 5KB, 无法启动
  3. 修改ld文件, 将内存设为 4196, 无法启动

实际上直接可用的内存为 4KB

PY32F002A 的 Flash

测试用的是 JLink, 修改 Flash 容量涉及到 Device 文件的修改, 首先修改 /opt/SEGGER/JLink/JLinkDevices.xml, 将 PY32F002AX5 的配置调整为32K Flash, 4K RAM

  1. <Device>
  2. <ChipInfo Vendor="Puya" Name="PY32F002AX5" WorkRAMAddr="0x20000000" WorkRAMSize="0x1000" Core="JLINK_CORE_CORTEX_M0"/>
  3. <FlashBankInfo Name="Flash_32K" BaseAddr="0x08000000" MaxSize="0x8000" Loader="Devices/Puya/PY32F0xx_32.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
  4. </Device>

然后修改ld文件, 将flash也设为32K

  1. MEMORY
  2. {
  3. RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 4K
  4. FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K
  5. }

在代码中构造一个巨大的数组将 32K 填满, 从末尾开始打印, 编译烧录

32K容量, 写入读取成功

再改为48K, 写入失败, 读取也失败

实际直接可用的Flash容量为 32KB

PY32F002A 的运行频率

因为 PY32F002A 的库函数将最高频率限制在了24MHz, 而 PY32F003 没有PLL, HSI最高也只有24MHz, 既然 PY32F002A 可以使用 32K Flash + 4K RAM, 就直接将库参数修改为了 PY32F030Fx6. 将运行频率设为16MHz, 同时开启 PLL.

结果运行正常. 此时系统频率为 32MHz.

进一步将 HSI 设为 24MHz, 保持 PLL 开启, 也运行正常, 此时系统频率为 48MHz.

  1. clk:48000000 flash:96 ram:de 8c 96␍␊
  2. clk:48000000 flash:8c ram:8c 96 8c␍␊
  3. clk:48000000 flash:64 ram:96 8c 64␍␊
  4. clk:48000000 flash:4e ram:8c 64 4e␍␊
  5. clk:48000000 flash:63 ram:64 4e 63␍␊
  6. clk:48000000 flash:e6 ram:4e 63 e6␍␊

运行半小时, 没有任何问题.

可见当前这片 PY32F002AF15P 支持PLL, 实际直接可用的系统内置时钟为 48MHz, 如果使用外置晶振, 频率也许能更高

结论

到这里, 这颗 PY32F002AF15P 是哪个型号的马甲已经有点眉目, 进一步可以继续校验其它几个关键外设: DMA, SPI2, LED.

待后续补充

普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  2. Web 开发人员和设计师必读文章推荐【系列三十】

    <Web 前端开发精华文章推荐>2014年第9期(总第30期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  3. WCF编程系列(三)地址与绑定

    WCF编程系列(三)地址与绑定   地址     地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...

  4. JVM系列三:JVM参数设置

    JVM系列三:JVM参数设置.分析   不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...

  5. 很有用的PHP笔试题系列三

    1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION 与 COOKIE的区别是什么,请从 ...

  6. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  7. Microsoft Enterprise Library 5.0 系列(三)

    一.简介及用途 在实际的项目开发中,我们总会需要对数据进行验证,以保证数据的可靠性,而为了使这些验证可以在不同的地方进行复用(如winform.web.WPF等),就需要将验证进行封装,EntLib的 ...

  8. 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MySQL并发复制系列三:MySQL和MariaDB实现对比

    http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...

随机推荐

  1. Vue学习之--------深入理解Vuex之模块化编码(2022/9/4)

    在以下文章的基础上 1.深入理解Vuex.原理详解.实战应用:https://blog.csdn.net/weixin_43304253/article/details/126651368 2.深入理 ...

  2. `<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java

    <jsp:getProperty>动作和<jsp:setProperty>动作的使用 1.<jsp:getProperty>动作 语法格式: <jsp:get ...

  3. python学习笔记----必备知识

    一.必备知识 二.流程控制 https://blog.csdn.net/weixin_43304253/article/details/120778228 1.1语法特点: 1.1.1 代码注释 单行 ...

  4. vue-axios更改操作

    <template> <div class="nav"> <label for="">新部门</label>&l ...

  5. vue-axios 输入参数获取数据的写法

    <template> <div class="nav"> <input v-model="name" type="tex ...

  6. 第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料

    目录 1. MinIO介绍 2. MinIO应用场景 2.1 单主机单硬盘模式 2.2 单主机多硬盘模式 2.3 多主机多硬盘分布式 3. MinIO特点 4. 存储机制 5. docker安装Min ...

  7. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...

  8. c语言内存四区、数据存储范围和内存存储方向

    (1)代码区通常是共享只读(代码无法修改)的,即可以被其他的程序调用,例如运行两个qq,除了数据不一样,代码都是一样的, 每次运行qq,都会将代码和数据加载到内存中,除了数据,每次加载的代码都是一样的 ...

  9. mindxdl---common--test_tools.go

    // Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.// Package common define co ...

  10. 【Java并发006】使用层面:Lock锁机制全解析

    一.前言 二.synchronized局限性 + Lock锁机制的引入 2.1 synchronized局限性 第一,使用synchronized,其他线程只能等待直到持有锁的线程执行完释放锁(syn ...