2017年春天,第一次讲实践课程。太多话想说,太多内容想教,因为我就是一个实干的典型。记得2007年在海格通信做了卫星领域第一个项目——双模地球站。带着十几个不懂通信的硕士干,几乎每天都干到晚上十点多。无数个疲惫的夜晚。但当年就对硕士阶段的教学提出了质疑,好在很多硕士肯学。可是现在的好多学士却不爱学,逃课现象太普遍了!

回到校园了,就要改变,能改变多少是多少。欣慰的是,看到了几个好苗子。总算讲有所值。开始讲课。什么是系统?英文叫system。
《信号与系统》课本中有关于这个的定义。同学们复习一下。我的理解就是有输入和输出的一个东东。这么说是不是简单易懂?

人是不是系统?——生物系统
最简系统——课程目标


一个单片机加个数码管,加个开关就是一个系统,不过确实简单了点。好比一个机器人只有脑袋和身体,没有臂膀和腿。没关系,我们慢慢安装上去。
警示:一口吃不成一个胖子,不能好高骛远!
我在课上发现有些同学单片机还没有玩的很6,就要玩一些复杂的设备。比如无人机系统。这是开国际玩笑!
2026年,时隔十年更新本系列文章,是因为在暑假重启课外培训,讲的知识难度远超十年前,会涉及单片机和FPGA的知识,硬件编程能力的培养需要大量实践,AI很难取代。不过这些知识的学习可以借助AI实现加速。在本版本中将展示通过AI调试单片机串口、蓝牙的过程。FPGA呢?也会借助。

单片机最简系统——由哪些构成?
电源、芯片、外部设备(传感器等)?这些足够搭建出一个系统了。请细看每个组成部分!

电源必不可少。

51系列单片机是本次课程使用的芯片,具体型号不限制。到了2026年,基本都是低功耗芯片的天下了,51系列也就在实验室用用而已。


脉搏测量传感器

淘 宝确实功能强大,这些器件都能买到。不过要是能深入的了解一下原理知识,那就能懂得更多,这有助于同学们应聘上好单位。
系统的外设可以是各种传感器、可以是AD、DA芯片、GPS定位芯片、烟雾传感器、计步器、脉搏传感器等等,当然也可以是一些声光电的显示设备。现在市场上那些手环啊、温度显示器啊就是这么来的!所以同学们学好了,就业根本不愁!这样搭建出来的系统已经蛮好的了(对于本科生而言已经是非常好的一次实践设计过程)。
同学们需要为进入企业做准备。在公司,系统设计是项目研制过程的重要内容。什么是项目?大凡要研制一个设备的过程都可以称为项目。不论设备大小。(同学们暂且这么理解即可!)
项目的第一要素:规范。没有规范,就没有继承,就没有发展。如何就能规范了呢?文档是规范的基石。文档是什么样子呢?

任何项目离不开文档,因为铁打的营盘,流水的兵。公司会不断地更换员工,但研发工作不能出现中断或者停止。靠什么保证?只有靠文档!
那就别卖关子了,直接上实例!举例说明最合适同学们的胃口!直观!但有个前提:你要看,仔细地看!

什么是技术方案?
一个项目有包含很多文档,我以后都会举例。但对于同学们,本次课程只要一个文档,即系统设计技术文档。不过此文档会浓缩多个文档的精华。

然后要有硬件设计文档。下面一个文档估计会被猜到。


对了,就是软件设计文档。任何数字电子系统都是由硬件和软件组成的。当然早期很多模拟系统中是没有软件的。做完项目,还需要对产品进行测试。于是,项目测试记录文档登场了。

好吧,这些文档的精华部分需要浓缩到同学们的系统设计技术文档中。至于怎么写会在下一章节慢慢讲。先请同学们思考一下:项目研制过程——哪几个部分组成呢?下一章节会娓娓道来。

有了文档,企业就不担心员工离职,新员工进入企业后可以快速上手。对于在校学生而言,提前了解和实践各种研发规范,这才是真正的工科教学。这样的文档对于后续师弟师妹的学习也同样有帮助。在学校,进行单片机和FPGA的系统设计和项目开发一般都基于开发板,省去硬件设计过程,不过学生要在板卡上开发软件首先要能看懂原理图。那原理图怎么看呢?2026年,问问AI吧,解答得非常到位,一起来看看吧!
同学拿到开发板原理图(比如STM32核心板、Xilinx/Altera FPGA开发板)时,面对密密麻麻的线条和标号,第一反应就是“头大”。
其实,开发板原理图本质上是“芯片数据手册”的“连线图”。它不是为了让你计算电路参数,而是为了让你看懂“哪个引脚连到了哪个外设”。
看这种原理图,不用逐行逐句读,记住“三步走”的口诀就行:
第一步:先找“心脏”和“大脑”——确立全局坐标
不要从左上角开始看,先找核心芯片:
MCU/FPGA主芯片:这是绝对中心,通常画在图纸正中间。
电源网络:在图纸角落找到电源入口(比如5V、3.3V、1.2V)。FPGA通常有多路电源,一定要先分清哪路是IO电压(Bank Voltage),哪路是内核电压(Core Voltage)——这对FPGA来说至关重要,插错了会烧片子。
这是新手最容易卡住的地方。主芯片周围有几百个引脚,你不需要管它是“Pin 123”还是“Pin 456”,你只需要看旁边的网络标号(Net Label)。
原理图上那些带字母的标签(如 GPIOA_0、UART_TX、DDR_DQ0),这才是灵魂。
怎么看? 直接搜这些标号在开发板排针(Header)上的位置。比如,你想用按键,就在原理图里搜索 KEY 或 SW,找到它连到了主芯片的哪个标号,再反查这个标号对应的物理引脚号,写进代码的引脚约束文件(.xdc 或 .ioc)里。
记住:代码里约束的是“引脚号(Pin Number)”,但原理图帮你找的是“功能标号(Net Name)”。

