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 参数
HC32L110 虽然小, 但是参数并不差, 32位Cortex M0内核, 16K Flash, 2K RAM, 外设也很齐全, 还是相当能打的.
- Arm Cortex-M0+ 32-bit core, 32 MHz
- 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
- 以上在某宝上都能买到
- 烧录卡可以用 CMSIS DAP-Link 或 J-Link 或 ST-Link V2, 在Win10下都已经验证可以使用
软件
- 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_v5ARMPACKHDSCHC32L1101.0.3Flash
使用 DAP-Link
- 在项目中点开编译选项, 选择正确的芯片型号, 例如 HC32L110C4UA
- 到Debug标签页选择下载设备为CMSIS-DAP Debugger,
- 打开 Settings, 应该能看到识别出的设备为 0x0BC11477 Arm Core Sight SW-DP
- Max Clock 选择10MHz (初始化时经常会自动选择1MHz, 这样下载时最后一步会出错).
- 到Flash Download 标签页, 勾选 Reset and Run, 并且确认下方的Programming Algorithm中已经设置了算法.
之后F7编译, F8下载, 设置正确的话就能看到烧录校验完成的信息
使用 ST-Link V2
如果DAP-Link已经设置正确, ST-Link可以直接使用,
- 在Debug中切换设备为ST-Link Debugger
- 打开 Settings, 能看到识别出的设备 0x0BC11477 Arm Core Sight SW-DP. Port 如果设成了JTAG需要改为SW, Clock设为4MHz
- Flash Download 勾选 Reset and Run
也是 F8 下载. 输出记录:
Build started: Project: x *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:Keil_v5ARMARMCCBin' Build target 'x' ".Objects1101_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_v5ARMARMCCBin' Build target 'x' ".Objects1101_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:WorkMDKWorkHC32hc32l110_prjJLinkSettings.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 kHz Erase 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_v5ARMPACKHDSCHC32L1101.0.3Flash 下面的两个算法文件, HC32L110B4_C4.FLM 和 HC32L110B6_C6.FLM 复制到
C:Program FilesSEGGERJLinkDevicesHDSC ,
修改 JLinkDevices.xml
修改 C:Program FilesSEGGERJLinkJLinkDevices.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就可以烧录了