目录

  • HC32L110(一) HC32L110芯片介绍和Win10下的烧录
  • HC32L110(二) HC32L110在Ubuntu下的烧录
  • HC32L110(三) HC32L110的GCC工具链和VSCode开发环境
  • HC32L110(四) HC32L110的startup启动文件和ld连接脚本
  • HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置

前言

这个系列介绍一个比较小众的MCU, HC32L110系列. 因为小众所以资料少, 一部分内容来源于官方网站, 一部分内容来源于国外硬件玩家的先行资料, 其它的只能靠自己测试和摸索. Windows下Keil开发环境的资料很全不需要锦上添花. 我做的工作主要是在Linux环境下配置可用的烧录和开发环境, 移植GCC的LD和startup代码, 这个代码仓库主要面向GCC ARM工具链的用户.

仓库地址: https://github.com/IOsetting/hc32l110-template

如果转载, 请注明出处.

HC32L110 系列 Cortex M0 MCU

Hackaday 在三月份的时候介绍了一款最小的MCU NEW PART DAY: SMALLEST ARM MCU UPROOTS COMPETITION, NEEDS RESEARCH, 华大的 HC32L110B6YA-CSP16TR, CSP16封装, 尺寸有只1.6mm x 1.4mm, 还不及一粒米大, 从这几张图可以对比看看实物大小

硬件大佬Jeroen Domburg的手工焊接尝试油管视频链接地址 和芯片介绍

  • Using a tiny HC32L110 ARM chip - Intro
  • Using a tiny HC32L110 ARM chip - Soldering a WCSP package
  • Using a tiny HC32L110 ARM chip - Programming the chip

HC32L110 参数

32位Cortex M0内核, 16K/32K Flash, 2K/4K RAM, 外设也很齐全. 缺点也很明显, 作为一个32位M0, 内存有点小, SPI和I2C分别只有一个, 对一些场景会有限制.

  • Arm Cortex-M0+ 32-bit core, 32 MHz (内建的时钟源最高是24MHz)
  • 2KB to 4KB RAM
  • 16K to 32KB flash
  • 外设
    • 16x GPIOs with 20-pin packages, 12x GPIOs with 16-pin packages
    • PWM output
    • 2x UART, 1x SPI, 1x I2C
    • Up to 9-channel 12-bit SARADC with up to 1Msps sampling
    • Buzzer frequency generator
    • Timer/Counter
      • 3x general-purpose 16-bit timers/counters
      • 3x high-performance 16-bit timer/counter
      • 1x low power 16-bit timer/counter
      • 1x programmable 16-bit timer/counter with comparison support
    • RTC
    • 2-way voltage comparator VC with integrated 6-bit DAC and programmable reference input
  • 时钟
    • External high-speed crystal oscillator 4 ~ 32MHz
    • External low-speed crystal oscillator 32.768KHz
    • Internal high-speed clock 4/8/16/22.12/24MHz
    • Internal low-speed clock 32.8/38.4KHz
    • Watchdog timer
    • Hardware supports internal and external clock calibration and monitoring
  • Security – CRC-16 module, unique 10-byte ID number
  • Debugging – Embedded debugging solution providing a full-featured real-time debugger
  • Power Management
    • Operating voltage – 1.8 to 5.5V
    • Integrated low voltage detector LVD, configurable 16-level comparison level
  • Power consumption
    • 0.5μA @ 3V in deep sleep mode (all clocks off, power-on reset valid, IO status maintained, IO interrupt valid)
    • 1.0μA @ 3V in deep sleep mode + RTC operation
    • 6μA in 32.768KHz low-speed active mode (CPU and peripheral modules run, run programs from flash)
    • 20μA/MHz @ 3V @ 16MHz in sleep mode (CPU stops working, peripheral modules run, main clock runs)
    • 120μA/MHz @ 3V @ 16MHz while active (CPU and peripheral modules run, run programs from flash)
  • Wake-up time – 4μS ultra-low-power wake-up time
  • Temperature range – -40 ~ 85C
  • Packages
    • QFN20 – 3 x 3 mm
    • TSSOP20 – 6.5 x 4.4 mm
    • TSSOP16 – 5 x 4.4 mm
    • CSP16 – 1.59 x 1.436 mm

