芯片持续缺货涨价,在初创小公司真的是处于生死的边缘,各种芯片一直在告急,没有供货商,公司产品也生产不出来,32的芯片价格飙升,让企业不得选择国产的芯片HC32F460KETA国产芯片华大HC32替换STM32。
华大HC32F460和ST STM32F407ZGT6对比
Stm32F07ZGT6
HC32F460KETA
由对比图看见,相比于Stm32F407ZGT6,华大单片机HC32F460的主频有了提升,最大为200M。
两者都是Cortex-M4内核,供电的话因为都属于ARM系列,都是适用于3.3V。
Flash容量有点少于逊色于32的容量,其实这个看是看自己代码空间的大小,太多了也是浪费并且价格也高,毕竟公司是要求成本的,两者的RAM大小是一样的。
但很大劣势就是华大的引脚有点少,一共64pin,32是114,所以要求控制引脚比较多的产品还是要好好考虑一下引脚的分配问题,但是华大给我一个很惊艳的地方是他的引脚功能有一个分组表,这样更改功能非常方便,如下图:
几乎所有的引脚可以任意映射,这实在是太方便了,对于PCB拉线来说,不用到处转弯拉线了。
外设功能的话,都差不多,但肯定华大这款板子的资源不如st的F407.下面记录下一下使用的过程。
1、 画了一块HC32F460的核心板,大概一个周左右板子才回来。
2、 我用的是华大的官方库,当初移植了部分原stm32的程序,但是有冲突,所以感觉网上说直接替换是不太现实的,但函数的命名方式都是标准的,可以不用看底层直接用。
3、 焊接完板子之后,满怀期待插上下载器,然而心凉了半截。明天插图
这里能找到下载器(我用的是J-link,ST-Link也是可以的),但找不到芯片,我慌了,开始翻找数据手册,一般来说找不到芯片可能是晶振起振的问题(以我的经验来说,希望大家来补充),然后看了晶振部分的电容要求
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
要求晶振电容大小为2pf到25pf,板子和引脚间的寄生电容估算为10pf,我选择的是10pf的电容,也是没有问题的,那有没有可能是电容的实际容值不对,我拿万用表凉了下也是符合标准的。然后怀疑是不是下载电路那边有问题。为了防止拔插烧录引脚的脉冲,在两个下载引脚分别加了3.3V的TVS管。
我试着将下载频率降低,奇迹竟然发生了,能找到芯片了,但是只能在1M以下才能找得到,也就是说低频可以,高频不可以,让我想到是电容容性的问题,果然是这样。
将TVS管放到了100欧姆电阻的后面,然而TVS管是有寄生电容的,用万用表晾了一下差不多有3nf之大,这样跟电阻就组成了一个低通滤波器,根据公式fc = 1/2pi*R*c
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
算出频率是800Kz左右,符合1M以下能找到的原因,在multisim做了个仿真电路。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
在1Mhz的方波频率下,最上面那个电路的输出波形已经不是方波了,接近于正弦波了,这也就是下载器找不到新片的原因了,下面两个电路均正常工作,方波都能通过去。
但我有个疑问的是,中间那个电路,如果电容足够大的时候,按道理他的波形也会发生变形或者产生相位差,但是仿真模拟中却没有发生,不知道是为啥,请大佬们指点一下。
我去掉了两个TVS管,在50MHz的情况下也能正常找到芯片了,完美。然后下载了一个标准历程,下载成功。
总结:
1、第一个就是要对下载电路熟悉一点,掌握相应的模电知识,高通滤波器、低通滤波器等。
2、stm32的库我没有尝试,还是使用华大官方的库,用的还比较顺心,但是华大单片机的DMA发送有的小小的不尽人意,32单片机可以直接使能DMA通道就可以完成发送,而华大的DMA发送用AOS触发一直不成功,哪位大佬有成功麻烦教教我,跪谢。现在用的DMA 发送是用串口发送完一个字节之后产生DMA发送中断来实现的,也是可以的,至少现在没有遇到什么问题。
3、单纯这个测试,两者差别不大,应该说可以相互替代。选择替代芯片时,官网有个选型手册,参考一下,根据自己的需求来,也可以尝试联系一下技术寻求帮助,听说华大的技术还是蛮热心的,我还没有求助过。