开源 EDA 工具 KiCad 6.0 电路设计小书

对于国内的中小型电子企业而言,AllegroPadsAltium Designer 等商业 EDA 工具的授权费用过于昂贵,且大部分只提供 Windows 操作系统版本,缺乏相应的跨平台支持。在电子信息技术行业版权问题充分受到重视的今天,一款易于使用并且受到厂商广泛支持的开源 EDA 工具,对于硬件电子工程师而言尤为重要。本文介绍的 KiCad 就是一款基于 GNU GPL v3 开源许可协议的跨平台 EDA 电子设计自动化工具集,其能够处理多达 32 个铜层、14 个技术层、4 个辅助层的 PCB 电路板,并且生成加工制造所需要的网表物料清单光绘文件钻孔文件元件放置文件

自 2018 年 07 月 22 日发布 KiCad 5.0 版本以后,历经了三年时间,终于在 2021 年 12 月 25 发布了全新的 KiCad 6.0 版本,新版本采用了全新的用户交互界面,带来全新原理图编辑器PCB 编辑器3D 查看器的同时,还增加了更为丰富的 DRC 设计规则约束,并且提供了对于中文语言的良好支持。全文最早基于 5.0 版本写作,鉴于官方已经升级至功能更为完善的 6.0 版本,所以基于官方新版的 《Getting Started in KiCad》 对本文进行了全面的重写。

阅读更多

采用 Altium Designer 17.1 进行 PCB 电路绘制与仿真

Altium公司最早推出的EDA(电子设计自动化,Electronics Design Automation)产品名为Protel,经过一系列的企业并购与技术整合之后,于 2009 年推出了Altium Designer 09,接着 2012 年又推出Altium Designer 13.0,本文将要介绍的Altium Designer 17.1则是Altium公司于 2017 年发布的产品,可用于设计板级原理图并进行 PCB 布线,同时整合了 SPICE 仿真以及 FPGA 设计等高级功能。

经过多年的迭代与发展,Altium Desinger 已经并不仅仅局限于作为一款 EDA 工具,其功能已经贯穿于电子设计的全流程,包括 MCU 微控制器和 FPGA 设计建模、电路 SPICE 仿真与验证、元器件库封装、电路原理图绘制、PCB 绘制、PCB 信号完整性验证、PCB 制板文件生成等等;而本文主要围绕 Altium Desinger 的原理图与 PCB 绘制元器件封装PCB 仿真与验证 3 个核心主题进行相关介绍。

阅读更多

运用 U8G2 与 TFT_eSPI 玩转 UINIO-Monitor 显示屏

UINIO-Monitor 同时拼接有 128×64 分辨率 SSD1315 驱动的 0.96 英寸 OLED 显示屏,160×80 分辨率 ST7735 驱动的 0.96 英寸 LCD 显示屏,240×240 分辨率 ST7789 驱动的 1.3 英寸 LCD 显示屏。以及采用相同驱动芯片,但是分辨率分别为 240×320240×280 的 2.4 英寸以及 1.69 英寸 LCD 显示屏。所有屏幕全部板载有 0.5mm 间距的 FPC 柔性排线连接器,同时还引出 2.54mm 间距的直插排针,便于通过杜邦线快速搭建实验电路。

之前由我设计制作并且开源出来的 UINIO-MCU-ESP32C3UINIO-MCU-ESP32S3 两款核心板,分别基于乐鑫科技的 ESP32-C3 (RISC-V) 与 ESP32-S3 (Xtensa) 微控制器(更多玩法可以参考之前撰写的 《基于 UINIO-MCU-ESP32 的 Arduino 进阶教程》 一文)。而本篇文章就会采用这两款核心板,以及乐鑫官方的 Arduino-ESP32 板级支持包,结合 U8G2TFT_eSPI 两款开源显示库,帮助大家快速上手 UINIO-Monitor 系列里的 5 款显示屏。

阅读更多

《实用电子元器件与电路基础》读书笔记

实用电子元器件与电路基础》的英文原版书籍名称叫做《Practical Electronics for Inventors》,全书从电路基本原理入手,围绕各种类型的电子元器件进行了详细介绍。首先是阐述了基本的电路理论,然后重点讨论了包括 电阻电容电感变压器 在内的基本元器件;接下来介绍了半导体电子技术,并且详细分析了 二极管晶体管晶闸管 等半导体元件的性能与参数,以及运算放大器滤波电路振荡电路定时器稳压电路与电源 等经典的模拟电路。

最后介绍了数字电子技术相关的内容,从基本的逻辑门电路入手,重点讨论了组合逻辑电路时序逻辑电路,以及相关的 触发器寄存器计数器缓冲器锁存器收发器,乃至于存储器微控制器。除此之外,该书还简单介绍了线性函数二次函数指数/对数函数三角函数复数微积分等数学预备知识。电子元器件的选型运用是硬件工程师日常工作当中最为主要的内容,希望本篇文章能够对广大电子爱好者有所帮助。

