首发于MCU评测
PY32F003简评

PY32F003简评

PY32F003是目前市面上一颗比较火的低成本MCU,价格据说6毛起,实际应该会贵一些,估计在1块左右,这个价格已经低于很多8位MCU了,非常有竞争力。从TSSOP20封装的管脚排列来看,竞争对手明显是8位的STM8S003,电源管脚排列相同,用户不用改电路板,直接P2P替换即可,用32位来打8位,算是降维打击了。还有个PY32F030,定位稍高一些,主频提升了点,加了几个外设,其实都是一样的32位架构,竞争对手是STM32F030。目前市面上比较容易买到的是PY32F003和PY32F030,从官方提供的资料开来,内部还规划了定位更低的PY32F002A,定位更高的PY32F072,PY32F303等等,这些名字一看就知道竞争对手是谁。

架构方面,PY32F003采用Cortex M0+核心,支持硬件乘法,支持中断向量重定向,不过PY32F003的中断向量表只能放到SRAM中,如果放到FLASH中使能读保护以后代码运行异常,使用中需要注意,官方的资料中有详细的操作方法。不要问是不是bug,问就是feature。

封装方面,常见的TSSOP-20,SO-8,DFN-8,SO-16,QFN-20,MSOP-10,QFN-32,LQFP-32都有(包括003和030),其中DFN-8封装非常小,只有1.5x1.5mm,管脚间距0.4mm,大大节省PCB面积,因为有底部的GND焊盘,DFN-8比SO-8还能多出一个可用管脚。看到这么多封装我的脑子嗡嗡的,不知道封测厂是不是相同的感受,又数一遍,没找到我最常用的LQFP-48。

存储方面,主要有3种配置:2+16kB、4+32kB、8+64kB,最大8kB SRAM和64kB FLASH,这个相当给力了,远超这颗芯片的定位,尤其是SO-8封装配8+64kB存储,暂时我还想不出来什么应用可以把存储用完。需要注意的是PY32F003的闪存只支持128字节页写入,不支持STM32常见的32位Word和16位Halfword写入。

外设方面,除了USB和CAN这种高级点的外设该有的都有,比如12位ADC,比较器、定时器、DMA、RTC、USART、I2C、SPI,比较中庸,没有优点也没有槽点。

调试方面,支持ARM常见的DAP调试工具,连接SWCLK和SWDIO以后直接在MDK里面设置CMSIS-DAP就可以开干了。官方提供了ISP工具PuyaISP,拉高BOOT0上电连接串口就可以烧录程序了。还提供了一个PuyaProgrammer软件,要使用他们的PY_LINK硬件,这个市面上还没见过有销售的,暂时用不了,如果以后市面上用得多,我可以搓一个出来,很容易。另外需要注意的是SO-8、SOP-16、DFN-8这样的封装是没有BOOT0管脚的,如果用户程序使用了SWD接口的管脚,那么可能就自我了断,无法再次写入程序了,使用中需要注意。

资料和开发工具方面,官网提供了一个固件包下载,目前最新版本为20221024,官方下载链接:puyasemi.com/cpzx3/info

资料包藏得比较深,要把水平滚动条拉到最后才能看到下载链接,如下所示:

下载以后是一个压缩包,里面应有尽有,开发工具默认支持MDK和IAR,使用GCC的同学请自行手搓启动文件;固件库同时提供了HAL库和LL库,其实这种简单的芯片直接用寄存器也完全可以。这种简单芯片用HAL库就像在三亚穿棉裤——相当不舒服;换LL库就是换普通牛仔裤正常点儿了;至于直接使用寄存器么,就像是穿大裤衩,这个才最舒服么。

需要吐槽的是资料重复比较严重,不同封装的芯片使用分开的datasheet,芯片描述头文件中,不同容量的芯片使用不同的头文件,其实内容绝大部分都是重复的,信息冗余严重,其实使用预编译指令放到一个头文件中就可以了。这么做一个可能的原因是他们内部文档和软件部分使用行数或者篇幅作为KPI。

最后总结下:在1块钱这个价位里,这颗PY32F003基本是无敌的存在,隔壁的那颗CH32V003虽然号称5毛钱,但是是RV32EC核心,连硬件乘法器都没有,存储也只有2+16kB,本身RISC-V代码密度就赶不上ARM,这个存储空间更是捉襟见肘了。比较可惜的是PY32F030最大管脚32个,没有我最常用的LQFP-48封装,不知道为什么厂家不封一个48脚封装的PY32F030C8T6出来,这个才是应用最广泛的,搞不懂。

编辑于 2023-01-13 18:14・IP 属地陕西