400万+工程师在用

400万+工程师在用

STM32的国产替代者:航顺的HK32F103VET6和HK32F030M

嵌入式ARM

71人已加入

描述

 

 今日带来能够完美替代STM32的产品是航顺的HK32F103VET6和HK32F030M,后者是业界首颗1元内32位MCU产品。

航顺芯片2014年成立于深圳,软硬件全兼容进口MCU航顺造,作为世界顶级MCU研发团队所打造的通用MCU平台级企业,航顺将孵化超过100+专用领域MCU原厂,打造强大MCU生态合作航空母舰,继而深入耕耘孵化扶持航顺内外部科技青年完成“航顺无边界科技生态平台万亿级世界伟大企业战略梦想。

       21ic坛友zeshoufx表示,一次偶然机会在一个群里,一位群友发“ST低成本高性价比替代方案”,了解了航顺科技,进入官网后觉得是一个很不错的国产集成电路公司:因为他们除了做MCU外,存储、电源、驱动、模拟都有涉及,MCU包括32位和8位,存储包括spi型flash和EEPROM,电源包括DC-DC,LDO等,驱动主要是LCD驱动,模拟器件主要是各种运算放大器。  

 

  多说无益,直接看几个21ic家网友关于这两款开发板的测评:

  【技术文档】HK32F103VET6点亮LED 用户:tlled 第一次使用HK32F103VET6的芯片,看芯片资料引脚和功能兼容STM32F103VET6,ST的芯片最近涨价涨的太离谱了,想测试下这个国产芯片来替代STM32F103,支持国产芯片。

  在官网申请芯片也没有申请到,就在X宝上购买了一片。芯片是LQFP100引脚的,发现购买的芯片引脚不是很对位,还好焊接没有短路,上电先跑个点灯程序。官网也没有找到芯片SDK包文件,翻论坛的帖子看到有下载资料的链接:https://bbs.21ic.com/icview-3055190-1-2.html

  一、安装软件包 官网可以下载到IAR和MDK对应pack文件,我使用的是MDK,下载对应的文件。

      

2206caac-5f64-11eb-8b86-12bb97331649.png


二、硬件  开发板是自己设计的,点灯的硬件端口是PD3和PE0.
    

25b29ef6-5f64-11eb-8b86-12bb97331649.png


   

268b17c2-5f64-11eb-8b86-12bb97331649.png


 

  三、程序 3.1、GPIO端口应用分析

  通过点灯程序来学习HK32F103芯片的GPIO端口的应用,通过HK32F103xCxDxE用户手册_V1.0.0来了解下GPIO端口的功能。 GPIO端口的每个位可以由软件分别配置成多种模式,可配置的模式有下面内容: -- 输入浮空

  -- 输入上拉

  -- 输入下拉

  -- 模拟输入

  -- 开漏输出

  -- 推挽式输出

  -- 推挽式复用功能

  -- 开漏复用功能

  每个端口都可以根据硬件的功能来配置。

  对应的程序部分

    

26ed4eba-5f64-11eb-8b86-12bb97331649.png

  我的板子硬件外接的LED灯是上拉电阻到电源正极,可以配置的端口模式为开漏输出或推挽式输出。

  HK32F103芯片的GPIO配置和STM32F103芯片的GPIO配置看资料是一样的,代码应该可以兼容使用的。

  3.2、运行一个简单的点灯程序

  对应的GPIO口配置为输出,程序里面我配置为推挽式输出。 代码:led.c

  #include “led.h”#include “delay.h”void Led_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE); GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = LED0_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LED0_GPIO_PORT, &GPIO_InitStructure); LED0_OFF; LED1_OFF;}

  代码:main.c

    

27b10918-5f64-11eb-8b86-12bb97331649.png



3.3、选择开发工具
    

27dd0f04-5f64-11eb-8b86-12bb97331649.png


    

