兆易创新 UINIO-MCU-GD32F350 固件库开发指南

早在新冠疫情爆发前的 2019 年,就曾经撰写过一篇关于 ARM 标准库的技术长文 《意法半导体 STM32F103 标准库典型实例》 ,文章非常详尽的介绍了各种常见片上外设资源的应用。时至 4 年以后的今天,国产微控制器在工程实践领域已经得到了广泛运用,因而基于兆易创新 推出的国产 ARM 微控制器,设计和制作了 UINIO-MCU-GD32F350RBT6 这款开源核心板,同时撰写了本篇文章作为配套的资料教程,希冀为国产芯片的商业化普及尽自己一份绵薄之力。

UINIO-MCU-GD32F350RBT6 是一款采用 LQFP64 封装的 GD32F350RBT6 微控制器核心板,基于 ARM Cortex-M4 内核架构,主频高达 108MHz,拥有 128K 容量 Flash,以及 16K 的 SRAM。而 UINIO-MCU-GD32F103C 采用 LQFP48 封装的 GD32F103Cxxx 系列微控制器(包括 GD32F103CBT6GD32F103C8T6GD32F103C6T6GD32F103C4T6),基于 ARM Cortex-M3 内核架构,主频达到 108MHz,拥有 16K ~ 128K 容量 Flash,以及 6K ~ 20K 的 SRAM。

阅读更多

基于树莓派 UINIO-MCU-RP2040 核心板制作逻辑分析仪

树莓派 RP2040 是一款采用 ARM Cortex-M0+ 双核心的微控制器,运行频率高达 133MHz,片上内置有 264KB 容量的 SRAM 内存,并且能够外接高达 16MB 容量的片外 Flash 闪存(通过 QSPI 总线连接),内部还集成有 DMA 控制器,以及 30 个 GPIO 引脚(其中 4 个可用作模拟输入)。除此之外,片上还拥有 2 个 UART 控制器、2 个 SPI 控制器、2 个 I²C 控制器、16 个 PWM 通道,以及 2 个可编程 PIO(Programmable I/O)块,并且支持 USB 1.1 主机和设备模式。

UINIO-MCU-RP2040 是一款基于 RP2040 的开发板,板载 Flash 采用更为小巧的 WSON8 封装,添加 SOD123 封装的肖特基势垒二极管防止正负级反接,同时增加用于全局异步复位的 RESET 按钮,并且引出了官方 Pico 开发板所没有的 GPIO23GPIO24 两个引脚资源。除此之外,由于模数转换引脚内部集成有连接至 IOVDD 的反向二极管,所以采用 FET 场效应管 DMG1012T 防止 RP2040 未上电时,这些引脚上施加的电压通过 ADC3 引脚泄露至 3.3V 电源网络。

阅读更多

快速上手 UINIO-Logic-24MHz 逻辑分析仪

UINIO-Logic-24MHz 是一款同时兼容赛普拉斯(已经被英飞凌收购)CY7C68013A芯佰微电子 CBM9002A 两款 USB 控制器的开源逻辑分析仪,可以同时采集 8 个通道的数字信号,单个通道的最大采样频率为 24Mhz,可以支持高达 5.5V 的逻辑电平(大于 2V 视为高电平,低于 0.8V 视为低电平)。即可以采用 Sigrok Pulse View(可以实时下载固件),也可以采用 Saleae Logic(需提前烧录固件)作为逻辑分析仪的上位机程序。

逻辑分析仪(Logic Analyzer)作为一种非常重要的数字信号分析仪器,虽然市场上已经存在有 DSLogic 或者 Saleae 等功能强大的商业化产品,但是在日常的微控制器与数字信号总线开发过程当中,如果不是用于调试 PCIEUSB3.0 等高速信号,一台小巧可靠的 24MHz 采样率逻辑分析仪,就已经足以应付大多数的开发场景。因而笔者在自己的 GitHub 当中,开源了这款逻辑分析仪的全部 KiCad 原理图以及 PCB 版图,希望能够对于广大电子工程师的工作有所帮助。

阅读更多

UINIO-MCU-ESP32 系列核心板电路设计

