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

news/2024/11/8 0:31:23/

目录

  • 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算法文件

http://www.ppmy.cn/news/719648.html

相关文章

74HC595级联电路编程篇(三)

前面两篇文章已详细分析过74HC595的工作原理&#xff0c;接下来讲下用stm32去驱动两片74HC595控制16个LED实现流水灯效果。 这篇的代码是用IO模拟74HC595时序驱动的&#xff0c;下一篇文章&#xff0c;我们介绍下如何用SPI来驱动。直接贴上代码分析&#xff0c;代码很简单&…

RaspberryPi 4B 使用超声波传感器 HC-SR04 进行距离检测

由于超声波指向性强&#xff0c;能量消耗缓慢&#xff0c;在介质中传播的距离较远&#xff0c;因而超声波经常用于距离的测量&#xff0c;如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制&#xff0c;并且在测量…

超声波(HC-SR04)

超声波&#xff08;HC-SR04&#xff09; 1、 2、工作流程 ①单片机引脚触发Trig测距&#xff0c;给至少10us的高电平 ②模块自动发送8个40khz的方波&#xff0c;自动检测是否有信号返回 ③有信号返回&#xff0c;通过IO口输出高电平&#xff0c;并单片机ji’shu’an2高电平的…

关于两个HC05通讯的实际操作流程

市场上HC05模块有好几种&#xff0c;一般都是带有按键的。像下边这种&#xff08;6只引脚的&#xff09;&#xff08;这个是从优信电子那搞过来的&#xff0c;他的模块的按键有点问题&#xff0c;不用摁照样能进入AT模式&#xff09; 要使模块之间交互数据&#xff0c;必须要能…

74HC595实验

74HC595实验 实验现象 利用74HC595芯片实现LED流水灯的效果 理论学习 实现穿行数据转换为并行数据的控制模式 原理图 代码编写 #define latchpin 8 #define clockpin 12 #define datapin 11 //定义三个引脚 unsigned char table[8] {0x01,0x02,0x04,0x08,0x10,0x20,0x40…

hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解

超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,目前的超声波模块精度能到1cm。本文主要…

hc 05 蓝牙c语言程序,ATK-HC05 运用在STM32平台上的HC05蓝牙通信代码用C语言编写 - 下载 - 搜珍网...

1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC05蓝牙串口模块原理图/ATK-HC05-V11_SCH.pdf 1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC05蓝牙串口模块原理图/封装库/99SE/ATK-HC05-V1.3_PCB.lib 1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC…

SM74HC595D电路级联教程

SM74HC595D电路级联教程 1简述 SM74HC595D 是一种具有8 位锁存、8 位串行输入、 8 位串/并行输出、 串—并移位寄存器和三态输出功能的通用LED 驱动芯片。具有8 位移位寄存器和一个存储器&#xff0c;三态输出功能。 该设备具有串行输入&#xff08;SER&#xff09;和串行输出…