型号参数表

Win10 环境

HC32L110 (以及其他的Cortex M0华大MCU) 在 Windows 下可以选择的烧录选项比较多, 以下说明 DAP-Link, ST-Link, J-Link 这几种烧录方式的配置步骤.

硬件准备

  • 开发板, 可以用

    • LilyGo 的 T-HC32 开发板, 这个开发板用的就是 CSP16封装的 HC32L110B6
    • 或者用泽耀的2.4G模块套件底板AS06-VTB07H. 套件9.9还送一片Si24R1. 这个底板最早使用的是STM8S, 现在改成 QFN20 的 HC32L110C4UA
    • 以上在某宝上都能买到
  • 如果自己焊接, 建议用tssop20封装, 其他的封装焊起来太困难了
  • 烧录卡建议用JLink, 在Win10下 CMSIS DAP-Link 或 J-Link 或 ST-Link V2 都可以用, 但是在Linux下, 暂时还只能用 JLink.

软件

  • HC32L110_DDL_Rev1.1.4.zip 这个是带项目模板和例子的程序包
  • HC32L110_IDE_Rev1.0.3.zip IDE开发的型号支持, 带flash算法文件. 算法文件在项目仓库里也已经包含.
  • JLink安装包(如果需要单独的 J-Flash), 需要单独安装, 从 Segger官网下载

安装环境支持包

将 HC32L110_IDE_Rev1.0.3.zip 解压, MDK_IDE下的 HDSC.HC32L110.1.0.3.pack 就是给 Keil MDK 用的芯片型号库, 双击导入, 或者通过 Keil MDK 的 Package Installer 导入. 导入之后, 在 Keil MDK 中新建项目选择芯片时, 就能看到 HC32L110 系列芯片, 选择芯片型号后, 在Debug Download下面就有对应的算法文件. 算法文件的默认安装路径是 C:\Keil_v5\ARM\PACK\HDSC\HC32L110\1.0.3\Flash

使用 DAP-Link

  1. 在项目中点开编译选项, 选择正确的芯片型号, 例如 HC32L110C4UA
  2. 到Debug标签页选择下载设备为CMSIS-DAP Debugger,
  3. 打开 Settings, 应该能看到识别出的设备为 0x0BC11477 Arm Core Sight SW-DP
  4. Max Clock 选择10MHz (初始化时经常会自动选择1MHz, 这样下载时最后一步会出错).
  5. 到Flash Download 标签页, 勾选 Reset and Run, 并且确认下方的Programming Algorithm中已经设置了算法.

之后F7编译, F8下载, 设置正确的话就能看到烧录校验完成的信息

使用 ST-Link V2

如果DAP-Link已经设置正确, ST-Link可以直接使用,

  1. 在Debug中切换设备为ST-Link Debugger
  2. 打开 Settings, 能看到识别出的设备 0x0BC11477 Arm Core Sight SW-DP. Port 如果设成了JTAG需要改为SW, Clock设为4MHz
  3. Flash Download 勾选 Reset and Run

也是 F8 下载. 输出记录:

Build started: Project: x
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'x'
".\Objects\1101_tx.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:00
Load "D:\\WorkMDK\\WorkHC32\\hc32l110_prj\\Objects\\1101_tx.axf"
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at 20:46:34

使用J-Link

J-Link 使用方式和 DAP-Link 基本一致, 如果DAP-Link已经设置正确, J-Link可以直接使用, 在Debug中切换设备为J-Link, 打开 Settings 能看到识别出的设备 0x0BC11477 Arm Core Sight SW-DP. Port 如果设成了JTAG需要改为SW, Clock设为5MHz
Flash Download 勾选 Reset and Run, F8烧录, 输出记录为