UINIO-MCU-ESP32C3UINIO-MCU-ESP32S3 两款开源核心板,分别采用了上海乐鑫科技 推出的 ESP32-C3 以及 ESP32-S3 微控制器,两者均支持 2.4GHz Wi-FiBluetooth 5.0 无线网络连接。本文旨在介绍两块核心板各个功能单元的硬件电路设计原理,其中 ESP32-C3 微控制器基于开源的 RISC-V 内核架构,拥有 22 个 GPIO 接口,主频高达 160MHz,板载 384KB 容量的 ROM,以及 400KB 容量的 SRAM 和 8KB 容量的 RTC SRAM,支持的数字外设接口有 3 × SPI2 × UART1 × I²C1 × I²S,而模拟外设接口则采用了 6 通道的 2 × 12 位 SAR 模/数转换器。

稍晚一些推出的 ESP32-S3 微控制器则是基于 Cadence 公司的 Xtensa Dual-Core 32-bit LX7 架构,拥有 45 个 GPIO 接口,主频高达 240MHz,板载有 384KB 容量的 ROM,以及 512KB 容量的 SRAM 和 16KB 容量的 RTC SRAM,支持的数字外设接口4 × SPI3 × UART2 × I²C2 × I²S。而模拟外设接口采用了 20 通道的 2 × 12 位 SAR 模/数转换器。核心板的 KiCad 原理图以及 PCB 源文件,可以在我的 GitHub 仓库当中进行获取。

阅读更多

智能 IC 卡技术杂谈

集成电路卡又称为 IC 卡(Integrated Circuit Card),是一种内嵌有集成电路的塑料标签卡片,其集成电路当中包含有 8 位或者 32 位的微控制单元 MCU、只读存储器 ROM、电可擦只读存储器 EEPROM(按字节操作)或者闪速存储器 Flash(按扇区操作)、随机访问存储器 RAM,以及固化在只读存储器 ROM 当中的片内操作系统(COS,Chip Operating System),并且通常内置有 DESRSA国密 SMxSSF 等加解密算法。

目前市场上主流的 IC 卡芯片有恩智浦 NXPMifare 系列、英飞凌 InfineonSL 系列、、复旦微电子FM 系列,华大半导体SHCCIU 系列除此之外,还有 华虹集成电路SHC 系列,以及大唐微电子DMT 系列,紫光国微THD 系列。这些芯片主要遵循 《ISO/IEC 7816》《ISO/IEC 14443 TypeA》两部协议规范,本文主要介绍了笔者在日常工作当中,经常接触到的各类智能卡相关的技术与规范。

阅读更多

玩转 Raspberry Pi 4B 开源硬件

万众期待的 Raspberry Pi 4B 终于发布,之前由于产品原型的需要,一直计划采购 3B+,后来供应商透露新版 4B 稍晚就会面市,所以稍微等待了一段时间,今天终于拿到了一块 2G 内存的板子。一直以为 4B 只会简单的更新一下 SoC 并增大 DDR 容量,但是实际上还带来了 Type-CBluetooth 5.0Micro HDMIUSB 3.0 乃至 DDR4 等诸多崭新升级。而官方推荐的应用范围,开始从教育渗透至工业领域,逐步发展为一套完整的嵌入式生态链。

本文基于树莓派基金会官方提供的 《Raspberry Pi Documentation》,笔者翻译了其中较为常用的配置章节,便于读者拿到板子以后能够快速上手,并避免使用一些官方不推荐的操作和工具库。此外,本文也会涉及 OpenCVdlib 的编译,以及 Electron 在树莓派上的部署等话题。文章内容将会伴随笔者的日常使用而长期进行更新,欢迎各位爱好者朋友持续关注与勘误。

阅读更多

基于 HAL 与 LL 的 UINIO-MCU-STM32F401 开发实践

相较于前一篇运用标准外设库(Standard Peripherals Library)开发的 STM32F403C8T6 微控制器,采用 UFQFPN48 封装的 STM32F401CCU6 则是基于 ARM Cortex®-M4 内核,内置有浮点运算单元(FPU,Float Point Unit)、自适应实时加速器(ART,Adaptive Realtime Accelerator)、数字信号处理器(DSP,Digital Signal Processor)指令,内置 16mHz 高速与 32kHz 低速晶体振荡器,工作时钟频率高达 84mHz,采用 1.7V ~ 3.6V 电源进行供电。

