当前位置: 首页 > news >正文

普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单

目录

  • 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介
  • 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境
  • 普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单

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

声明

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

PY32F002AF15P

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

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

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

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

在代码中构造一个巨大的数组将 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.

clk:48000000 flash:96 ram:de 8c 96␍␊
clk:48000000 flash:8c ram:8c 96 8c␍␊
clk:48000000 flash:64 ram:96 8c 64␍␊
clk:48000000 flash:4e ram:8c 64 4e␍␊
clk:48000000 flash:63 ram:64 4e 63␍␊
clk:48000000 flash:e6 ram:4e 63 e6␍␊

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

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

PY32F002A 测试DMA

运行SDK中 PY32F003 的 ADC_ContinousConversion_DMA 示例代码, 可以正常运行

当前这片 PY32F002AF15P 支持DMA

测试代码

测试RAM, Flash 和 PLL 的代码已经放到 GitHub, 地址https://github.com/IOsetting/py32f0-template/tree/main/Examples/Raw/Test/PY32F002A_32KF_4KR

结论

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

待后续补充

相关文章:

  • 网络建设的流程网站/seo诊断站长
  • 提高网站访问速度/哈尔滨seo关键词排名
  • 江西住建云网站/河南网站推广优化
  • 移动手机网站开发/推广效果最好的平台
  • 网站内链怎么布局/企业网站建设方案范文
  • 网上发布信息的网站怎么做的/曼联vs恩波利比分
  • grpc、https、oauth2等认证专栏实战19:docker启动tls配置介绍
  • 2个大厂 100亿级 超大流量 红包 架构方案
  • 2023/1/15 JS-变量提升与函数提升 执行上下文
  • 基于transfomer架构的模型[GPT、BERT、VIT、ST、MAE等等]总结
  • 基于51单片机的pm2.5空气质量监测仪仿真设计
  • Java使用Zxing二维码生成
  • JavaSE与网络面试题
  • LeetCode080_80. 删除有序数组中的重复项 II
  • VueJs中的toRef与toRefs函数的一个比较
  • PHP正则匹配img并处理src
  • 绕过某博客查看文章验证码,关注公众号得验证码
  • Spring系列 容器