Build started: Project: x
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'x'
".\Objects\1101_tx.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:00
Load "D:\\WorkMDK\\WorkHC32\\hc32l110_prj\\Objects\\1101_tx.axf"
* JLink Info: Device "CORTEX-M3" selected.
* JLink Info: Device "CORTEX-M3" selected.
Set JLink Project File to "D:\WorkMDK\WorkHC32\hc32l110_prj\JLinkSettings.ini"
* JLink Info: Device "CORTEX-M3" selected.JLink info:
------------
DLL: V6.30h, compiled Mar 16 2018 18:02:51
Firmware: J-Link ARM-OB STM32 compiled Aug 22 2012 19:52:04
Hardware: V7.00
S/N : 20090928
Feature(s) : RDI,FlashDL,FlashBP,JFlash,GDB * JLink Info: Found SW-DP with ID 0x0BC11477
* JLink Info: Scanning AP map to find all available APs
* JLink Info: AP[1]: Stopped AP scan as end of AP map has been reached
* JLink Info: AP[0]: AHB-AP (IDR: 0x04770031)
* JLink Info: Iterating through AP map to find AHB-AP to use
* JLink Info: AP[0]: Core found
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLink Info: CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)
* JLink Info: Found Cortex-M0 r0p1, Little endian.
**JLink Warning: Identified core does not match configuration. (Found: Cortex-M0, Configured: Cortex-M3)
* JLink Info: FPUnit: 4 code (BP) slots and 0 literal slots
* JLink Info: CoreSight components:
* JLink Info: ROMTbl[0] @ E00FF000
* JLink Info: ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS
* JLink Info: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
* JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
ROMTableAddr = 0xE00FF000
* JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
* JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.Target info:
------------
Device: HC32L110C4UA
VTarget = 3.300V
State of Pins:
TCK: 0, TDI: 0, TDO: 1, TMS: 0, TRES: 1, TRST: 0
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
Watchpoints:          2
JTAG speed: 4000 kHzErase Done.
Programming Done.
Verify OK.
* JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
* JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Application running ...
Flash Load finished at 19:21:41

单独使用 J-Flash

从 segger 官网 https://www.segger.com/downloads/jlink/ 下载 JLink 整合安装包, 安装完是不带 HC32L110 系列型号的, 需要单独添加

添加设备

将 C:\Keil_v5\ARM\PACK\HDSC\HC32L110\1.0.3\Flash 下面的两个算法文件, HC32L110B4_C4.FLM 和 HC32L110B6_C6.FLM 复制到
C:\Program Files\SEGGER\JLink\Devices\HDSC ,

修改 JLinkDevices.xml

修改 C:\Program Files\SEGGER\JLink\JLinkDevices.xml 在结尾的</DataBase>之前增加这几行

  <!--                 --><!-- Huada (HDSC) --><!--                 --><Device><ChipInfo Vendor="HDSC" Name="HC32L110x4"  WorkRAMAddr="0x20000000" WorkRAMSize="0x800" Core="JLINK_CORE_CORTEX_M0"/><FlashBankInfo Name="Flash_16K" BaseAddr="0x0" MaxSize="0x4000" Loader="Devices/HDSC/HC32L110B4_C4.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/></Device>  <Device><ChipInfo Vendor="HDSC" Name="HC32L110x6"  WorkRAMAddr="0x20000000" WorkRAMSize="0x1000" Core="JLINK_CORE_CORTEX_M0"/><FlashBankInfo Name="Flash_32K" BaseAddr="0x0" MaxSize="0x8000" Loader="Devices/HDSC/HC32L110B6_C6.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/></Device>

然后打开J-Flash, 在设备列表里就能找到 HC32L110了, 连接后打开要烧录的hex, F7就可以烧录了

参考

  • HC32系列MCU的设备支持包可以从下载 https://github.com/hdscmcu/pack
    git clone后, 用压缩软件打开pack文件就能得到里面的FLM算法文件