因为 STM32F401CCU6 提供了较大的数据与程序存储空间,所以本文将会基于意法半导体 ST 近年来主推的硬件抽象层HAL,Hardware Abstraction Layer)以及底层LL,Low-layer)开发库,并且结合 STM32CubeIDE 提供的便捷图形化配置工具。本文写作过程当中,参考了意法半导体的《STM32F401xC Data Sheet》《STM32F401xC Reference Manual》以及《Description of STM32F4 HAL & LL drivers》三份官方文档。

阅读更多

STLink V2 调试编程器应用图解

STLink 是由意法半导体公司推出的在线调试编程器,采用5VUSB2.0全速接口进行供电与数据传输,可以方便的对内部固件进行升级,同时支持以 JTAGSWD 模式连接至 STM32 系列微控制器,或者以 SWIM 模式连接至 STM8 系列微控制器,操作温度介于0 ~ 50℃之间。由于 ST 公司极为重视中国市场,因此 STLink 的销售价格相对其它国外大厂的在线仿真设备要实惠许多,基本成为国内嵌入式工程师人手上必备的工具。

本文详细介绍 Keil uVision 5 开发环境下 ST-LINK/V2 版本的调试编程器使用方法,并介绍了相关接口的详细定义与接线方法,文中部分内容翻译至意法半导体官方提供的《用于 STM8 与 STM32 的 ST-LINK/V2 在线调试编程器用户手册》,以确保使用方法与解释的规范性。

阅读更多

J-Link 仿真器固件恢复小记

JTAG(Joint Test Action Group,联合测试行动组)是一种用于芯片内部测试的国际标准协议,ARMDSPFPGA等主流 IC 都对其提供了良好支持,标准 JTAG 接口拥有TMS模式选择、TCK时钟、TDI数据输入、TDO数据输出共 4 条信号线。笔者当前使用的 Mini2440 开发板原厂提供的 JTAG 调试器是采用并口的H-JTAG,由于现在的计算机设备早已经不提供并口支持,因此笔者选择了较为通用的J-Link作为 ARM9 仿真调试器。

J-Link是德国SEGGER公司推出的一款专用于 ARM 内核微控制器的 JTAG 仿真调试设备,能够与 ARM 官方提供的 Keil 集成开发环境无缝衔接,支持 Cortex-A/R、Cortex-M、ARM7、ARM9、ARM11、Renesas RX、Microchip PIC、Silicon Labs 8051、RISC-V 等系列的微控制器。笔者 7 年前购置了一台 J-Link V8 版本的J-Link调试器,当时由于使用不当造成固件丢失,因此特别撰写此文来记录一下固件恢复的过程。

阅读更多

玩转 Arduino Uno/Mega 和 UINIO-MCU-ESP32 开源硬件

Arduino 是一款非常流行与成熟的电子原型评估套件,其 PCB 硬件IDE 集成开发环境板级支持包 全部基于开源共享协议,其中,Eagle 原理图以及 PCB 布线遵循 CC BY-SA 共享协议,而 IDE 集成开发环境的源代码基于 GPL 开源协议,微控制器 MCU 的 C/C++ 板级支持包则是基于 LGPL 开源协议。自从 2005 年第一款 Arduino 开发板面世以来,官方已经推出了琳琅满目的各类硬件以及软件包,叠加各大芯片厂商的助力,整个开源社区的氛围日趋活跃与丰富。

本文首先从入门级的 Arduino Uno 入手,然后逐步过渡至片上资源更为丰富的 Mega 2560,两款都是由 Arduino 官方所推出的 5V 供电电压的开发板。最后引入了携带有 Wifi/Bluetooth 无线接入能力的 ESP8266ESP32,而它们则是采用了国产 3.3V 芯片的开发板,由于开源社区或者芯片原厂提供了兼容 Arduino API 的板级支持包,在较为丰富功能的基础上提供了相对低廉的价格,叠加 Arduino 较为成熟的开发环境,更是加速了 Arduino 的应用与普及。

阅读更多