阅读更多

高等数学主要概念与公式摘要

高等数学是由微积分学,较为深入的代数学、几何学以及它们之间的交叉内容所形成的一门基础学科。由于电路分析运算放大器信号完整性高频电路信号学当中,都涉及有大量的积分和导数运算,也需要经常使用到拉普拉斯和傅立叶变换等高等数学内容,因此着手撰写本文用于复习大学本科学习阶段涉及的微积分知识,主要包含一元函数微分学一元函数积分学矢量代数与空间解析几何多元函数微分学多元函数积分学无穷级数常微分方程等部分的内容。

由于微积分涉及的概念相对较为抽象,因此在文章写作过程中,阅读并且参考了《Thomas’ Calculus》一书当中的有关内容。该书从 1951 年第 1 版发行至今,当前的最新版本为第 14 版,已经足足经历了七十个年头,是一本经历过时间检验的优秀参考资料。对于本文当中所涉及到的代数学知识,可以参见博主撰写的另外一篇数学类文章《初等代数常用公式与图像汇总》

阅读更多

《电路分析导论》读书笔记

本文力求言简意赅的讨论电路分析过程当中涉及到的一些基本理论知识,全文第 1 部分围绕电路分析展开,涵盖了电路当中的 电阻电容 等基本元件,相关的定律(欧姆定律焦耳定律基尔霍夫定律)定理(叠加定理戴维南定理诺顿定理)和等效变换(电源等效串并联等效星形三角形等效),以及基本的分析方法(支路电流法结点电压法非线性电阻分析);第 2 部分则以电磁感应现象作为核心,同时引入 安培力洛仑兹力磁通量 等电磁学基本概念。

第 3 部分围绕交流信号展开,包含了动态元件 电阻电容电感 相关的交流电路,并且介绍了 功率因数 的提高,RCLC 电路,以及三相交流电路;第 4 部分介绍了互感变压器,主要讨论互感现象与变压器的原理;第 5 部分则主要讨论电路的过渡过程,比如 RCRL 电路的过渡过程,以及其中 电压电流 随着时间变化的规律和影响过渡过程快慢的时间常数,同时还引入了换路定则微分电路 以及 积分电路

阅读更多

初等代数常用公式与图像汇总

初等数学主要由代数(Algebra)和几何(Geometry)两部分构成,本篇文章基于《Thomas’ Calculus Early Transcendentals》第 14 版所附录的 A Brief Table of Integrals 章节整理而成,主要涉及基本代数运算集合区间与邻域斜率映射幂函数指数函数对数函数弧度制三角函数以及几何学等知识点,较为系统的概括了初等数学当中常见的公式定理以及相关的函数图像,以备日常进行电路与信号分析时,随手查阅公式使用。

高等数学的研究对象是变动的量,而初等数学的研究对象则是不变的量,正是由于初等数学只能解释常量的几何与物理问题,例如:规则图形的长度面积体积匀速直线运动等等。虽然并不涉及电路与信号分析过程当中,所需要经常涉及的变化量分析与求解,但是却是整个高等数学知识体系当中,不可或缺的基本常识性内容。毕竟初等数学当中所重点讨论的函数,正好就是微积分的主要研究对象

阅读更多

基于 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》三份官方文档。

阅读更多

基于 ES6 的 JavaScript 简明语法书

JavaScript 是一款基于原型的的多范式动态脚本语言,支持命令式、函数式以及面向对象式的编程风格。其标准化工作主要由欧洲计算机制造商协会ECMA,European Computer Manufacturers Association)负责,其语言标准被称为ECMAScript,其它组织可以遵循该标准开发各自的 JavaScript 实现,例如 Firefox 内置的 SpiderMonkey 以及 Chrome 内置的 V8 解析引擎(ECMAScript 规范文档主要针对解析引擎的开发人员,而非 JavaScript 脚本的编写人员)。

2012 年之后推出的 Web 浏览器都完整实现了 ECMAScript 5.1 标准,而 2015 年发布的 ECMAScript 6 标准(官方称为 ECMAScript 2015,俗称为 ES6),目前已经被 FirefoxChromium 以及 NodeJS 进行了较为完整的实现,所以本文将会基于此介绍 JavaScript 的重点语法特性,以及一些较为用常用的核心工具函数,本文在写作过程当中参考了 Mozilla 开发者社区的 《JavaScript Guide》《JavaScript Reference》 两篇官方文档。

阅读更多

电子测量仪器通用术语与相关原理