284d51c4-5f64-11eb-8b86-12bb97331649.png

 

  3.4、程序代码

   HK32F103C8T6_template(Keil v5).rar (4.31 MB, 下载次数: 4)

  (下载链接:

  https://bbs.21ic.com/forum.php?mod=attachment&aid=MTYwNTM3NHxmMGNkODViOXwxNjExMTI1OTQ2fDMwMjk2NTZ8MzA2MTE1Mg%3D%3D)

  四、程序执行

  下载程序后,复位板卡,开发板上的两个LED交替点亮,实际拍摄视频转换成GIF图片,看着效果不是很清晰,还是能够看出交替点亮过程。

    

29545630-5f64-11eb-8b86-12bb97331649.gif

  [HK32F030M]严谨的跑个分,不严谨的调个皮(频),附测试源码用户:gddddd 先简介一下来龙去脉,之前用HK32F030M做过一次CoreMark的跑分,但当时刚入手芯片,还没弄清楚状况,为了适应2Kram将CoreMark魔改过一番,但就是这番魔改导致跑分项目是不完整的,于是最后计算的分数也就虚高了。

  后来经过测试发现其实HK32F030M也是有4Kram的,也就有了今天的这个完整也相对严谨的跑分成绩了,但因为HK32F030M本身是没有PLL倍频的,所以高频时加上flash等待后的结果就不如STM32F030来得顺滑了,有深入兴趣的坛友可以源码再细调参数看看,总的来说54Mhz以下可以一战。 好了话不多说直接上图看疗效,每Mhz得分在1.84左右,比STM32F030的每Mhz得分1.67左右稍微高一点点,还是相当不错了,性价比杠杠的

4fa8410c-5f64-11eb-8b86-12bb97331649.png

5107cab8-5f64-11eb-8b86-12bb97331649.png

5299f4f0-5f64-11eb-8b86-12bb97331649.png

548c9272-5f64-11eb-8b86-12bb97331649.png

  下面是不严谨的调个频,首先需要说的是实际产品应用请不要超频使用,极少数场合比如对时序有较高要求(GPIO模拟低速USB时的666.6667ns就需要48Mhz的主频来实现)可以考虑稍微调个皮来适配。 再就是这款HK32F030M本身没有PLL锁相环来倍频,调整频率靠的是RCC_CR中的HSICAL粗调和HSITRIM细调,而且调节方式也并不是手册中提到的粗调2%和细调0.2%,而是一种非线性的比值,我也是靠笨办法(主要是我懒,用示波器看MCO输出的话才会精确)用串口是否乱码来调节的频率,因为串口本身误码率是有范围的,所以调节的结果当然是相当的不严谨。

  另一个原因是我手上的几片HK32F030M出厂的HSICAL都是0x1C,但HSITRIM的值却有不同,所以这种粗调加细调的方式调节主频也有很大局限性,万一出厂的HSICAL值不为0x1C的话那就会有很大频率偏差。 但有兴趣的坛友也可改改参数玩一玩,我是最高调整到了108Mhz,得分嘛就呵呵(高频低能),所以我还是太年轻,太不严谨了,源码仅供捣鼓玩耍,不要喷我,喷我~我也不负责任。 最后上两张图,标示出了调整频率的地方,已经设置了32M、48M、54M、72M、96M、108M几个选项,需要其他频率的自己再捣鼓了。

58901d1c-5f64-11eb-8b86-12bb97331649.png

5982beb4-5f64-11eb-8b86-12bb97331649.png

  最后说说这款MCU真的很不错,VECT_TAB_OFFSET的设定很适合做IAP啊,这个可是CORTEX M0+和M3的功能,EEPROM虽然少点但也很实用,如果有DMA的话就吊炸天了。等空了打算研究一下圈圈的USB书,做个USB方式的IAP那就真香了。

   HK32F030MF4P6_UpClock_Demo_coremark-loop.zip (316 KB, 下载次数: 10) (下载链接:https://bbs.21ic.com/forum.php?mod=attachment&aid=MTUyODUzMHxmMzhlYWYxN3wxNjExMTI3MjU4fDMwMjk2NTZ8MzAyMDY4Mg%3D%3D) 航顺MCU开发入门及常见问题汇总 用户:ifxz0123 问题0、航顺(HK)MCU所需的IDE、仿真调试工具、批量烧录工具分别是什么?是否有说明文档?

  答:开发环境(IDE):Keil(for ARM)、IAR(for ARM)。凡是开发过STM8、STM32、STC51的想必对这两个软件很熟悉,至少也有所耳闻。目前市面上流行的32位ARM架构的MCU,大部分用的都是这两款软件。 STM8的芯片开发还可以用ST自家的开发工具(IDE)STVD,免费的使用。当然,还有一些其他的IDE,我没用过,这里也就不提了,有兴趣的请自行网上搜索。(Keil建议V5版本)。

  仿真调试工具:航顺的MCU和ST的32位MCU一样都是ARM CortexM0、CortexM3的内核,所有都是支持SWD调试接口的,因此ST的32位MCU调试工具,如J-LINK、U-Link、ST-Link、DAP-Link等都是可以用的。 国产的其他家的32位的ARM CortexM0/CortexM3的芯片这些仿真调试工具一般依旧是可以使用的。 批量烧录工具:目前,好像航顺没有出自家的批量烧录器,基本上都是第三方的。

   第三方烧录器清单_20200918.zip (5.57 KB, 下载次数: 10) 航顺现在也出了自家的离线批量烧录器

航顺RX-0001离线编程器说明书 v1.0.00.pdf (1.34 MB, 下载次数: 2) (请点击阅读原文到原贴内下载) 补充: HK单独的在线烧录软件: ST的STVP软件:只支持同型号的航顺MCU烧录、读写FLASH、读写选项字、以及使能取消读写保护等。   

5c998b0a-5f64-11eb-8b86-12bb97331649.jpg

  JLINK Flash V6.70e:支持航顺全系列MCU的烧录。需要注意的是JLINK驱动必须是6.0以上,并且打了航顺MCU的补丁包。  

5d3e302e-5f64-11eb-8b86-12bb97331649.png

STM32 ST-LINK Utility:(测试了HK32F030F4P6,代码正常运行)  

60fc0fa6-5f64-11eb-8b86-12bb97331649.png

HK Config:航顺32MCU编程配置工具,航顺自家出品的烧录软件,需要JLINK作为工具,支持航顺全系列的MCU。能实现程序的烧录、读、选项字的配置等。  

655103ea-5f64-11eb-8b86-12bb97331649.png

  问题1、航顺和ST同型号MCU的软硬件兼容是啥意思?不用改硬件吗?不用改软件吗?ST的程序能直接烧录到HK的芯片里运行吗?

  答:是的,基本不用改硬件电路,基本不需要改动软件代码,可以直接将ST的程序直接烧录到HK的芯片里运行,因为航顺的芯片内核是ST的是一样的,并且寄存器及寄存器地址也是一样的。

  可以用Keil + 仿真器,IAR + 仿真器,把程序烧录到HK的芯片里。如果下载不成功,请安装HK的MCU器件库,并将工程芯片型号设置为HK的型号,工程的烧录算法设置为HK的烧录算法,然后编译、连接、Download。 注意,ST的型号要和HK的型号对应,举例STM32F030C8T6 -》 HK32F030C8T6, STM32F103C8T6 -》 HK32F103C8T6。 如果程序直接下载到HK的芯片,上电后运行有问题,请根据航顺的芯片应用笔记对程序进行微调,让芯片正确工作。6a109760-5f64-11eb-8b86-12bb97331649.png

6bd20f34-5f64-11eb-8b86-12bb97331649.png

6cb1cf66-5f64-11eb-8b86-12bb97331649.png

问题2、可以使用STM32MxCube开发航顺的单片机吗?   答:可以的,只要是和ST的MCU软硬件兼容的同型号的航顺单片机,是可以用STM32MxCube开发的。但是在应用中碰到航顺应用笔记列举的问题是需要手动去添加或修改一些代码,让航顺的正确工作起来。   目前,航顺的F103/F030/F031系列是可以的。   航顺的MCU哪些型号是支持用STM32MxCube开发的呢,请看下图:(只列举了部分常用型号)  

6f25fd26-5f64-11eb-8b86-12bb97331649.png

责任编辑:xj

原文标题:盘点STM32的国产替代者(3)

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

 

打开APP阅读更多精彩内容

电子发烧友网

收听电子行业动态,抢先知晓半导体行业

全部0条评论

快来发表一下你的评论吧 !

打开APP