HC32L110(一) HC32L110 芯片介绍和Win10下DAP-Link, ST-Link, J-Link方式的烧录相关推荐

  1. 嵌入式系统设计(五):详细介绍win8/win10下安装 PL2303 驱动以及android_ADB驱动

    前言: 在接下来的时间里将更新一个专栏:嵌入式系统设计.在这个专栏里将会介绍基于iTOP-4412 Cortex A9开发板的嵌入式系统设计,从入门到实践可以无障碍的学习.欢迎大家关注收藏学习!!!! ...

  2. win10下右键菜单项里没有“打开方式“的解决办法

    一.打开注册表编辑器:首先,win键和r键 一起按进入运行界面,在里面输入regedit,再摁回车或点那个确定进入注册表编辑器 二.找到shell文件夹:计算机\HKEY_CLASSES_ROOT*: ...

  3. HC32L110(二) HC32L110 在 Ubuntu 下使用 J-Link 烧录

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  4. HC32L110(四) HC32L110的startup启动文件和ld连接脚本

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  5. HC32L110(三) HC32L110的GCC工具链和VSCode开发环境

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  6. win10下安装QT5步骤

    Qt 做为跨平台C++图形用户界面应用程序开发框架,具有API丰富,封装机制良好,跨平台性优良等优点. 下面,我为大家详细介绍一下win10下Qt5环境的搭建过程. 目录 Qt下载 Qt安装 环境变量 ...

  7. win10下U盘安装ubuntu14.04双系统

    本篇介绍一下win10下用U盘安装ubuntu14.04双系统的方法,本人是64bit电脑. 1.首先要下载一个系统镜像文件.我是在Linux公社下载的 http://www.linuxidc.com ...

  8. win10下使用certutil工具对文件的SHA1、MD5和SHA256哈希结果做验证(超简单,附图)

    初步介绍 众所周知,当我们从网上下载软件时,发行商为了保证用户在下载过程中自己的软件没有被更改,都会通过一些哈希函数来确保他们软件的完整性.比如:在网上有一些攻击者会在其中植入像插件,广告或病毒等等恶 ...

  9. 不是变量 win10_在win10下安装manim

    manim是制作简单动画的一个python库,具体介绍请参考 3b1b/manim​github.com 例如 https://www.zhihu.com/video/1214239758492442 ...

最新文章

  1. 【机器学习入门到精通系列】Logistic回归多分类图示
  2. PAT甲级1089 Insert or Merge:[C++题解]插入排序、归并排序
  3. 如何创建一个新浪微博应用以及获得Access token
  4. linux c实现myecho、mycat、mycp
  5. C++——二维vector初始化大小方法
  6. IE代理服务器出错导致浏览器无法上网
  7. [SharePoint教程系列] 0.SharePoint 2016介绍
  8. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具
  9. 并发请求:统计数据收集模式
  10. 扫描qr code_如何在Android手机上扫描QR码
  11. 读文献——《ImageNet classification with deep convolutional neural networks》
  12. 模型优化论文笔记5----采用shuffled block和group convolutional的MBNet(71K)用于AMC
  13. hp微型计算机网线怎么安装,宽带师傅教你怎么安装网线插座 看完自己都会了!...
  14. 21天学会Linux----Day1:Linux环境搭建
  15. window环境下mysql忘记密码或者原正确密码无法登录
  16. 在windows7下安装vs2008失败的解决办法
  17. Python爬取豆瓣短评
  18. Java小数点数字和百分号数字之间的转换
  19. Objective-C Blocks Caveat
  20. 西安电子科技大学李锦峰教授 计算机,李锦峰医生预约挂号-出诊时间-西安交通大学口腔医院(西安交大口腔医院)口腔颌面外科 - 名医汇...

热门文章

  1. Exploiting Shared Representations for Personalized Federated Learning【2021 icml】
  2. 电子科大自考c语言试题,2016四川省大学一流学科排行榜,电子科大跃居首位
  3. CobaltStrike(CS)与MetasploitFramework(MSF)联动
  4. SpringBoot实现微信登录
  5. 2022年Java就业方向有哪些?
  6. java如何给数组初始化?
  7. 全国应用计算机水平考试,全国计算机应用水平考试
  8. css奇技淫巧-色彩渐变与动态渐变
  9. 比SQL还好用,又一门国产数据库语言诞生了
  10. 随笔 | “郑秋冬”随想