第三步:分模块“隔离”阅读——庖丁解牛
不要试图一次性看懂全图。一张A2或A3的原理图,肯定被画成了若干块“电路模块”。按功能把它们拆开看:
电源模块(Power):看降压芯片(LDO/DC-DC),输入多少伏,输出多少伏。注意看磁珠(FB)或0欧电阻,它们经常用来隔离数字地和模拟地。
时钟模块(Clock):看晶振(Y/Xtal)旁边接的电容。FPGA的全局时钟引脚(MRCC/SRCC)必须接有源晶振或专用时钟芯片,注意看标号是不是 CLK 开头,这是时序逻辑的“心跳”。
下载/调试模块(JTAG/SWD):看连接JTAG口的几根线(TMS, TCK, TDO, TDI)接在主芯片的哪些引脚上。这些引脚通常固定,不能乱用。
外设接口(Peripheral):看LED、按键、数码管、UART串口芯片(如CH340)、SDRAM/DDR等。重点看数据总线(D0-D7)和地址总线(A0-Axx)是否一一对应。

未完,待续!
传感器模块!
传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
DS18B20传感器进行的功能操作是在发送命令的基础上完成的,上电后传感器处于空闲状态,需要控制器发送命令才能完成温度转换。对传感器的功能操作的次序是首先完成对芯片内部的ROM操作,有5条操作ROM的指令可用于器件识别,它们分别是:ReadROM(33H)、Match ROM(55H)、Skip ROM(CCH)、SearchROM(F0H)、Alarm Search(ECH)。
ReadROM:用于读出64位ROM数据,适用于仅有1个DS18B20的场合。MatchROM:查找与给定64位ROM数据相匹配的DS18B20。SkipROM:适用于仅有1个DS18B20的场合,无需给出64位码就能快速选定器件。SearchROM:适用于多个DS18B 20的场合,该指令可识别出每个器件的ID号。Alarm Search:用于温度报警查询。
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。提问:采用了什么协议呢?2026年,求助AI解答又快又准!
它采用的协议是:1-Wire(单总线)协议。这是美国达拉斯半导体(Dallas Semiconductor,现隶属Maxim)独有的专有通信协议。为了在开发板上玩转它,需要把这个协议的核心门槛和实战要点进行拆解。
顾名思义,数据线和电源线(地线除外)合二为一。它既传输时钟信号,又传输数据信号,还是半双工双向的。这就好比一条单行道上,车辆(数据)和交警的指挥哨声(时钟)都通过同一根线传播。
虽然它只用了1条口线,但这条线上必须接一个上拉电阻(通常为4.7kΩ)。
如果你在开发板原理图上搜索 DS18B20 或 DQ,一定要看它的旁边是否连着一个电阻到电源(VCC)。
为什么?因为单总线是“漏极开路(Open-Drain)”结构。微处理器(MCU/FPGA)只能把这条线拉低(输出0),或者释放(输入状态),无法主动输出高电平。高电平完全靠这个上拉电阻“拉”上去。
在FPGA开发中,这个协议对时间要求非常苛刻,比UART、I2C都难伺候。你在写代码(Verilog/VHDL)时,必须精确控制微秒级(μs)的延时:
复位脉冲:MCU/FPGA先将总线拉低至少 480μs,然后释放;DS18B20会在释放后的 15~60μs 内拉低总线作为“存在脉冲”回应。如果没检测到这个回应,说明传感器没焊好或上拉电阻没接。
写“1”:拉低总线 1~15μs 后必须释放(靠电阻拉高)。
写“0”:拉低总线至少 60μs。
读数据:MCU/FPGA先拉低总线 1μs 释放,然后在释放后的 15μs内 必须采样读取总线电平。
给FPGA新手的忠告:千万不要用
delay循环去数时钟周期,那样极不精确。必须用计数器(Counter) 来产生微秒级的定时中断,否则温度读出来永远是0xFFFF或0x0000。
如果你在原理图上看到DS18B20,除了找它的DQ引脚连到主芯片哪个IO口外,一定要顺藤摸瓜确认这个IO口是否支持“开漏输出(OD)”模式。如果主芯片该引脚不支持开漏,光靠代码是拉不低电平的,必须外接一个三极管。
到了AI时代,代码也不需要写了,能看懂然后再会调试即可。这些方面后续再聊!

修订记录
20170228 完成初稿;
20170413 修订文字;
20181201 修订文字;
20190805 修订文字;
20260718 修订内容;