• 注册 / 登录
  • 切换到窄版
  • 查看: 4586|回复: 0

    华大HC32替换STM32,这些细节一定要看!

    [复制链接]

    676

    主题

    690

    帖子

    6810

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6810
    发表于 2022-8-14 21:17:19 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 一路上 于 2022-8-14 22:43 编辑

    前言

    随着中美关系的发生变化,国家大力发展芯片,越来越多的优秀的国产芯片被大家所熟知。分享一下项目中使用小华半导体HC32F460KETA替代STM32F407ZGT体验。

    华大HC32F460和ST STM32F407ZGT6对比如下:

    HC32F460STM32F407
    ARMv7-M  架构 32bit Cortex-M4 CPU 集成FPU、 MPU,支持 SIMD指令的 DSP,及CoreSight标准调试 单元  。最高工作主频200MHz Flash加速 单元实现 0-wait程序 执行达到 250DMIPS或 680Coremarks的运算性能内核:带 FPU 的 Arm® 32 位 Cortex®-M4  CPU、自适应实时加速器 (ARTAccelerator),允许从闪存执行 0 等待状态,频率高达 168 MHz,内存保护单元,210  DMIPS/1.25 DMIPS/MHz (Dhrystone 2.1) 和 DSP 指令
    内置存储器内置存储器
    最大  512KByte的 Flash memory,支持安全保护及数据加密 *1高达 1 MB 的闪存
    最大  192KByte的 SRAM,包括 32KByte的200MHz单周期访问高速 RAM 4KByte Retention RAM高达 192+4 KB 的 SRAM,包括 64 KB 的  CCM(内核耦合存储器)dataRAM
    电源,时钟,复位管理512 字节的 OTP 内存
    系统电源(  Vcc 1.8-3.6V )灵活的静态存储器控制器,支持 Compact  Flash、SRAM、PSRAM、NOR 和 NAND 存储器
    6个独立时钟源:外部主时钟晶振  (4-24MHz ),外部副晶振(32.768kHz),内部高速 RC(16/20MHz), 内部中速 RC(8MHz),内部低速  RC(32kHz),内部 WDT专用 RC(10kHz)LCD 并行接口,8080/6800 模式
    包括上电复位(POR)  低电压检测复位(LVDR),端口复位(PDR)在内 的 14种复位源 每个复位源有独立标志位时钟、复位和电源管理
    低功耗运行1.8 V 至 3.6 V 应用电源和 I/O
    外设  功能可以独立 关闭或开启POR、PDR、PVD 和 BOR
    三种  低功耗模式: Sleep Stop Power down模式4 至 26 MHz 晶体振荡器
    Run模式和  Sleep模式 下 支持 超高速模式、高速模式 、 超低速模式 之间 的切换内部 16 MHz 工厂修整 RC(1% 精度)
    待机功耗:  Stop模式 typ.90uA@25°C Power down模式最低至 1.8uA@25°C用于 RTC 的 32 kHz 振荡器,带校准功能
    Power  down模式下,支持 16个端口唤醒,支持超低功耗 RTC工作 4KByte SRAM保持数据带校准的内部 32 kHz RC
    待机快速唤醒,Stop模式唤醒最快至2us  Power down模式唤醒最快至 20us低功耗运行
    外设运行支持系统显著降低CPU处理负荷睡眠、停止和待机模式
    8通道双主机  DMAC,USBFS专用 DMAC用于 RTC 的 VBAT 电源、20×32 位备份寄存器 +  可选 4 KB 备份 SRAM
    数据计算 单元  DCU3×12 位、2.4 MSPS A/D  转换器:在三重交错模式下最多 24 个通道和 7.2 MSPS
    支持外设事件相互触发(  AOS )• 2×12 位 D/A 转换器
    高性能模拟• 通用 DMA:具有 FIFO 和突发支持的 16 流 DMA  控制器
    2个独立12bit  2.5MSPS ADC• 多达 17 个定时器:多达 12 个 16 位定时器和两个  32 位定时器,频率高达 168 MHz,每个定时器具有多达 4 个 IC/OC/PWM 或脉冲计数器和正交(增量)编码器输入
    1个可编程增益放大器(  PGA )调试模式
    3个  独立电压比较器( CMP),支持 2路内部基准电压串行线调试 (SWD) 和 JTAG
    1个片上温度传感器(  OTS )接口
    TimerCortex-M4 嵌入式跟踪宏单元™
    3个多功能  16bit PWM Timer Timer6多达 140 个具有中断能力的 I/O 端口
    3个  16bit 电机 PWM Timer Timer4高达 84 MHz 的多达 136 个快速 I/O
    6个  16bit 通用 Timer TimerA多达 138 个 5 V 容错 I/O
    2个  16bit 基础 Timer Timer0多达 15 个通信接口
    最大  83个GPIOCPU单周期访问最大100MHz输出,最大20个通信接口多达 3 个 I2C 接口 (SMBus/PMBus)
    最大 81个  5V-tolerant IO最多 4 个 USART/2 个 UART(10.5  Mbit/s,ISO 7816 接口,LIN,IrDA,调制解调器控制)
    3个  I2C,支持 SMBus协议多达 3 个 SPI (42 Mbits/s),2  个具有多路复用全双工 I2S,通过内部音频 PLL 或外部时钟实现音频类精度
    4个  USART,支持 ISO7816-3协议2 个 CAN 接口(2.0B 有源)
    4个  SPI,1个QSPI支持200Mbps高速访问XIPSDIO 接口
    4个  I2S,内置音频 PLL支持音频级采样精度高级连接
    2个  SDIO,支持 SD/MMC/eMMC格式带有片上 PHY 的 USB 2.0 全速设备/主机/OTG  控制器
    1个  CAN,支持 ISO11898-1标准协议具有专用 DMA、片上全速 PHY 和 ULPI 的 USB  2.0 高速/全速设备/主机/OTG 控制器
    1个 USB  2.0 FS,内置 PHY,支持 Device/Host具有专用 DMA 的 10/100 以太网 MAC:支持  IEEE 1588v2 硬件、MII/RMII
    数据加密功能:AES/HASH/TRNG

    由对比上面列表可见,相比于Stm32F407ZGT6,两者都是Cortex-M4内核,供电的话因为都属于ARM系列,都是适用于3.3V。

    华大单片机HC32F460的主频有了提升最大为200M,Flash容量有点少于逊色于32的容量,其实这个看是看自己代码空间的大小,太多了也是浪费并且价格也高,毕竟公司是要求成本的,两者的RAM大小是一样的。

    但很大劣势就是华大的引脚有点少,一共100pin,STM32是144pin,所以要求控制引脚比较多的产品还是要好好考虑一下引脚的分配问题。但华大给我一个很惊艳的地方,就是它的引脚功能有一个分组表,这样更改功能非常方便,如下图所示:

    1.png
    引脚功能表

    几乎所有的引脚可以任意映射,这实在是太方便了,对于PCB拉线来说,不用到处转弯拉线了。小华460和STM407外设功能都差不多,下面记录一下使用过程。

    1、画了一块HC32F460的核心板,大概一个周左右板子才回来。

    2、我用的是华大的官方库,当初移植了部分原stm32的程序,但是有冲突,所以感觉网上说直接替换是不太现实的,但函数的命名方式都是标准的,可以不用看底层直接用。

    3、焊接完板子之后,满怀期待插上下载器,然而心凉了半截。

    这里能找到下载器(我用的是J-link,ST-Link也是可以的),但找不到芯片,我慌了,开始翻找数据手册。一般来说,找不到芯片可能是晶振起振的问题(以我的经验来说,希望大家来补充),然后看了晶振部分的电容要求。

    要求晶振电容大小为2pf到25pf,板子和引脚间的寄生电容估算为10pf,我选择的是10pf的电容,也是没有问题的,那有没有可能是电容的实际容值不对,我拿万用表凉了下也是符合标准的。然后怀疑是不是下载电路那边有问题。为了防止拔插烧录引脚的脉冲,在两个下载引脚分别加了3.3V的TVS管。

    我试着将下载频率降低,奇迹竟然发生了,能找到芯片了,但是只能在1M以下才能找得到,也就是说低频可以,高频不可以,让我想到是电容容性的问题,果然是这样。

    5.png

    我将TVS管放到了100欧姆电阻的后面,然而TVS管是有寄生电容的,用万用表晾了一下差不多有3nf之大,这样跟电阻就组成了一个低通滤波器,根据公式fc = 1/2pi*R*c

    6.png

    算出频率是800Kz左右,符合1M以下能找到的原因,在multisim做了个仿真电路。

    7.png

    在1Mhz的方波频率下,最上面那个电路的输出波形已经不是方波了,接近于正弦波了,这也就是下载器找不到新片的原因了,下面两个电路均正常工作,方波都能通过去。

    但我有个疑问,中间那个电路,如果电容足够大的时候,按道理他的波形也会发生变形或者产生相位差,但是仿真模拟中却没有发生,不知道是为啥,请大佬们指点一下。

    我去掉了两个TVS管,在50MHz的情况下也能正常找到芯片了,完美。然后下载了一个标准历程,下载成功。

    决定先完善下开发环境,并且看看官网有没有例程,跑个简单的试一试。首先,这款单片机的资料还是蛮多的,开发也确实跟32差不多,所以用过32的同学上手很快。


    找到产品分类:点开之后,选择通用MCU。

    5.jpg

    找到F460的相关芯片,点击我们的芯片F460KETA,会给你展示产品特点、技术文档、来发工具、应用方案等,做的很人性化。

    6.jpg

    我用的是MDK5,这个版本:

    9.jpg

    资料还是非常详细的:驱动库及样例选择最新的Rev,还有应用笔记,感觉非常棒!

    7.jpg

    8.jpg

    打开例程库在这个文件夹下面:

    10.jpg

    点开驱动库和样例:

    11.jpg

    找到gpio这个文件,并打开它。

    12.jpg

    这个是GPIO管脚的定义和初始化,很熟悉的感觉,跟32差不多。

    13.jpg

    14.jpg

    主循环里面是反转LED灯。

    修改成我们定义的管脚,其余的地方,不做修改,编译一下,直接下载,ok!

    编译,下载 ;注意芯片类型,不要选错了。

    15.jpg

    注意:下载时要把reset and run勾选上,不然不会自动运行。

    16.jpg

    用了一个LED闪烁来演示,LED等能够正常的闪烁,程序现在能够初步跑起来,开心。

    小结:

    1、第一个就是要对下载电路熟悉一点,掌握相应的模电知识,高通滤波器、低通滤波器等。

    2、stm32的库我没有尝试,还是使用华大官方的库,用的还比较顺心;但是华大单片机的DMA发送有的小小的不尽人意,32单片机可以直接使能DMA通道就可以完成发送,而华大的DMA发送用AOS触发一直不成功,哪位大佬有成功麻烦教教我,跪谢!

    现在用的DMA 发送是用串口发送完一个字节之后产生DMA发送中断来实现的,也是可以的,至少现在没有遇到什么问题。

    3、单纯这个测试,两者差别不大,应该说可以相互替代。选择替代芯片时,官网有个选型手册,参考一下,根据自己的需求来,也可以尝试联系一下技术寻求帮助,听说华大的技术还是蛮热心的,我还没有求助过。

    最后,希望国产芯片越做越好!

    作者:woai32lala 一路上重新编辑
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 20:45 , Processed in 0.048295 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表