HC32F4A0 系列开发笔记目录

  • 选用芯片
  • 对比STM32的优势
  • 踩过的坑和一些总结:
    • 1——串口空中断bug
    • 2——标志位的寄存器
    • 3——写IAP遇到的问题
    • 4——CPU主频配置
    • 5——RTC时钟
    • 6——移入操作系统后的DDL_DealyMS函数
    • 7——IO口的一些区别
    • 8——ETH
    • 9——CPU主频与IO口读写周期
    • 10——HC官方库的解锁
    • 11——配置寄存器需要解锁保护寄存器
    • 12——SRAM3的读问题

选用芯片

由于芯片涨价严重,stm32f4系列价格对比国产芯片高不少,所以使用国产华大半导体的HC32F4系列开发。曾经考虑过stm32f460作为开发,但是f460系列的缺陷就是外设通道特别少,而且不支持VBAT,比方说我想用8个串口做产品,但是f460只支持4串口,并不符合理想。所以使用了HC32F4A0,共提供了10个USART,6个SPI,6个I2C,2个CAN,2个USB,以及提供了一个ETH MAC。但是确实F460比较便宜。
综上,选择了HC32F4A0PGTB开发,flash有1MB的容量,516KB的SRAM。共100脚。

对比STM32的优势

其中最亮眼的一点,就是大部分io口都支持任意配置为某个串口或者spi ,i2c,can。不过也有一些功能是固定某个引脚的,比如说烧录用的jtag和sw,或者说ETH和USB。具体是哪个引脚就参考数据手册的引脚分配图吧。

但是io引脚会分为3个功能组,FG1,FG2,FG3(FunctionGroup),比方说,FG1只能配置为USART1,2,3,4中的其中一个,不能配置为USART8,9,10。同理FG3就可以配置为USART3,8,9,10,但是不能配置为1,2,4。所以在画原理图的时候,必须先看数据手册,把需要的功能尽量在同一个FG上,方便配置。
反观stm32f4,最多就支持端口重映射,所以它规定是哪个脚,你就必须用哪个脚。
而我用HC32F4A0,我哪个io想用spi就用spi,想用USART用USART,哪怕后面后悔了,哪个io不想用spi了,也可以通过配置寄存器来修改他的功能。这就非常的方便。

当然HC32有他本身的缺陷,下面会提到。

踩过的坑和一些总结:

1——串口空中断bug

,现象为不能触发空中断,后来发现在官方勘误中有注明需要将发送和发送空中断同时使能,通过寄存器位或解决。

2——标志位的寄存器

这款芯片很多标志位的寄存器不能直接写入,只能通过硬件清零,这就导致了一些特殊情况失去了最好的解决办法,比如说串口空中断触发两次等等。(最后写了判断,但是避免不了执行两次)

3——写IAP遇到的问题

我写IAP升级工程的时候,发现写入flash有bug,只能写到0x400后停止了,后来经过分析发现,是hc32本身有一些配置数据放在了0x400后面一小段空间,而且这段空间不能被修改,导致写flash出了问题,解决办法为,在app工程中屏蔽掉hc_ll_icg.h文件,这样app程序就避免了在0x400这个位置写入配置数据,且boot工程拥有这段配置数据。

4——CPU主频配置

配置CPU频率时,我的外部晶振是8MHZ,进入cpu时会先经过一个120倍频为PPLN,然后再通过四分之一分频给PPLP,PPLP作为CPU主频,240MHZ。接着再给内部其他时钟分频,比如说PCLK1,我是二分之一分频为120MHZ,PCLK3则是四分之一分频为60MHZ。

5——RTC时钟

在配置RTC时钟时,要注意将时钟源改为外部时钟源,否则会引起时间出现巨大偏差。由于我的外部时钟晶振频偏为20ppm,最后测试的结果也为一天偏差1秒,在误差范围内。

6——移入操作系统后的DDL_DealyMS函数

在移入操作系统后,HC32的库延时函数会失去精度,比方说原本DDL_DealyMS(1000);结果可能会变成延迟了1.3秒,而操作系统的时间片一般为1000hz,所以最好还是使用操作系统内置的延迟函数,比如vTackdelay。

7——IO口的一些区别

HC32的io口几乎都没有内部下拉(除去一些特殊功能外),且只有在io口配置的输入的时候可以启用内部上拉,需要下拉的时候应该考虑外部接入下拉电阻。 HC32的io口同样没有配置io口频率的寄存器,而是替换成了高中低驱动模式,其中这三种模式就对应了不同的频率,这点在手册中的io口驱动能力数据可以看到。

8——ETH

提供给ETH外设的时钟至少需要在60MHZ以上才可以工作正常(在我使用PHY芯片LAN8720的情况下),而ETH的时钟由PCLK1提供。

9——CPU主频与IO口读写周期

需要注意,配置IO时需要根据主频率来配置读写插入周期寄存器,否则可能出现问题。

10——HC官方库的解锁

需要注意,使用keil工程开发时,很多库函数并不是可以直接使用,需要在工程中的某个配置文件的define里面进行解锁。

11——配置寄存器需要解锁保护寄存器

很多寄存器不可以直接进行配置,需要先解锁保护寄存器,才可以配置。