电子测量仪器是电子信息技术产业的基础支撑性设备,全球超过 50% 的电子仪器市场份额被是德科技 Keysight泰克 Tek力科 Lecroy罗德与施瓦茨 Rohde&Schwarz四家企业所垄断。伴随近几年电子科技行业卡脖子风险的上升,国内密集出台了多部涉及仪器仪表行业以及相关领域的产业政策,在政策支持与下游产业的快速发展之下,我国电子测量仪器近几年实现了高速增长,涌现出了 普源精电同惠电子优利德科技 等科创板挂牌上市仪器厂商。

电子工程实验当中,必不可少的涉及到大量测量仪器的使用,本文主要记录笔者工作室当中所使用的 数字万用表(Multimeter)、数字电桥(LCR Meter)、数字存储示波器(DSO)、逻辑分析仪(Logic Analyzer)、可编程直流电源(DC Supply)、信号发生器(Signal Generator)等仪器的性能指标术语,包括 三极管测量电源纹波晶振频率谐波输出 等常规的测量方法与技巧,以及相关的注意事项。

阅读更多

《PCB 电流与信号完整性设计》读书笔记

《PCB 电流与信号完整性设计》英文名称是《PCB Currents How They Flow, How They React》,作者是 UltraCAD 公司的创办者 Douglas Brooks,全书着重于物理概念,避免复杂的数学推导,阐述了基本电路的电流源、电流造成的信号完整性问题,以及如何解决串扰和电磁干扰问题。主要内容包括:温度漂移传输线反射耦合电流功率分配趋肤效应介电损耗通孔等,并且给出了每个常见问题的实用设计方案。

全书分为四个部分,其中第一部分电流的性质介绍了电流的基本定义,第二部分基本电路中电流的流动包括了电阻电路、电抗(电容、电感)电路、以及阻抗相关的内容,第三部分则介绍了电压源与电流源,第四部分电路板上的电流则介绍了 PCB 上引入的各种信号完整性问题。

阅读更多

智能 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》两部协议规范,本文主要介绍了笔者在日常工作当中,经常接触到的各类智能卡相关的技术与规范。

阅读更多

玩转 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 的应用与普及。

阅读更多

高等教育出版社《模拟电子技术》温习札记

电子信号是指随着时间进行变化的电压或者电流,可以在数学描述上描述为时间的函数,并且可以绘制出其波形。模拟信号数值时间上均具有连续性,对于任意时间均有确定的电压或者电流值与之对应。常用的模拟电路有放大电路(信号电压、电流、功率的放大)、滤波电路(信号的提取、转换、抗干扰)、运算电路(完成信号之间的加减乘除、积分、微分、对数、指数运算)、信号转换电路(电流与电压信号之间的相互转换)、信号发生电路(用于产生正弦波、矩形波等波形)、直流电源(将不同电压与频率的交流电转换为指定电压与电流的直流电)。

本文所涉及的内容主要包括有常用半导体器件基本放大电路集成运算放大电路放大电路的频率响应放大电路中的反馈信号的运算和处理波形的发生和信号的转换功率放大电路直流电源,基本涵盖了模拟电路当中主要的电路类型,其中放大电路是对模拟信号的最基本处理,上述模拟电路当中均包含有放大电路,因而放大电路是构成各种模拟电路的最基本电路

阅读更多

Git 版本管理命令备忘录

Linux Kernel 是一个非常大规模的开源软件项目,在该项目 1991 ~ 2002 年维护的早期,所有对于代码的修改都是以补丁(Patches)和归档文件(Archived File)的形式进行传递。在 2002 年之后,Linux 内核项目开始使用一款称为 BitKeeper 的商业版本管理工具。但是到了 2005 年,Linux 社区与 BitKeeper 商业公司之间的合作关系破裂,促使 Linux 开源社区以及 Linus Torvalds 本人根据之前的版本管理经验,开发出了全新的分布式版本管理工具 Git

Git 不会以基于文件修改列表的方式来保存数据,而是以及引用快照的方式来保存文件的历史信息;即使没有 Git 版本管理服务器的支持,大部份操作也能够在本地正常进行;Git 当中的所有数据存储时都会经过 SHA-1 完整性校验,并且使用一个长度为 40 的散列字符串来存储和引用这些数据;Git 当中的所有操作都是在添加数据,因而很难执行不可撤消的任务,也很难让出现在删除数据之后无法找回的场景。

阅读更多

小议 MQTT 物联网传输协议

物联网IoTInternet of Things)通过各种网络以及传感器技术,按照约定的协议将无处不在设备联结起来,以进行信息的传输与控制交互,并实现智能化的信息感知与管理,进而构建出万物相联的智能化环境,将网络连接能力渗透进现实世界的方方面面。而伴随近年 5G 无线网的迅速商用,海量物联网设备的接入给传统 Web 通信协议带来了挑战,必须有针对性的采取一系列全新特性的通信协议,从而解决网络环境不可靠终端设备系统资源有限等关键问题。