12——SRAM3的读问题

使用SRAM3如果出现了问题,则可能需要将SRAM123的读周期寄存器设置为1(也就是两个读写周期)。

华大半导体 HC32F4A0 系列开发笔记相关推荐

  1. 华大半导体HC32F4A0系列ARM芯片EXMC并口通信时序的FPGA实现

    华大半导体HC32F4A0系列ARM芯片EXMC并口通信时序的FPGA实现 EXMC简介 外部存储器控制器EXMC是一个用来访问各种片外存储器.实现数据交换的独立模块.EXMC通过配置可以把内部的AM ...

  2. 华大半导体HC32F4A0笔记(三),RS485通信,使用串口USART1,DMA接收

    一.USART的工作频率和波特率 看用户手册一上来就糊涂了,手册里面写的PCLK是什么?翻看手册第4章有关CMU章节.似乎这里说的PCLK就是PCLK1?手册是第一版,纰漏其实蛮多的. 在官方库函数验 ...

  3. 华大半导体HC32F4A0笔记(一),PWM输入捕获,使用TIM6

    一.启动时钟 PWC_Fcg2PeriphClockCmd(PWC_FCG2_TMR6_x, Enable); TMR6对应FCG2,根据PWM输入引脚来确定是TMR6_x(本例为TMR6_2).运行 ...

  4. 华大半导体HC32F4A0笔记(五),使用CMSIS-DSP库进行FFT运算

    一.开启FPU功能 点这个麻将牌四筒,展开CMSIS,把DSP勾了. 点开后 然后点这个锤子 No Auto Includes的勾不要打,让它自动include,因为CMSIS-DSP库在KEIL的安 ...

  5. 华大半导体HC32F4A0笔记(四),SPI读写国产128kB EEPROM 上海贝岭BL25CMIA

    一.配置SPI引脚 本例中SPI只连接了一个设备,即国产128kB EEPROM上海贝岭BL25CMIA. NSS脚采用软件控制. 其它引脚通过查看手册可知其连接的SPI外设为SPI1. /* SPI ...

  6. 微信小程序应用开发赛全国三等奖总结,以及关键点汇总,开发基本功系列(含云开发笔记、wxcharts数据可视化)

    在华南赛区近千支队伍里以第四名脱颖而出,成为唯一一支入围国赛的专科队伍. 当时是专科大二,省赛作品提交剩下两个月左右我们才报名,然后开始学小程序,边学边开发,没想到第一次参加比赛就拿到国奖,兴奋了好久 ...

  7. 华大半导体正式成为RT-Thread高级会员

    日前,华大半导体与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,华大半导体正式成为RT-Thread高级会员.双方将基于华大半导体MCU和RT-Thread物联网操作系统,深 ...

  8. GD32E230开发笔记-GD32选型

    GD32E230开发笔记-GD32选型 1.2020年MCU之难 2.重新选型MCU 3.为什么选择GD32-M23系列 3.1.ARM Cortex-M3 3.2.ARM Cortex-M4 3.3 ...

  9. 华大单片机HC32F460 系列MCU

    1 摘要 本篇应用笔记主要介绍如何使用华大单片机 HC32F460 系列MCU的 DMA 模块传输数据. 2 DMA 简介 什么是 DMA? DMA(直接内存访问控制器)功能块可以不通过 CPU 高速 ...

最新文章

  1. linux常用命令简介- 用户管理及文件属性
  2. JavaScript中this的五种绑定方式详解
  3. 窗体的ControlBox属性
  4. Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable...
  5. python爬虫需要什么知识-学习Python爬虫技术,需要掌握哪些web端的知识?
  6. 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
  7. PHP 错误与异常 笔记与总结(12 )异常
  8. StreamWriter、StreamReader 写读文件的两种方法
  9. 支付宝 RSA和RSA2签名算法区别
  10. 尚硅谷vue基础笔记
  11. 怎样查找计算机的ip mac地址,如何通过mac地址查ip,教您Mac怎么查看ip地址
  12. wannacry 蠕虫勒索软件“永恒之蓝”席卷全球100多个国家,已经感染了勒索病毒“永恒之蓝”的主机该怎么处理?
  13. 冷冻水和冷却水的区别
  14. 大数据技术与应用实训心得_大数据心得体会
  15. 中国智能手机市场大幅衰退,仅华为vivo取得增长
  16. 向Hexo博客添加微博秀(pug模板)
  17. Fiddler 学习笔记--Fiddler 教程
  18. “达内”JAVA技术培训有感(一)
  19. 【Linux】主函数的三个形参
  20. 【c++复健】双指针应用

热门文章

  1. win10或win7计算机右键管理打不开
  2. API 设计、开发、测试一体化协作平台ApiFox、ApiPost和YAPI对比
  3. Ubuntu16.04 在ROS中配置RealSence D435 并标定深度相机与rplidar外参
  4. ZZ:windbg 常用命令
  5. 2年Java开发需要具有什么水平?
  6. 极智开发 | 昇腾atlas300 docker开发环境搭建
  7. 委外加工(Subconctracting)流程
  8. 获取不到摄像头名称???
  9. 大众点评必吃榜的必然
  10. 广东省肇庆市谷歌卫星地图下载