MQTT(消息队列遥测传输,Message Queuing Telemetry Transport)协议最早是由 Andy Stanford ClarkArlen Nipper 于 1999 年创建,起初主要是解决卫星与原油管道监测数据的传输问题,拥有最低的电池损耗与最小的带宽占用。后来在 OASIS 标准化组织的推动下于 2014 年 10 月公布了 V3.1.1 版本规范,并于 2019 年 3 月发布了最新的 V5.0 版本规范,目前 MQTT 已经成为物联网通信系统当中较为常用的一种传输协议。

阅读更多

编码实践当中涉及的密码学知识

OpenSSL 是用于安全传输层TLS,Transport Layer Security)协议和安全套接字层SSL,Secure Sockets Layer)协议的的工具包,提供了 SSL 协议实现(SSLv2SSLv3TLSv1)、大量算法实现(对称/非对称/摘要)、大数运算、非对称算法密钥、ASN.1 编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL 编解码、OCSP 协议、数字证书验证、PKCS7 标准实现和 PKCS12 个人数字证书格式实现等功能。

然而一直以来 OpenSSL 代码质量,总是受到开发人员的各种诟病,因而出现了 WolfSSL 与 PolorSSL 等 OpenSSL 的开源替代产品,其中 PolarSSL 被 ARM 公司收购之后,现更名为 Mbed TLS,主要由 Trusted Firmware 组织进行维护,遵循相关的 ARM 规范,并为 Armv8-AArmv9-AArmv8-M 内核架构提供了安全可信的参考实现。本文主要主要讨论了 Base64Hash 编码、以及 OpenSSL 所涉及的相关加解密知识。

阅读更多

电路分析经典理论与习题手记

电阻电路是指除电源之外,仅包含有电阻元件的电路,而动态电路则是含有电容电感等储能动态元件的电路,由于动态元件的特性方程当中含有微分积分形式,因而动态电路主要采用微分方程进行描述,其中方程的阶数通常取决于动态元件个数。电路分析当中的动态又称为暂态,指电路从一个稳态变化至另一个稳态的中间过渡过程。而稳态也被称为静态,指电路当中的电压、电流等参数达到一个稳定状态,如果其它参数不发生变化,就会一直以该状态运行。

本文主要讨论了电阻电路分析相关的基本概念与两类约束电路的等效变换电阻电路的分析方法常用电路定理方面的内容,以及动态电路分析相关的动态电路的暂态分析正弦交流电路稳态分析含二端口元件电路分析方面内容,阅读前应当具备微分积分微分方程复数运算线性代数方程组矩阵傅里叶级数高等数学知识。本文在撰写过程当中,参考阅读了国外大学普遍采用的《Electric Circuits》第 10 版教材。

阅读更多

PCB 基本布线规范与设计原则

优秀的 PCB 设计者同时也是出色的艺术家,但是伴随 5G 的全面商用以及物联网设备的普及,电路板走线越来越精密,信号频率日益提高,电磁干扰问题日趋严重,PCB 设计人员不得不去面对一个现实问题:PCB 电路板已经开始像一个具有电阻、电容、电感的组件,而非像过去 10 年前那样仅仅作为线路连接的平台。电磁兼容性信号完整性的问题日益突出,对于 PCB 布线与元器件布局的要求越来越高。

本文首先介绍了 PCB 制造工艺与元器件封装相关的知识,然后重点讨论了笔者工作过程当中总结的一些 PCB Layout 方面的基本布线规范与设计原则。当然,信号完整性作为一个比较系统的工程化问题,这些经验与原则并非绝对适用于任意场合,实际布线时仍然需要具体问题具体分析,结合实际的工况进行设计。而对于信号完整性方面的各类繁杂问题,将会专门新开一篇文章另行讨论。

阅读更多

现代数字逻辑电子技术概论

二十一世纪,数字化浪潮席卷了电子工业领域,与传统的模拟电子系统相比,数字系统具备更加优异的精确与可靠性,逐步取代了许多模拟电路的应用场景。数字逻辑电路是对数字信号进行算术与逻辑运算的电路,以逻辑门作为基本电路单元(最早采用 TTL 工艺,伴随半导体工艺技术的不断进步,目前已经逐步被 CMOS 工艺取代),数字电路可以分为组合逻辑电路(基本逻辑门)和时序逻辑电路(逻辑门 + 反馈逻辑回路)两大类。

本篇文章讲解了数字逻辑电路的分析与设计所涉及到的基础理论,首先讲解了数制码制逻辑代数等基础知识,接着重点描述组合逻辑电路时序逻辑电路的分析与设计方法,然后讨论了各种数字集成电路( 含门电路、可编程逻辑元件、半导体存储器)的原理以及使用方法,并且介绍了硬件描述语言可编程逻辑器件的相关知识,最后一部分讲解AD/DA转换以及脉冲波形的产生和转换电路。

阅读更多