第2章〓“国芯科技,百花齐放”STC增强型8051单片机 章节导读: 本章将详细介绍STC主流单片机产品系列及特色,共分为6节。2.1节介绍了STC江苏国芯科技/宏晶科技发展过程及产品系列; 2.2节讲解了单片机相关参数的含义,相当于知识铺垫,便于读者理解相关名词并通过后续介绍迅速了解一款单片机的基本特性 ; 2.3节~2.5节介绍了STC推出的STC89/90系列、STC15系列及最新的STC8/STC16系列单片机,小宇老师通过15 方面介绍了它们的不同和各自的特点; 2.6节又从5方面教会读者如何搭建一个稳定可靠的单片机最小系统,特别对于引脚含义、电源品质、可靠复位、时钟电路、外围接口等方面做了更加实用的偏工程化讲解,希望可以带给大家些许助益。 2.1宏晶科技20载,STC家的微控制器 亲爱的读者朋友们,当你翻开本章时,就开始正式学习STC家族单片机了。在学习具体产品之前很有必要了解下STC单片机这一“国芯”的缔造者及奋斗史。 宏晶科技是STC单片机创始人姚永平先生及其团队于1999年在深圳创立的研发中心,该公司致力于8051单片机的改革与创新。随着业务的发展需要,宏晶科技又把主体业务转至江苏南通,并于2011年3月成立了江苏国芯科技有限公司,所以不管是“深圳宏晶科技有限公司”还是“江苏国芯科技有限公司”,都是孕育STC单片机的创新基地。 该公司生产的STC系列单片机在中国的8051单片机市场上占有很大比例,在教学、科研、产品设计和应用制造中,几乎都可以看到STC的身影。宏晶科技现已成长为全球最大的8051单片机设计公司,对外提供专用MCU设计服务。需要说明的是,这里的“8051”是指Intel公司在1981年生产的一款8位微处理器芯片,8051系列就采用了MCS51内核架构[此处的MCS是Micro Computer System(微型计算机系统)的缩写,51是系列号],凡是符合该架构和内核体系的单片机都可以统称为“8051单片机”或者直接简称为“51单片机”。市面上51单片机的生产厂家有很多,型号数以万计,各厂家生产的51单片机片内资源、电气特性、引脚数量、封装形式均不相同,所以要学一款“典型”,以熟悉的一款芯片作为基础去使用陌生的芯片并融会贯通。朋友们投身工作后,是否熟悉单片机开发之道就看能不能基于所学在短时间内“拿下”一款相对陌生的单片机,能不能快速上手并应用。 图2.1宏晶科技STC一路走来勇于创新 江苏国芯科技/宏晶科技STC家族传承了MCS51内核经典,并在其基础上不断创新和发展,随着技术的创新、理念的升级,STC的产品线路越来越多,各产品功能丰富又各有特色,这让笔者想到了一首童年里无比熟悉的歌: “葫芦娃葫芦娃,一根藤上七朵花,风吹雨打都不怕,啦啦啦啦。”在影视作品《金刚葫芦娃》中大娃力气大,二娃是千里眼、顺风耳,三娃铜头铁脑,四娃会吐火,五娃会吐水,六娃能隐身,七娃有宝葫芦,兄弟之间各有所长又一脉相承,如图2.1所示,宏晶科技STC家的各系列单片机也像是一根藤上的“宝葫芦”,经历风雨并茁壮成长。 有的朋友可能好奇,宏晶科技为什么给自己的单片机产品起名为“STC”呢?这3个字母其实是从System on Chip中提取得到的,其含义是在一个有限体积的晶圆上设计并制造出一个功能较为完备的片上系统,经过封装后形成一个单片微控制器芯片,引出相关引脚和功能资源,以便于用户使用该芯片制造各种微控制产品。 目前,宏晶科技已经先后推出了STC89/STC90系列、STC10/STC11系列、STC12系列、STC15系列 ,以及STC8/STC16系列单片机产品(2022年后还计划推出STC32系列单片机)。每个单片机系列中按照片内资源、引脚数量、封装形式和仿真功能的区别又细分为很多具体型号,朋友们在上手后可以进行细致选型并最终应用到自己的设计中,从而实现产品化、批量化。 宏晶科技的单片机系列都具备详细的芯片数据手册,该手册是学习和开发过程中必备的文档,手册中详细描述了单片机的型号特点及资源组成,最新的数据手册需要读者朋友们登录宏晶科技的官方网站www.stcmcudata.com下载即可。 2.2“大白话”单片机啥参数,咋选型 亲爱的读者朋友们,作为初学者,要想拿下一款单片机,首先要看得懂单片机产品介绍,起码能够理解相关名词含义才行,好多朋友的基础和起点并不相同,一上来就被陌生的名词吓怕了,就会出现这种场景: 当我们信心满满地打开了单片机数据手册,看了看目录,映入眼帘的是“1T型、SRAM、Flash、EEPROM、ISP、IAP、IRC、WDT、T/C、SPI、I2C、CCP、CMP、PWM、PCA、ADC、UART、LIN、CAN、USB、HID”,心里感慨: “这都是啥玩意儿啊 !”于是我们单击数据手册文件微笑地按下了 Delete键,从此实现了“单片机从还没入门就彻底放弃”的全过程。小宇老师不是在逗朋友们笑,这是完全真实的,所以学习单片机之前必须要理解相关名词和指标,这些基础知识不仅关系到学习的顺利程度,也会关系到应用阶段、研发阶段的单片机选型能力。 市面上单片机的指标和相关名词实在很多,为了方便大家无痛理解和掌握,小宇老师从以下9个大类展开单片机通用名词解析,完全不涉及技术难点,以最直白简单的方式让大家明白“为啥会有这个词”和“这个词是干啥用的”。 1. 内核、指令集及处理性能 每种单片机微控制器都有自己的架构和芯片设计,这里的内核就是IC设计中的核心部分,内核包含 指令系统、运算单元、控制单元、内部总线、相关资源、中断系统、相关接口和存储器的结构规划等,好比是要做一个开发区的规划蓝图,内核的优劣直接关系到单片机的性能上限。 市面上单片机的内核非常多样,有我们将要学习的MCS51内核,还有其他公司自行研发的高性能内核。对于STC单片机来说,内核都是基于MCS51内核结构的,但是不同的产品系列基于原有内核做了应用改进和资源添加。MCS51内核的8051系列单片机能够经久不衰也从正面肯定了这个经典内核的实用性和价值。 STC系列单片机具备一套完整的指令系统,这关乎芯片的整体功能。啥叫“指令”呢?就是CPU用来指挥各功能部件完成某一动作的指示和命令。众多的指令构成集合,各种集合又构成指令系统,例如,数据传送类、算术操作类、逻辑操作类、控制转移类、布尔变量操作类等指令。指令的种类也从侧面反映出了单片机数据处理的灵活性与功能性。 2. 电气指标及运行参数 每种IC都有特定的运行参数和电气指标,IC的数据手册上还会有一些极限参数,作为即将要走向电子研究道路的我们一定要重视指标才能设计出稳定可靠的产品,有的时候刚插上电芯片就发热冒烟了,测量后才发现是由于外部电路的灌电流大于引脚能承受的极限值导致的。有的时候ADC读数突然为“0”了,检查后才发现是引脚由于承受了高压脉冲导致了损坏。有的时候发现同一批芯片做出的产品参数居然不一致,检查后才发现是由于供电电压往复波动导致参考电压不准所致。有的产品安装在寒风“嗷嗷吹”的大东北后发现参数差异很大,检查后才发现是环境温度影响了芯片运行。所以说,做实验和做产品不一样,电气指标必须要遵循,手册上的参数必须要考虑。 3. 存储器资源及特性 单片机系统为什么要在内部做存储器呢?还搞了个什么ROM和RAM,这是啥意思?且听小宇老师道来。把单片机和通用计算机做类比,ROM是程序存储器,就好比是计算机的硬盘,我们的操作系统就是装在计算机硬盘之中,每次开机后都是启动硬盘中的程序,单片机也是一样的,每次上电复位后单片机都开始从ROM中取出程序内容开始执行。那RAM呢?RAM是数据存储器,其实就和计算机中的内存差不多,是程序运行的临时空间,因为构造和工艺不同,ROM中的数据掉电是不会丢失的,但是读写速度比不上RAM,RAM区域的数据掉电后就会丢失,所以是个“临时场所”。再发散思维,RAM好比是办公室,上班时间有人(临时数据、中间数据),下班后就没人了(掉电丢失),ROM好比是住房,是我们真正的容身之所(程序本身或者常量、固定数据等,掉电非易失)。 自从8031单片机(不带片内ROM)推出之后,单片机的存储器资源就开始多样化,单片机制造商逐渐把ROM单元做到单片机里面,同时也提升RAM大小,ROM和RAM的容量越大,单片机价格越高,其容量单位一般用字节描述。ROM存储器种类很多, 如掩膜ROM、PROM(也可称为OTP型)、EPROM、EEPROM、Flash等。目前单片机中的ROM单元多采用Flash结构(闪存型)。相比ROM,RAM的种类就更多了,如DRAM、SRAM、VRAM、FPM DRAM、EDO DRAM、BEDO DRAM、MDRAM、WRAM、RDRAM、SDRAM、SGRAM、SB SRAM、PB SRAM、DDR SDRAM、SL DRAM、CD RAM、DDRII、DR DRAM等,单片机中的RAM单元多采用SRAM结构(静态随机存取存储器型)。看完这些是不是觉得头大?这就对了,你看!电子之路确实有意思。 4. 时钟及复位方式 跳个舞要伴奏,唱个歌要节拍,单片机也是一样,单片机最核心的需求就是供电和时钟了,时钟为单片机的每个动作和功能提供“节拍”。在合理的范围内,工作时钟频率越高则单片机的处理速度就越快,从本质上讲,时钟频率升高,机器周期就变短,执行指令所需的时间也变短,处理能效就提升了。当然,凡事都有个合理的取值范围,要是把DJ的节奏用在太极拳上,老爷爷的胳膊都脱臼了,反之把夕阳红的节奏用在街舞上,小伙子的大腿也得抽筋。 说起“复位”就要联系到“数字电子技术”这门课程,单片机的构成上就有数字电路部分,要细究单片机的一些内部结构就要掌握“数电”中学习的组合逻辑电路、触发器和时序逻辑电路的相关知识。这部分单元中就有“复位”这一说,“复位”的目的就是为了让功能单元从不定状态或者其他状态恢复到设定的默认状态,对于数字单元电路来说,一个确定的初态是十分必要的。理解了复位就可以理解程序默认从哪里开始执行,引脚上电后默认什么电平或模式等问题。通俗地说,复位动作就是让单片机里的各单元回归初始并让程序从头开始运行。引起复位的方法可以多样,种类不唯一也反映了单片机的灵活性,综合市面上的单片机,常见的复位方式有上电复位、软件复位、异常复位、低压监测复位等。 5. 中断系统及中断源 以生活中的小事为例,我正在看报纸,忽然电话响了,我肯定要放下报纸去接听电话,我正聊着“电话煲”呢,厨房的粥煮开了,溢出到了灶台上触发燃气报警了,那我现在只得放下电话去厨房关火,不然就要出大事 了。这里就有两个中断源,两次断点,三个优先级,一个中断嵌套,至于这些名词的具体含义现在不作展开,等到朋友们阅读到本书中断章节咱们再好好分析。这种能根据任务的“轻重缓急”灵活处理突发事件的机制就是单片机的中断系统 。中断源越多,一定程度上说明单片机的资源越丰富,中断机制也会越健全和灵活。单片机的中断源一般都是片上资源构成的,产生的请求也就是一些状态变化和动作事件,从某种程度上说,中断就是让单片机变得智能化的方法。 6. 片上数字及模拟资源 一个完备的产品需要多方面的支持,就以单片机板卡来说,也要分为单片机片上资源和片外设备。单片机之所以叫“单片”,就是因为要实现很多资源、功能、通道的整合,实现真正意义上的SOC,所以说单片机的片上资源一定程度上反映了单片机的性能。片上资源一般分为数字资源和模拟资源,数字类资源一般包含I/O控制、定时/计数器、通信单元及接口、时钟源、存储器、各类总线等,模拟资源一般包含内部电压调整、低压检测、复位阈值设定、电压比较器、ADC或者DAC单元等。 综合以上也能看出,单片机其实是一种混合信号处理核心。 7. 运行管理与功耗控制 单片机的具体应用非常广泛,特别是便携式产品或者消费类设备用量极大,这类产品一般是用电池供电的,用户急切希望电池能“耐用”一些,但是待机时长也不光看电池,因为电池的容量相对固定,就算是可以充电, 也希望充电不要太频繁,所以应该把产品的整机功耗做得尽可能最低。影响功耗的方面很多,单片机主控就是其中一个,一般来说,单片机的运行电流为mA级,待机或者停机电流一般在μA或者nA,这几个单位相差很大,所以运行控制与功耗控制是非常必要的,有的单片机将其称为“运行模式”或“电源管理”。 8. 封装形式及引脚配置 一款IC从设计到流片没有想象的那么简单,晶圆加工完成后其实不能直接使用,需要进行 绑定打线引出引脚再进行封装和测试,最终形成IC并投产使用。宏晶科技就具备非常成熟的0.13 μm、0.18μm、0.35μm和90nm的高阶数模混合集成电路设计技术。STC单片机产线目前都是在我国台湾积体电路制造公司(TSMC,简称“台积电”),上海分部进行流片生产,然后再到南通富士通微电子公司进行芯片的测试和封装。封装的形式非常多样,常见的STC单片机标准化封装形式有PDIP(封装效率低下,真正产品化的时候不建议使用该封装)、SOP、TSSOP、QFN、LQFP等。理想情况下,封装面积与晶圆面积应该接近1∶1,这样封装效率最高,所以量产时一般选择贴片形式,尽量不用直插,且贴片形式的内部打线和引脚距离相对较短,也利于抗干扰能力的提升,还有就是贴片封装一般都很薄,也利于芯片工作的散热以保证电路运行的稳定。封装形式不同则芯片价格、占用PCB大小、贴装/焊接工艺、机械/物理特性和适用场合也会有所差异,可以在量产前合理选择。 小宇老师总结了,一款单片机的引脚功用通常分为4个种类,即电源类引脚(含ADC参考电压引脚)、I/O类引脚(即普通或者复用功能的输入/输出通道)、外部时钟类引脚(一般也可以变更为普通I/O引脚)和特殊功能类引脚(如复位引脚或者特殊下载/调试扩展引脚等)。引脚的具体分布往往和晶圆设计及产品系列的引脚兼容有关。引脚的个数往往与封装形式和资源丰富度有关。 9. 产品命名规则及含义 STC生产的每款芯片都有自己的命名规则和含义,这些特定的字符会用丝印法或者光刻法印制在封装后的芯片表面。这些印字是由一些字母构成,表示了产品系列、工作电压、ROM大小、RAM大小、串口数量、ADC精度、工作频率、温度范围、封装类型、管脚数量、出产时间及批次、芯片版本号等。学习单片机,必须要能理解这些“字符串”背后的含义,这对于日后的选型、采购、投料生产都是非常必要的。 2.3“经典创新”STC89/STC90系列单片机 早在2004年的时候宏晶科技就推出了STC89C52系列单片机,该系列单片机的推出很大程度上挤压了AT89S52系列单片机在国内市场的占有率,开发者们直接用串口就可以烧录程序到单片机内部,无须使用专门的下载器,进一步简化了开发。随着工艺的提升和STC89C52系列单片机的进一步创新,宏晶科技又在2007年推出了STC90C52系列单片机。STC90系列可以完美替换STC89系列单片机,且抗干扰能力更强,性价比也更高。 STC89/STC90系列单片机是STC推出的新一代抗干扰/高速/低功耗的单片机,以STC89C52型号单片机为例,该系列芯片的组成单元及特色功能如图2.2所示。朋友们是不是对框图中的有些单元不理解?这很正常,且听小宇老师分9方面一一道来。 图2.2STC89C52单片机组成单元及特色功能框图 1. 内核、指令集及处理性能 该系列单片机是STC基于经典的MCS51内核研发的,其内部指令代码完全兼容传统的8051单片机,单片机的机器周期可以配置为12个时钟/机器周期(即12T型,速度较慢)和6个时钟/机器周期(即6T型,时钟比12T快了一倍,速度明显提升),具体的时钟周期配置方法需要用到第3章介绍的STCISP软件,此处不做展开。 2. 电气指标及运行参数 该系列单片机拥有两个不同的工作电压版本,凡是芯片型号中带有“C”标识的都是5V工作电压的单片机,例如“STC89C52”,该类型号可以支持3.8~5.5V的工作电压,若型号中带有“LE”标识的则为3V工作电压的单片机,例如STC89LE52,该类型号可以支持2.4~3.6V的工作电压。芯片做了ESD保护且通过了EFT测试,芯片经过可靠制造和烘烤老化,商业级的可以用在消费类电子产品中,可工作在0~+75℃环境,工业级的更耐恶劣条件,可以工作在-40~+85℃环境。 每个I/O口的电平标准都是一致的,0.8V及以下被认为是低电平,2.0V及以上被认为是高电平,复位阈值电压是在3.0V以上有效。对于该系列5V单片机而言,P1~P4端口组每个I/O口的拉电流可达到220μA,灌电流可达到6mA(P0端口组默认是开漏结构,故而其灌电流比其他端口要大一些,可以达到12mA)。对于该系列3V单片机而言,P1~P4端口组每个I/O口的拉电流可达到7 0μA,灌电流可达到4mA(P0端口组可以达到8mA),在I/O连接外部器件时推荐添加限流电阻,避免I/O引脚直接与VCC或者GND连通。从参数上看,该系列芯片的I/O驱动能力并不算强,在搭建实际电路时可以考虑外加上拉电阻、搭建三极管驱动电路、添加三态缓冲器芯片或者连接达林顿管驱动芯片等方法增强I/O驱动能力。 3. 存储器资源及特性 程序存储器(Flash)用于存储用户程序,根据具体型号的不同,可以支持4KB、8KB、12KB、14KB、16KB、32KB、40KB、48KB、56KB、62KB等大小。数据存储器(SRAM)用于提供程序运行所需的临时空间,容量支持512 ~1280B。支持在线编程ISP方式更新用户程序,无须编程器和专用下载器,可以用串口直接烧录程序。 4. 时钟及复位方式 STC89/STC90系列单片机的工作频率范围是0~35MHz,相当于普通8051单片机的0~70MHz频率,但是时钟频率越是接近极限值,稳定性就会越低,芯片功耗也会越高。所以建议合理选择,满足基本要求后必须考虑运行稳定性。芯片具备看门狗单元,内部集成了MAX810专用复位电路,当时钟频率低于12MHz时,内部复位电路的运行是可靠的,若高于12MHz时钟频率,可在RESET复位引脚添加阻容复位电路或者专用的复位芯片以保证单片机的可靠工作。 5. 中断系统及中断源 该系列单片机具备3类常规中断源,分别是外部中断类、定时/计数器中断类和通信接口中断类(主要指串口的收/发数据中断)。芯片内部的中断源种类不多,个数也比较少,一般是5个左右。 6. 片上数字及模拟资源 该系列单片机片内共有3个16位的定时/计数器,定时/计数器0也可以拆分为两个8位定时器使用,具备1个异步串行接口UART。具备看门狗资源,最多可以拥有39个I/O引脚,具备4路外部中断,可以支持掉电唤醒。有的朋友看到这里会觉得资源很少, 这属于经典架构的早期产品,资源不多但是实用。 7. 运行管理与功耗控制 该系列单片机在正常工作模式下的功耗是4~7mA,若切换到掉电模式后典型功耗可以低于 0.1μA,几乎就等于切断电源了,这种特殊模式可以用在功耗严格的电池供电设备中,如水表、气表、手持便携设备中,这种模式下可以由外部中断唤醒,重新恢复至正常工作模式。 8. 封装形式及引脚配置 STC89/STC90系列单片机的封装形式非常多样和灵活,该系列常见封装有LQFP44、PDIP40、PLCC44和PQFP44等,其中,PLCC44和PQFP44封装太过落后,使用上还需要专门的座子与之配合,所以已经很少选用了,主流推荐LQFP44(实物样式如图2.3(b)所示)和PDIP40(实物样式如图2.3(a)和图2.3(c)所示),读者在选型时一定要确定型号和封装,仔细选择。 图2.3常见封装的STC89/90C52系列单片机实物图 以往经典的AT89S52系列单片机只有4组I/O端口,分别是P0、P1、P2和P3,每个端口组有8个引脚,P1 ~P3端口组的引脚默认是准双向/弱上拉(即传统8051单片机的I/O口模式),其中,P0端口组很特殊,其模式默认为开漏输出(也就是灌电流可以大一些,拉电流几乎没有,无法直接输出高电平,需要外接上拉电阻才行),P0端口组在用作总线扩展时不用加上拉电阻,但是在用作I/O口时需要添加上拉电阻(阻值一般取4.7~10kΩ)。 单片机还具备电源引脚和单独的复位引脚,除此之外,还有3个功能引脚(EA、ALE和PSEN),这些功能引脚多与内部资源选择及外设器件的扩展与控制有关,随着单片机片内资源的完善,这些引脚已经很少使用了,所以STC89C52系列单片机兼顾经典并不断创新,在原有基础上又推出了两个子版本,如果芯片丝印最后一行末尾有“HD”字样 ,则与经典的AT89S52系列单片机一样,具备这3个功能引脚(实物样式如图2.3 (a)上方芯片所示)。如果是“90C”字样,则原有的3个引脚功能变更为P4端口组的3个引脚(P4.4、P4.5和P4.6)。这样一来,同样引脚数量的单片机就相当于多出3个I/O口了(实物样式如图2.3 (a)下方芯片所示)。需要注意的是,STC90C52系列单片机没有区分版本,默认添加了P4端口组的3个引脚(P4.4、P4.5和P4.6),实物样式如图2.3(c)所示。 所以在使用STC具体单片机产品时一定要留意对应型号的“版本”信息,然后找到官方的数据手册,核对引脚分布、引脚功能及片上资源的差异。 9. 产品命名规则及含义 STC不同的产品系列具备各自的型号命名规则,为了方便读者 理解型号字串的含义, 假定有字符串“STC89x1x2x3x4x5x6x7”,按照顺序拆解这些字段含义如表2.1所示,请读者 按照规则自行解读型号为“STC89C52RC40ILQFP44”的单片机具备哪些基本特征及资源呢?动手写在书籍旁边吧! 表2.1STC89系列单片机命名规则 字段字段可选参数及其含义 STC厂家名称: 该芯片由宏晶科技设计制造 89系列名称: 89系列对应型号可用90系列替换,属6T/12T型单片机 x1芯片工作电压: C表示3.8~5.5V电压,LE表示2.4~3.6V电压 x2程序存储器大小(Flash): 51表示4KB,52表示8KB,53表示13KB,54表示16KB,58表示32KB,516表示64KB x3数据存储器大小(RAM): RC表示片内RAM为512B,RD+表示片内RAM为1280B,若无RC或RD+标识则表示片内RAM为256B x4工作频率: 25表示可达25MHz,40表示可达40MHz,50表示可达50MHz x5工作温度范围: I表示工业级-40~+85℃,C表示商业级0~+70℃ x6封装类型: 如PDIP、LQFP、PLCC、PQFP(推荐用LQFP) x7管脚数量: 如40、44 2.4“实力强者”STC15系列单片机 2010年宏晶科技推出了STC15系列单片机,又在国内单片机应用市场上掀起了热潮,STC15系列单片机可以完胜STC89/STC90系列,各方面的资源和性能都提升很多。起初的STC15F系列属于5V供电单片机,STC15L系列属于3V单片机,经过不断创新和对芯片设计的优化,宏晶科技又在2014年推出了支持宽工作电压(2.5~5.5V)且高性价比的STC15W系列单片机,其芯片组成单元及特色功能如图2.4所示。接下来就以STC15W系列的全能型STC15W4K56S4单片机为例展开特色讲解。 图2.4STC15W4K56S4系列单片机组成单元及特色功能框图 1. 内核、指令集及处理性能 该系列单片机在MCS51内核基础上做了大量的创新和性能提升,采用STCY5超高速CPU内核,是宽电压、高速、高可靠、低功耗、强抗干扰的新一代增强型8051单片机,芯片采用STC第9代加密技术,保密性较好,单片机的机器周期为单时钟/机器周期(即1T型,速度较快),指令代码完全兼容传统的8051单片机且具备硬件乘法/除法指令,芯片的整体速度比传统8051单片机快8~12倍,在相同的时钟频率下,速度又比STC早期的1T型单片机(如STC10、STC11、STC12系列)快20%。 2. 电气指标及运行参数 STC15W系列单片机属于宽电压单片机,可以支持2.5~5.5V的工作电压,芯片做了ESD保护且通过了EFT测试,芯片经过可靠制造和烘烤老化,支持宽温度范围,可轻松工作在-40~+85℃环境。 每个I/O口的电平标准都是一致的,0.8V及以下被认为是低电平,2.0V及以上被认为是高电平,复位阈值电压是在2.2V以上有效。每个I/O口的驱动能力(拉电流和灌电流)均可达到20mA,这个参数比传统的STC89/STC90系列单片机提升了不少,但是使用的时候一定要注意,在I/O连接外部器件时推荐添加限流电阻,应避免I/O引脚直接连到VCC或者GND的情况,如果是40个引脚以上的单片机,其整体工作电流之和应小于120mA,对于16个引脚及以上或32个引脚及以下的单片机,其整体工作电流之和应小于90mA,这里的工作电流之和是指从VCC引脚流入芯片最终从GND引脚连接到地的总电流。 3. 存储器资源及特性 该系列单片机的程序存储器可以支持16KB、32KB、40KB、48KB、56KB、58KB、61KB、63.5KB大小,可擦写次数10万次以上。数据存储器(SRAM)比原来的STC89/STC90系列提升了很多,片内的最大容量可以做到4096 B,其中包括常规的256B的RAM(idata区域)和内部扩展的3840B的RAM(xdata区域)。RAM和ROM变大后整个性能都会有很大提升,我们利用该系列新品可以轻松加载轻量级的RTOS操作系统,也可以移植一些简单协议和数据内容,好比是“住房”和“办公室”变大,居住质量和办公环境也相应提升了。支持在线编程ISP方式更新用户程序,无须编程器和专用下载器,串口就能直接烧录程序。 4. 时钟及复位方式 该系列单片机芯片支持片内时钟源(高精度RC时钟源)和外部时钟源(石英晶体振荡器)。两种时钟源各有特点,片内时钟源启动速度快,达到稳定振荡所需的时间短,功耗相对较低,但是振荡频率精度 一般比不上外部石英晶体振荡器,其频率精准度为±0.3%,若遇到温度变化,时钟频率也会产生温漂,当芯片工作温度在-40 ~+85℃范围时片内时钟的温漂是±1%,常规温度范围内(-20~+65℃)温漂是±0.6%,这样的精度特性可以满足大多数应用。 若实际产品对时钟精准度和稳定度要求不高,可以选择片内时钟源,这样就不需要再搭建外部晶振电路,从而降低造价,还能节省产品设计时的PCB空间,若产品需要产生高精度、高稳定的信号输出或者高速率持续通信,则用外部时钟源较好。 该系列单片机的工作频率范围是5~30MHz,相当于普通8051单片机的60~360MHz频率,ISP编程时可以直接配置内部时钟源作为工作时钟,频率支持5~35MHz,可省掉外部晶振与复位电路,芯片具备看门狗单元,片内集成了MAX810专用复位电路,ISP编程时拥有16级复位门槛电压可选。 5. 中断系统及中断源 随着该系列单片机片内资源集成度的增加,中断种类和中断源数量也明显增多,STC传统的STC89/STC90系列片内中断源才5个左右,到了STC15W4K32S4系列已经增长至21个中断源了,中断源数量增多一定程度上反映了单片机性能、资源数量、操作灵活性、整体功能的提升。当然,STC15系列单片机还有很多不同的型号和子系列,中断源的个数差异还是很大的。 以STC15W4K32S4系列单片机的21个中断源为例,这些中断源也可以大致分为5类,分别是外部中断 0~4、定时/计数器中断0~4、通信接口中断(串口1~4和SPI收/发中断)、模拟输入检测或转换类中断(ADC中断、比较器中断和低压检测中断)、信号输出/比较类中断(PWM/CCP/PCA中断和PWM异常检测中断)等。 6. 片上数字及模拟资源 STC的产品一代一代地升级,资源配置已经和传统的STC89/STC90系列有了明显的不同。STC15W4K32S4系列单片机片内有5个16位可重装载定时/计数器,均可实现时钟输出,芯片还支持系统时钟对外分频后输出,2路CCP单元也可以当 作两个定时/计数器来使用,这样算来,最多可以有7个定时/计数器单元,这就非常强大了。芯片具备WDT硬件看门狗资源,采用LQFP64封装的单片机最多可以拥有62个I/O口引脚,可以支持多种方式将单片机从掉电状态进行唤醒(外部中断方式、专用唤醒定时器方式)。 该系列芯片还具备6路15位PWM和2路CCP,稍加编程也可以形成8路PWM输出,若用作直流电机调速或者LED调光是很方便的,很多朋友要做电机控制、灯光控制、舵机姿态控制就可以用到。在要求不高的情况下,这8路PWM还可以经过两阶RC滤波电路当作8路简易D/A(数模转换器)使用。芯片还具备8路高速10位A/D转换通道(最高转换速度30万次/秒),具备4组高速异步串行通信端口(UART1、UART2、UART3、UART4)和1组高速同步串行通信端口SPI,还具备1组比较器单元(也可以当成1路简化的A/D使用),特别适合于多串行口通信、电机控制、强干扰场合应用。 7. 运行管理与功耗控制 该系列单片机具备3种低功耗模式,它们分别是低速模式、空闲模式和掉电模式。在正常工作模式下该系列单片机的一般功耗是2.7~7mA,低功耗模式中的低速模式是以降低工作频率为代价从而降低功耗,工作频率越低就越省电,空闲模式下的典型功耗是1.8mA左右,若切换到掉电模式后典型功耗可以低于0.1μA,这种特殊模式可以用在对功耗有严格要求的设备中,进入相关模式之后,可由外部中断唤醒即可重新恢复至正常工作模式。 8. 封装形式及引脚配置 STC15系列单片机的封装形式非常多样和灵活,该系列常见的封装有LQFP64L、LQFP64S(这里的L和S类似于衣服的尺码,其实就是芯片的封装尺寸不一样)、QFN64、LQFP48、QFN48、LQFP44、LQFP32、SOP28、SKDIP28、PDIP40、TSSOP20、SOP16、SOP8等,该系列仍然具备双列直插封装PDIP40,其实物样式如图2.5(a)所示,实际产品用得比较多的是LQFP64S封装,其封装面积仅12×12mm2,非常适合应用在电路板上进行表面装贴,其实物样式如图2.5(b)所示,读者在选型时可按需选择相应封装。 图2.5常见封装的STC15W4K系列单片机实物图 细心的朋友可能发现了,随着STC新产品的不断问世,其封装选择也变得愈加丰富,不仅拥有原来的双列直插PDIP和经典的四面薄型封装LQFP,还不断推出了TSSOP、QFN、SOP等封装形式,这样就更加贴近应用所需。脚数不多且封装效率较高的单片机可以应用在对空间要求更为严苛的产品中,如穿戴设备(智能手环)、微型家电(电动牙刷)、手持设备(小型POS机)等环境 。为了让大家更加熟悉STC15系列的子系列及实物样式,小宇老师列举了STC15W204S这颗宽电压的8脚单片机,采用SOP8样式,性价比超越了STC15F10x系列和STC15W10x系列,应用在简单控制上非常有优势,其实物样式如图2.6(a)所示。再如STC15W408AS这颗芯片,“小小身板”还带有8通道10位分辨率ADC资源,其用量也 非常大,常见封装有SOP16(如图2.6(b)所示)和体积更小、脚数更多的TSSOP20封装(如图2.6(c)所示)。值得一提的是 ,STC15系列的很多子系列虽然型号各有不同,但是在引脚分布上做了兼容处理,很多芯片的升级和替换甚至不需要改动原有PCB线路,这是非常好的,具体的芯片脚位需要读者自己参考数据手册进行查询。 图2.6STC15W系列单片机SOP8、SOP16、TSSOP20封装实物图 STC15W系列单片机的I/O利用率很高,一个单片机的引脚要是有64个,那么它的I/O引脚最多可以支持62个,固定占用的 两个引脚一个是VCC(电源正),另一个是GND(电源负)。这样看来,48脚的可用I/O最大就有46个,以此类推。所有的I/O引脚均支持4种模式,即准双向口模式、推挽输出模式、开漏输出模式以及高阻输入模式,模式的多样性让单片机的应用更为灵活,可以利用模式的不同特点实现特殊功能。 从引脚的功能上讲,复位引脚和时钟输入引脚仍然配备,但这两个引脚也可以当作普通I/O去使用,不会造成功能性浪费。除此之外的多数引脚也都具备第二复用功能,有的引脚甚至可以把原有功能重映射到其他引脚,利用这些特性, 电路设计将会更加简单,对于个别电路板的设计错误也可以方便地避开或者弥补,甚至还可以利用重新映功能实现资源的分时复用(类似于“移形换影”神功一样,把一个人分成多个人)。 9. 产品命名规则及含义 假定有字符串“xxx15W4Kx1S4x2x3x4x5”,按照顺序拆解这些字段含义如表2.2所示,请读者 按照规则自行解读型号为“IAP15W4K61S430ILQFP64”的单片机具备哪些基本特征及资源呢?动手写在书籍旁边吧! 表2.2STC15W4K56S4系列单片机命名规则 字段字 段 含 义 xxx芯片类型: 若为“STC”则表示用户不可将用户程序区的Flash当EEPROM使用,但有专门的EEPROM。若为“IAP”则表示用户可将用户程序区的Flash当EEPROM使用。若为“IRC”则表示用户可将用户程序区的Flash当EEPROM使用,且使用内部24MHz时钟或外部晶振 15系列号: 15系列采用STCY5超高速CPU内核,是1T型8051单片机 W工作电压: 支持宽电压2.5~5.5V 4K数据存储器大小(RAM): 支持4KB=4096B x1程序存储器大小(Flash): 08为8KB,16为16KB,以此类推 S4串口个数: S4表示具备4个独立串口 x2工作频率: 例如,“30”表示可以工作在30MHz频率下 x3工作温度范围: I表示工业级-40~+85℃,C表示商业级0~+70℃ x4封装类型: 支持LQFP、PDIP、TSSOP、SOP、QFN等 x5管脚数量: 如64、48、44、40、32、28、20、16、8等 2.5“再推新宠”STC8/STC16系列单片机 讲了这么多,终于到了本书的主角上场了,STC8系列微控制器是宏晶科技于2016年开始陆续推出的产品,该系列可以说是综合了以往各系列的优点形成的又一颗高性价比增强型8051单片机。该系列底下又有几个子系列,具体包括STC8A系列、STC8F系列(在2020下半年改名为STC8C系列)、STC8G系列和STC8H系列等。STC8的子系列虽然多,但是核心结构和使用上是相似的,个别系列在工作电压、ADC资源、时钟资源、增强型/高级型PWM资源、PCA资源、硬件USB资源、触摸资源、LED驱动器资源、RTC实时时钟资源及引脚/封装配置上有点差异(整体相似度很高,差异并不太大,学习STC8H系列后就可以直接“玩 转”A、F、C和G系列,甚至可以直接上手STC16系列16位高性能单片机(STC16系列单片机是宏晶科技于2020年年底推出的最新产品,其产品线和片上资源可能还会更新和变动,故而此处只做简单提及,感兴趣的朋友们可以到STC官网进行关注和了解))。 为了让朋友们更加清楚STC8子系列的命名规则及意义,小宇老师对其做简要介绍如下。 STC8A: 这是STC公司最早推出的系列,该系列中的字母“A”代表ADC模/数转换器功能,是STC公司片上搭载12位分辨率高性能ADC的起航产品,该系列又于2021年5月后推出了STC8A8K64D4型号,该型号单片机支持批量数据传输BMM(即DMA资源)。 STC8F: 该系列单片机几乎和STC8A系列同时推出,但是该系列早期芯片不具备ADC、PWM和PCA功能,自2021年后该系列重新升级,升级后的产品仍与原先的STC8F管脚兼容,但内部设计做了优化和更新,这就导致程序上会有微小差异,用户在使用新版本时需要微调寄存器配置,所以重新命名为STC8C系列。 STC8C: 该系列字母中的“C”就代表了改版,也就是早期STC8F芯片的升级版。 STC8G: 该系列字母中的“G”最初是芯片量产时打错字了,虽然是个“小插曲”,但批量了也没办法,于是将错就错,将G系列解释为“GOOD”系列,简单易学。 STC8H: 该系列字母中的“H”取自“高”的英文单词首字母,表示该系列芯片具备“16位高级PWM”单元,有了这个单元就可以对接更多应用(特别是运动控制领域)。 推出多种系列的目的就一个,那就是满足更多适用的场合,让人们可以有更多的选择。接下来以STC8H系列的全能型STC8H8K64U单片机为例展开特色讲解。该系列芯片组成单元及特色功能如图2.7所示。 图2.7STC8H8K64U系列单片机组成单元及特色功能框图 1. 内核、指令集及处理性能 STC8系列单片机是STC生产的单时钟/机器周期(1T型)的单片机,指令代码完全兼容传统的8051单片机,在相同的工作频率下,STC8系列单片机比传统的8051快约12倍(速度快11.2~13.2倍),按顺序依次执行完全部的111条指令仅需147个时钟,而传统8051单片机则需要1944个时钟。该系列单片机内部集成了增强型的双数据指针。通过程序控制,可实现数据指针自动递增或递减功能以及两组数据指针的自动切换功能。该系列单片机是支持在线仿真的集宽电压、高速、可靠、强加密、低功耗、抗静电、抗干扰等特色于一身的新一代8051单片机。 2. 电气指标及运行参数 该系列单片机内部具备低压差稳压LDO单元电路,可以支持1.9~5.5V供电范围,可以很好地匹配常见的2.5V、3.3V和5.0V系统。芯片经过可靠制造和烘烤老化,可以工作在-40~85℃的环境。 单片机每个I/O口的电平标准都是一致的,如果用5V给单片机供电,则1.32V及以下可被认为是输入低电平,1.54V及以上通常被认为是输入高电平,对于I/O电平的输入阈值有一点需要注意,那就是当端口开启或者关闭内部斯密特触发器单元时的电平阈值会有变化(也就是说,高电平和低电平不一定是1.54V及以上和1.32V及以下),具体的电平阈值可以查阅芯片数据手册的电气特性表格。复位阈值电压是在1.32V以上有效。 每个I/O口的驱动能力(拉电流和灌电流)均可达到20mA,在I/O连接外部器件时推荐添加限流电阻,应避免I/O引脚直接连到VCC或者GND的情况,使用的时候一定要注意,芯片整体工作电流之和应小于70mA(也就是从VCC引脚流入芯片最终通过GND引脚流到地去的电流总和)。 3. 存储器资源及特性 程序存储器最大支持到64KB,支持用户配置EEPROM区间和大小,擦写次数10万次以上,支持512B单页擦除。支持在线编程ISP方式更新用户程序,全系列都支持单芯片仿真,无须额外的仿真器和下载器。 数据存储器的内部直接访问RAM(data区域)为128B,内部间接访问RAM(idata区域)为128B,内部扩展RAM(片内xdata区域)支持2KB、4KB、8KB,外部最大可以扩展到64KB(外部xdata区域)。在STC8H8K64U系列单片机中还专门给硬件USB资源配备了1280B的USB数据RAM区域(这个空间不算在用户RAM容量之内)。 4. 时钟及复位方式 STC8H8K64U系列单片机内部有3个可选时钟源: 内部高精度IRC时钟(具体频率值的设定可以在STCISP软件下载程序时调整)、内部32kHz的低速IRC时钟和外部4~45MHz晶振或外部时钟信号。通过程序代码, 可以自由选择时钟源,时钟源选定后可再经过8位的分频器分频后再将时钟信号提供给CPU和各个外设(如定时/计数器、串口、SPI单元等),这样做是为了得到更多时钟频率值,这里的分频器相当于一个除法因子。 单片机内部集成高精度R/C时钟,常温+25℃下的精准度为±0.3%,-40~+85℃温度区间时的精准度为-1.35%~+1.3%,-20~+65℃温度区间时的精准度为-0.76%~+0.98%。ISP方式对单片机烧录程序时可以启用片内时钟源,从而省掉外部晶振及电路。 该系列单片机的复位方式分为硬件复位和软件复位两类,硬件复位主要包括上电复位、低压复位、复位脚复位和看门狗复位等。软件复位主要指写IAP_CONTR寄存器中的SWRST位时所触发的复位。该系列单片机内部已集成高可靠复位电路,故而无 须用户添加额外的复位电路,用户用ISP方式对单片机编程时可以灵活地选择4级复位门槛电压。 5. 中断系统及中断源 STC8不同型号的中断源个数不一样多,中断源数量为16~22个,中断源来自于片上资源,中断源的数量一定程度上反映了单片机的灵活度和资源的丰富度,STC8中断源支持4级中断优先级配置(但是也有特例,个别中断源固定为最低优先级中断)。 6. 片上数字及模拟资源 STC8不同型号的资源配置不尽相同,数字外设部分具备2~4个高速串口、最多5个16位定时/计数器、最大4组16位PCA模块、最大8组15位增强型PWM、高级型16位PWM资源、硬件16位乘/除法器MDU16、I2C、SPI接口以及硬件USB接口、触摸按键控制器、LED驱动器以及RTC实时时钟(需要说明的是,这些资源在某些型号中不一定具备,在实际选型时需要加以注意)。 模拟外设部分具备最高12位15路的超高速ADC(有的型号分辨率是10位且模拟通道数量也有变化)、硬件比较器等资源,部分数字外设功能可在多个管脚之间进行切换,可满足广大用户的设计需求。 7. 运行管理与功耗控制 STC8系列单片机支持两种低功耗模式: IDLE模式和STOP模式。在IDLE模式下(也可以叫待机模式/空闲模式),时钟单元停止给CPU提供时钟,CPU停止执行指令,但所有的外设仍处于工作状态,此时功耗约为1.3mA(6MHz工作频率下)。STOP模式即为主时钟停振模式,即传统的“掉电模式”、“停电模式”或“停机模式”(名称可能不同,但模式含义是一样的),该模式下CPU和全部外设都停止工作,功耗可降低到0.1μA以下。 8. 封装形式及引脚配置 STC8不同型号的引脚数量差异很大,所有的I/O均支持4种模式,即准双向口模式、推挽输出模式、开漏输出模式以及高阻输入模式。 以STC8H8K64U型号单片机为例,该型号LQFP64封装的芯片最多可有60个I/O引脚给用户使用,分别是P0.0 ~P0.7、P1.0~P1.7(没有P1.2)、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4(没有P5.5~P5.7)、P6.0~P6.7、P7.0~P7.7。 整个STC8系列芯片的封装形式非常多样和灵活,该系列常见封装有QFN64、QFN48、QFN32、QFN20、LQFP64S、LQFP48、LQFP44、LQFP32、PDIP40、TSSOP20、SOP16、SOP8等。以STC8A系列中的STC8A8K64S4A12单片机为例,该型号常用的LQFP64S封装实物如图2.8(a)所示,该型号LQFP48封装实物如图2.8(b)所示,LQFP44封装实物如图2.8(c)所示,不同封装下引脚数量和脚位功能存在差异,尺寸和功耗也不一样,读者在选型时一定要确定型号和封装,仔细选择。 图2.8STC8A8K64S4A12单片机LQFP封装实物图 为了匹配不同产品的需求,STC8系列单片机还推出了SOP、TSSOP、QFN系列封装,此类封装的尺寸更小,非常节约PCB面积。以STC8G系列中的STC8G1K08单片机为例,该型号SOP8封装实物如图2.9(a)所示,SOP16封装实物如图2.9(b)所示,TSSOP20封装实物如图2.9(c)所示,QFN20封装实物如图2.9(d)所示。 图2.9STC8G1K08系列单片机SOP、TSSOP、QFN封装实物图 9. 产品命名规则及含义 假定有字符串“STC8xxK64Sx/UAxx1x2x3x4”,按照顺序拆解这些字段含义如表2.3所示,请按照规则自行解读型号“STC8A8K64S4A1228ILQFP64S”的单片机具备哪些基本特征及资源呢?动手写在书籍旁边吧! 表2.3STC8系列单片机命名规则 字段字 段 含 义 STC厂家名称,表示该芯片由宏晶科技设计制造 8x子系列,8F表示STC8F系列(无AVCC、AGnd、AVref引脚),8A表示STC8A系列(有AVcc、AGnd、AVref引脚),8H表示STC8H系列 xK数据存储器大小(SRAM),8K表示8KB,还具备2KB 64程序存储器大小(Flash),64表示64KB,还具备32KB和16KB Sx/USx表示串口个数,S4表示具备4个独立串口,还具备S2(2个)和S(1个),U表示该芯片具备硬件USB资源 AxADC精度,A12表示12位ADC,还具备A10(10位ADC) x1工作频率: 例如,“28”表示可以工作在28MHz频率下 x2工作温度范围: I表示工业级-40~+85℃,C表示商业级0~+70℃ x3封装类型: 支持LQFP、PDIP、TSSOP、SOP、QFN等 x4管脚数量: 如64、48、44、40、32、28、20、16、8等 有的朋友买到STC8系列单片机后比较细心,可能在芯片表面的丝印最下方还能发现如“1816A665573.XG”字样的一些字符串,这些字串又是什么含义呢?为啥没有出现在官方命名中呢?其实也简单,“1816”表示芯片生产年份和周数,也就是2018年的第16周,“A665573.X”是晶圆的批次号,这部分字符与芯片制造厂商有关系,最后的“G”表示当前芯片的内部版本号。 有的朋友还可能买到过“TST”起头的芯片,如“TST8H8K64U”,乍一看还以为这不是STC公司生产的单片机呢。其实,“TST”起头的单片机是STC公司推出的工程测试样片,这种样片仅作为稳定量产前的测试,其中可能存在隐藏的Bug,只能说大体功能上是正常的,不建议用于实际产品。 有的朋友用过STC15系列单片机,其资源多、功能强,绝对可以称得上STC推出的主流型号,那现在即将要学习的“新宠”STC8系列又有哪些创新和进步呢?这个问题值得去讲解,小宇老师基于STC全系列单片机的使用心得简要归纳为以下15点供 读者参考。 1. 指令升级,执行速度再上一个台阶 STC公司生产的单片机都是基于MCS51内核的,但是经过内核调整与优化,也形成了自己的一套指令集版本。早期的STC89和STC90系列产品采用了STCY1版本指令集,大多数指令的执行需要花费至少12个CPU时钟周期,速度较慢。经过不断升级,STC10、STC11、STC12系列、STC15F104E、STC15F204EA等产品就开始用STCY3版本指令集,后来的STC15F2K60S2、STC15F408AD、STC15F104W以及STC15Wxx系列单片机就开始用STCY5版本指令集,现在学习的STC8全系列单片机就用如图2.10所示箭头所指的STCY6版本指令集。在STCY6版本指令集下,大多数的指令都只需花费1个CPU时钟周期即可执行完毕,运行速度确实有了较大提升。 图2.10STC8全系列单片机采用STCY6指令表 2. 片上SRAM的容量大大提升 STC早期单片机的SRAM一般低于512B,到STC15系列的时候提升到了4KB,现在的STC8又提升到了8KB,SRAM提升后更加适用于结合轻量级RTOS的应用,装载一些用户协议和“跑跑”片上小系统都是没有问题的。 3. 强化了双数据指针DPTR的选择与控制 学习过单片机原理或者用汇编语言开发过8051单片机的朋友对“DPTR”绝对不会陌生,它是一个16位长度的专用地址指针寄存器,叫作数据指针,专门“奔波”在单片机的RAM和ROM区域提取数据进行地址指向、数据提取、数据暂存,好比是图书馆里的两个图书收纳员,也相当于一栋大楼中的两部电梯来回载客。通过程序控制,单片机可以在两组DPTR间灵活切换和选择。 4. 片内寄存器量级得到了扩展与提升 STC8系列单片机内部的特殊功能寄存器(SFR)得到了再次扩展,寄存器数量的增多直接反映出单片机整体功能的增强。引入扩展特殊功能寄存器(XSFR)后,片上的资源控制更为丰富。 5. 复位电路与复位信号的变化 在STC89、STC90、STC10、STC11、STC12、STC15、STC8A和STC8F系列单片机中,复位方式均采用高电平复位(即在RESET引脚上施加一定时长的高电平就能引起单片机复位,非复位状态下的RESET引脚保持低电平)。现在学习的STC8G和STC8H系列单片机正好与之相反,它们的复位方式采用低电平复位(即在RESET引脚上施加一定时长的低电平就能引起单片机复位,非复位状态下的RESET引脚保持高电平)。 6. 中断源及优先级增多,嵌套处理更为灵活 随着片上资源的增加,需要让CPU处理的“事件”也随之变多,也就是中断源的数量在增加,整个单片机对突发事件处理的能力在提升,且STC8打破了传统8051的优先级设置,引入4个优先级等级控制,使得中断源可以灵活处理嵌套关系,让中断系统中的“轻重缓急”关系更为丰富。 7. I/O结构及复用分布更为适用 STC8系列单片机所有的I/O均支持4种模式,即准双向口模式、推挽输出模式、开漏输出模式和高阻输入模式。又在I/O单元内部强化了上拉电阻和施密特触发器的控制能力,部分型号的单片机I/O还支持转换速度、驱动电流、数字输入使能等配置。这样一来,就可以适配更多实际应用。I/O的整体数量、引脚功能的复用和迁移(重映射)也都做了分布优化。 值得一提的是,在STC早期的单片机中(包括STC15、STC8A和STC8F系列在内),I/O引脚上电后默认为准双向口模式,这种模式在某些场景下可能导致一些“问题”,例如,很多客户的系统中使用I/O引脚去驱动电机或者LED灯,上电的瞬间,由于I/O引脚电平的“不可控”,会导致电机突然转动或者LED灯闪烁,这样的产品体验多多少少有点不好。针对这些问题,在STC8G和STC8H系列单片机中,上电的瞬间除P3.0和P3.1引脚为准双向口模式之外,其余的所有I/O引脚均为高阻输入模式,这样一来就可以去除I/O引脚的“非稳定”状态,避免电机、LED、外围电路的误动作。 对于STC8G和STC8H系列单片机而言,I/O引脚上电默认为高阻输入模式固然很好,但也导致很多初学者忽视了这一细节。这些朋友在编程时一上来就开始操作I/O引脚输出高低电平,结果发现程序控制不了I/O引脚,这是为啥呢?这是因为高阻输入模式下的拉电流/灌电流均为零,所以必须要先改变I/O引脚的模式才可以正常输出(这部分内容会在第4章展开讲解,此处不做赘述)。 8. 提升了A/D转换单元的综合性能 单片机片上A/D资源非常实用,目前很多消费/工业电子产品都需要接收和量化来自前端或者外围的模拟信号,例如,热电偶将温度高低转换为模拟电信号,送到单片机后就要进行量化和计算,再由人机界面或者其他方式反映出实际温度值,其中,实现模拟信号到数字信号转换的就是ADC单元。STC8系列单片机的A/D资源与STC15系列相比有了进一步的提升,采样速率提高了,分辨位数也增加了,使得分辨率指标从10位提升到了12位。 9. 进一步增加PWM/PCA/CCP通道数量 PWM的通道数量一旦增加,则输出信号的路数就可以得到扩展,在复杂的直流系统调光、调温、调速系统中就显得尤为必要,比如在多路电机/舵机控制时,缺少几个信号通道就会非常麻烦。PCA/CCP的通道数量一旦增加,在一些需要进行信号捕获或者信号比较的场合就会变得非常方便,所以增加一些专用功能的通道数量是非常有益的。有的时候 不借助专用芯片,仅依靠一片单片机就能完成系统功能是一件超级幸福的事情。需要注意的是,只有STC8A、STC8G系列才具备PCA/CCP功能,而在STC8C、STC8H系列单片机中没有该资源。 10. STC8全系列单片机新增硬件I2C接口 早期的STC单片机进行I2C通信时一般是采用模拟时序的方法,每次通信都要选定两个I/O口产生通信时序,若遇到数据发送或者时钟产生时都要依赖for()循环或者移位运算,如此编程虽增加了对I2C通信过程的理解,但是操作比较烦琐,STC8全系列单片机自带硬件I2C单元后大大简化了开发的复杂度,让I2C接口可以连接更多的外围设备。 11. STC8H系列部分单片机新增16位高级型PWM定时器,支持正交编码器 STC8H系列部分单片机内部集成了8通道16位高级型PWM定时器,高级型的定时/计数器可以完成基本的定时,还能测量输入信号的脉冲宽度(即输入捕获功能),又能产生输出波形(即输出比较,PWM和单脉冲模式),还能区分不同事件所导致的中断请求(例如,捕获、比较、溢出、刹车或触发等事件),还可以与PWMB或外部信号进行同步(例如,外部时钟、复位信号、触发或使能信号),堪称定时/计数器资源中的“功能王者”。 12. STC8H系列部分单片机新增了硬件USB接口 STC8H8K64U系列单片机中集成了USB 2.0/USB 1.1资源,兼容全速USB,具备6个双向端点,支持4种端点传输模式(控制传输、中断传输、批量传输和同步传输),每个端点拥有64B的缓冲区。 可以方便地对接其他USB外设,完成更多USB类应用。 13. STC8H系列部分单片机新增了触摸控制器单元 STC8H系列部分单片机中集成了一个触摸按键控制器(即“TSU”),最大可以连接16个按键,能够监测手指触摸在按键电极后导致的微小电容变化,最后得到一个16位数字量。从原理上讲,这个TSU单元和16位的ADC差不多,它们之间的差异仅是ADC是对电压进行量化,而TSU单元是监测电容大小的变化罢了。触摸按键控制器的引入是很有必要的,可以利用该功能制作电磁炉、煮茶器、电动牙刷、室内智能家居开关等产品的交互面板。 14. STC8H系列部分单片机新增了LED控制器 STC8H系列部分单片机中还集成了一个LED驱动器,这个驱动器包含一个时序控制器、8个位引脚和8个段引脚。每个引脚有一个对应的寄存器使能位,能够独立地控制该引脚的使能状态,没使能的引脚可以当作普通I/O或其他功能的引脚。LED驱动器支持共阴、共阳、共阴/共阳三种模式,可以同时选择1/8~8/8占空比来进行辉度控制(也就是显示亮度的调整),只需要改改程序就能调节数码管的显示效果和内容,使用起来非常方便。 15. STC8H系列部分单片机新增了RTC实时时钟单元 STC8H系列部分单片机中还集成了一个实时时钟控制电路,也就是 平时说的RTC单元,该单元的功耗很低(工作电流小于10μA),可以支持2000—2099年的定时,并可以自动判断闰年。支持一组闹钟设置,支持多种中断事件(例如,闹钟中断、日中断、小时中断、分钟中断、秒中断、1/2秒中断、1/8秒中断、1/32秒中断等),还具备掉电唤醒功能。有时候想想,省去一个外部RTC芯片也是可以降低不少成本的,有了这个RTC单元,想要做个万年历、事件闹钟、长时间定时、家电预约启动等功能就会很方便。 2.6“主角上场”搭建可靠的STC8最小系统 说起单片机最小系统可能大家都不陌生,也就是单片机芯片能够工作的必要外围电路,电路设计的原则是按照单片机引脚的分布和功能需求选择合适的器件构造出单片机工作所需的必要单元。好多学过早期STC单片机的读者一上来就开始搭建自己的小系统,看着看着发现一个类似于“AVref”的引脚就傻眼了,因为早期的STC单片机没有这样的引脚,需要连接什么资源和电路也不熟悉。所以基于这些问题,小宇老师单独写了这一节,目的很明确,就是解决这个脚叫什么,怎么用,如何搭建电源单元,怎样保证可靠复位,时钟电路为啥这样设计,接口外围有什么考虑等问题。 2.6.1看懂单片机引脚分类和功能 熟悉一款单片机之前一定要知道这个“小蜘蛛”的脚都有什么作用、大致分为几大类、使用的时候怎么分配、不同封装下的脚位分布等。以STC8H8K64U系列单片机为例,该芯片支持表面贴片式封装(LQFP64S、LQFP48、QFN64、QFN48),贴片式LQFP64S封装引脚名称及分布如图2.11所示。 图2.11STC8H8K64U单片机LQFP64S封装引脚名称及分布 为了方便大家浏览引脚资源,小宇老师列出了引脚编号、名称、类型及功能描述,如表2.4所示,请读者大致看一看,能不能自行解读表中的内容? 表2.4STC8H8K64U系列单片机引脚说明 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 11 P5.3I/O标准I/O口 TxD4_2O串口4的发送脚 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 22 P0.5I/O标准I/O口 AD5I地址总线 ADC13IADC模拟输入通道13 T3CLKOO定时器3时钟分频输出 33 P0.6I/O标准I/O口 AD6I地址总线 ADC14IADC模拟输入通道14 T4I定时器4外部时钟输入 PWMETI2_2IPWM外部触发输入脚2 44 P0.7I/O标准I/O口 AD7I地址总线 T4CLKOO定时器4时钟分频输出 5— P6.0I/O标准I/O口 PWM1P_3I/OPWMA的捕获输入和脉冲输出正极 6— P6.1I/O标准I/O口 PWM1N_3I/OPWMA的捕获输入和脉冲输出负极 7— P6.2I/O标准I/O口 PWM2P_3I/OPWMB的捕获输入和脉冲输出正极 8— P6.3I/O标准I/O口 PWM2N_3I/OPWMB的捕获输入和脉冲输出负极 95 P1.0I/O标准I/O口 ADC0IADC模拟输入通道0 PWM1PI/OPWM1的捕获输入和脉冲输出正极 RxD2I串口2的接收脚 106 P1.1I/O标准I/O口 ADC1IADC模拟输入通道1 PWM1NI/OPWMA的捕获输入和脉冲输出负极 TxD2I串口2的发送脚 117 P4.7I/O标准I/O口 TxD2_2I串口2的发送脚 128 P1.4I/O标准I/O口 ADC4IADC模拟输入通道4 PWM3PI/OPWM3的捕获输入和脉冲输出正极 MISOI/OSPI主机输入从机输出 SDAI/OI2C接口的数据线 139 P1.5I/O标准I/O口 ADC5IADC模拟输入通道5 PWM3NI/OPWM3的捕获输入和脉冲输出负极 SCLKI/OSPI的时钟脚 SCLI/OI2C的时钟线 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 1410 P1.6I/O标准I/O口 ADC6IADC模拟输入通道6 RxD_3I串口1的接收脚 PWM4PI/OPWM4的捕获输入和脉冲输出正极 MCLKO_2O主时钟分频输出 XTALOO外部晶振的输出脚 1511 P1.7I/O标准I/O口 ADC7IADC模拟输入通道7 TxD_3O串口1的发送脚 PWM4NI/OPWM4的捕获输入和脉冲输出负极 PWM5_2I/OPWM5的捕获输入和脉冲输出 XTALII外部晶振/外部时钟的输入脚 1612 P1.3I/O标准I/O口 ADC3IADC模拟输入通道3 MOSII/OSPI主机输出从机输入 PWM2NI/OPWMB的捕获输入和脉冲输出负极 T2CLKOO定时器2时钟分频输出 1713UCapIUSB内核电源稳压脚 1814 P5.4I/O标准I/O口 RSTI复位引脚 MCLKOO主时钟分频输出 SS_3ISPI的从机选择脚(主机为输出) SSISPI的从机选择脚(主机为输出) PWM2PI/OPWMB的捕获输入和脉冲输出正极 PWM6_2I/OPWM6的捕获输入和脉冲输出 T2I定时器2外部时钟输入 ADC2IADC模拟输入通道2 1915 VccVCC电源脚 AVccVCCADC电源脚 2016ADC_VRef+IADC外部参考电压源输入脚,要求不高时可直接接MCU的VCC 2117 GndGND地线 AGndGNDADC地线 2218 P4.0I/O标准I/O口 MOSI_3I/OSPI主机输出从机输入 23— P6.4I/O标准I/O口 PWM3P_3I/OPWM3的捕获输入和脉冲输出正极 24— P6.5I/O标准I/O口 PWM3N_3I/OPWM3的捕获输入和脉冲输出负极 25— P6.6I/O标准I/O口 PWM4P_3I/OPWM4的捕获输入和脉冲输出正极 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 26— P6.7I/O标准I/O口 PWM4N_3I/OPWM4的捕获输入和脉冲输出负极 2719 P3.0I/O标准I/O口 D-I/OUSB数据口 RxDI串口1的接收脚 INT4I外部中断4 2820 P3.1I/O标准I/O口 D+I/OUSB数据口 TxDO串口1的发送脚 2921 P3.2I/O标准I/O口 INT0I外部中断0 SCLK_4I/OSPI的时钟脚 SCL_4I/OI2C的时钟线 PWMETIIPWM外部触发输入脚 PWMETI2IPWM外部触发输入脚2 3022 P3.3I/O标准I/O口 INT1I外部中断1 MISO_4I/OSPI主机输入从机输出 SDA_4I/OI2C接口的数据线 PWM4N_4I/OPWM4的捕获输入和脉冲输出负极 PWM7_2I/OPWM7的捕获输入和脉冲输出 3123 P3.4I/O标准I/O口 T0I定时器0外部时钟输入 T1CLKOO定时器1时钟分频输出 MOSI_4I/OSPI主机输出从机输入 PWM4P_4I/OPWM4的捕获输入和脉冲输出正极 PWM8_2I/OPWM8的捕获输入和脉冲输出 CMPOO比较器输出 3224 P5.0I/O标准I/O口 RxD3_2I串口3的接收脚 3325 P5.1I/O标准I/O口 TxD3_2O串口3的发送脚 3426 P3.5I/O标准I/O口 T1I定时器1外部时钟输入 T0CLKOO定时器0时钟分频输出 SS_4ISPI的从机选择脚(主机为输出) PWMFLTI增PWMA的外部异常检测脚 PWMFLT2I增PWMB的外部异常检测脚 3527 P3.6I/O标准I/O口 INT2I外部中断2 RxD_2I串口1的接收脚 CMP-I比较器负极输入 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 3628 P3.7I/O标准I/O口 INT3I外部中断3 TxD_2O串口1的发送脚 CMP+I比较器正极输入 37—P7.0I/O标准I/O口 38—P7.1I/O标准I/O口 39—P7.2I/O标准I/O口 40— P7.3I/O标准I/O口 PWMETI_3IPWM外部触发输入脚 4129 P4.1I/O标准I/O口 MISO_3I/OSPI主机输入从机输出 CMPO_2O比较器输出 PWMETI_3IPWM外部触发输入脚 4230 P4.2I/O标准I/O口 WRO外部总线的写信号线 4331 P4.3I/O标准I/O口 RxD_4I串口1的接收脚 SCLK_3I/OSPI的时钟脚 4432 P4.4I/O标准I/O口 RDO外部总线的读信号线 TxD_4O串口1的发送脚 4533 P2.0I/O标准I/O口 A8I地址总线 PWM1P_2I/OPWMA的捕获输入和脉冲输出正极 PWM5I/OPWM5的捕获输入和脉冲输出 4634 P2.1I/O标准I/O口 A9I地址总线 PWM1N_2I/OPWMA的捕获输入和脉冲输出负极 PWM6I/OPWM6的捕获输入和脉冲输出 4735 P2.2I/O标准I/O口 A10I地址总线 SS_2ISPI的从机选择脚(主机为输出) PWM2P_2I/OPWMB的捕获输入和脉冲输出正极 PWM7I/OPWM7的捕获输入和脉冲输出 4836 P2.3I/O标准I/O口 A11I地址总线 MOSI_2I/OSPI主机输出从机输入 PWM2N_2I/OPWMB的捕获输入和脉冲输出负极 PWM8I/OPWM8的捕获输入和脉冲输出 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 4937 P2.4I/O标准I/O口 A12I地址总线 MISO_2I/OSPI主机输入从机输出 SDA_2I/OI2C接口的数据线 PWM3P_2I/OPWM3的捕获输入和脉冲输出正极 5038 P2.5I/O标准I/O口 A13I地址总线 SCLK_2I/OSPI的时钟脚 SCL_2I/OI2C的时钟脚 PWM3N_2I/OPWM3的捕获输入和脉冲输出负极 5139 P2.6I/O标准I/O口 A14I地址总线 PWM4P_2I/OPWM4的捕获输入和脉冲输出正极 5240 P2.7I/O标准I/O口 A15I地址总线 PWM4N_2I/OPWM4的捕获输入和脉冲输出负极 53— P7.4I/O标准I/O口 PWM5_4I/OPWM5的捕获输入和脉冲输出 54— P7.5I/O标准I/O口 PWM6_4I/OPWM6的捕获输入和脉冲输出 55— P7.6I/O标准I/O口 PWM7_4I/OPWM7的捕获输入和脉冲输出 56— P7.7I/O标准I/O口 PWM8_4I/OPWM8的捕获输入和脉冲输出 5741 P4.5I/O标准I/O口 ALEO地址锁存信号 5842 P4.6I/O标准I/O口 RxD2_2I串口2的接收脚 5943 P0.0I/O标准I/O口 AD0I地址总线 ADC8IADC模拟输入通道8 RxD3I串口3的接收脚 PWM5_3I/OPWM5的捕获输入和脉冲输出 T3_2I定时器3外部时钟输入 6044 P0.1I/O标准I/O口 AD1I地址总线 ADC9IADC模拟输入通道9 TxD3O串口3的发送脚 PWM6_3I/OPWM6的捕获输入和脉冲输出 T3CLKO_2O定时器3时钟分频输出 续表 各封装引脚编号 LQFP64 QFN64LQFP48 QFN48引 脚 名 称功能类型功 能 说 明 6145 P0.2I/O标准I/O口 AD2I地址总线 ADC10IADC模拟输入通道10 RxD4I串口4的接收脚 PWM7_3I/OPWM7的捕获输入和脉冲输出 T4_2I定时器4外部时钟输入 6246 P0.3I/O标准I/O口 AD3I地址总线 ADC11IADC模拟输入通道11 TxD4O串口4的发送脚 PWM8_3I/OPWM8的捕获输入和脉冲输出 T4CLKO_2O定时器4时钟分频输出 6347 P0.4I/O标准I/O口 AD4I地址总线 ADC12IADC模拟输入通道12 T3I定时器3外部时钟输入 6448 P5.2I/O标准I/O口 RxD4_2I串口4的接收脚 这个表格的内容和描述应该比较直白,左侧两列代表4种封装下对应的脚位编号,LQFP64S/QFN64的引脚最为全面,LQFP48/QFN48封装的引脚相对少一些,这是因为有的功能引脚被裁剪掉了,在表格中就会出现“-”符号。 引脚名称中的Px.y表示第x组端口的第y+1个引脚(如P1.0~P1.7)。稍微需要注意 的是,Ax、ADx和ADCx(其中,x表示具体的数值)的含义。Ax和ADx均表示地址总线,不可理解为模数转换,此处的“A”是Address(地址)的含义,此处的“D”是Data(数据)的含义,综合起来就表示地址/数据线的第x位。ADCx才表示模拟/数字转换的第x个通道,此处的“A”是Analog(模拟信号)的含义,此处的“D”是Digital(数字信号)的含义。引脚名称中还有类似“RxD4_2”这样的名称,符合“功能名称x_y”的结构,其实就表示串口4接收功能脚的第2个可用引脚位置。 2.6.2电源单元很重要 电源单元电路性能是整个最小系统工作的保障,必须考虑供电从哪里进?用什么样的接口?电源的通断控制需要怎么设计(考虑到STC系列单片机的烧录程序必须要断电再上电的过程)?电源的多路电压产生应该如何考虑?如何体现供电或者掉电的状态?还得考虑必要的电压选择和电源部分引针的扩展问题。基于以上问题,小宇老师给出一个电源部分参考设计,如图2.12所示。 图2.12STC8系列单片机最小系统电源电路原理图 分析该电路图,USB1为mini USB接口,这个接口是供电的输入端(后续还会讲解到下载电路,也用到了USB接口),由计算机提供输入,得到了5V电压的“VUSB”电气网络。S2是拨动开关,控制后级全部电路的电源通断,D1和R2组成电压指示电路,D1为发光二极管。C1、R1、S1和Q1组成了实用的一键冷启动电路,C1和R1组成了类似于RC高电平复位的电路,上电后会由高电平逐步下降至低电平,保持低电平常态时Q1开启(Q1为P沟道MOSFET),此时后级稳压芯片得电工作,单片机系统正常运行,若此时按下S1则Q1关闭,此时稳压输出全部断开,单片机系统整体掉电。这样一来就非常方便了,当需要下载程序时不用再去频繁拨动S2(毕竟拨动开关是机械的,存在使用寿命),只需要按下S1就可以实现断电后再上电的“冷启动”动作了。 U1是一款LDO芯片(低压差稳压芯片),实现了5V到3.3V的稳压输出,经过Q1和U1后得到了“V5”和“V3”电气网络,分别代表5V及3.3V电压,这两个电压正好是STC8系列单片机在产品中应用时最为常用的两种供电电压。 为了保证使用灵活,又增设一个3针排针P2,由一个短路跳线帽决定最终选择哪种电压成为单片机的工作电压(例如,V5与VCC短接,则工作电压为5V),这样一来,用户就可以轻松切换电压完成实际开发。最后,考虑实际实验时需要多个供电和共地的需求,再增设一个电源扩展引针P1方便开发者的应用。C5、C4、C3和C2负责提供电源部分的滤波和去耦合作用,为后级电路的正常工作提供保障。在进行PCB设计时,应该将这类功用的电容尽量放置在单片机的供电引脚近端,以保障滤波和去耦的有效性。在电容的容值上通常取值1个10μF电容和1个0.1μF电容并联的形式,大容值电容负责平滑脉动成分,小容值电容负责旁路电源中的高频干扰,若单片机工作频率大于20MHz,可以考虑再并联1个0.01μF电容以保障电源的稳定和纯净。 在STC8系列单片机中除了基本的电源引脚(VCC和GND)外,其实还有一些ADC转换有关的电气引脚(如AGnd、AVcc、ADC_VRef+引脚,其中,AGnd和AVcc已经与VCC和GND引脚合并,所以ADC有关引脚主要是指ADC_VRef+参考电压输入引脚),这些引脚也可以归属在电源类,处理的时候千万不能大意,若设计的外部参考电压存在波动或者引入了干扰就会直接影响到ADC转换后的数据精度及数据稳定性。如果在实际项目中对ADC转换精准度要求不高,可以直接把ADC参考电压引脚连到VCC引脚,这样虽然省事、省钱,但是会降低精度。所以小宇老师推荐读者使用一些性价比较高的基准电压源方案,经过实际使用及方案论证,推荐 如图2.13所示的TL431方案(图2.13(a))及REF3025方案(图2.13(b))供读者参考。 图2.13STC8系列单片机ADC外部电压基准电路原理图 2.6.3下载电路不可少 新买的组装计算机必须要安装操作系统才能用,新出的手机也要官方“刷机”后才能发行,单片机做产品也是一样的道理,必须要由我们事先对其“烧录”程序。这里的操作系统、刷机包、程序固件都属于软件部分,好比是给硬件灌注“思想”,让设备拥有想法和生命。所以说,在设计单片机最小系统的时候务必要做好程序下载的相关电路及接口。 由于电源部分采用了最常见的USB接口作为接入件,所以需要找一款USB转TTL电平串口的功能芯片,这里就不得不介绍国内把USB相关应用做得热火朝天的沁恒微电子了,市面上绝大部分开发板用的CH340/CH341系列芯片就是该公司的代表作之一。基于该公司的免晶振USB转串口芯片CH340E作为核心的下载电路如图2.14所示。 图2.14USB转TTL电平串口下载电路原理图 分析下载电路可知,左侧为mini USB接口,将数据线DP和DM连接至CH340E的UD+和UD-引脚上即可, 在设计PCB(印制电路板)时需要注意合理处理差分信号走线。CH340E是一个高性价比的USB总线转接芯片,用这个芯片就可以实现硬件全双工串口转换,芯片内置了收发缓冲区,支持50b/s~2Mb/s的通信速率,完全可以胜任STC单片机的程序烧录,多用于适配USB接口直接转换为串口的设备和应用。CH340E芯片内置时钟源,无须外部晶振,设计的时候可以采用黄豆般大小的MSOP10封装形式,其电路构造简单且体积小巧。应用该芯片时应在计算机端预先安装驱动程序, 读者可以访问沁恒微电子官网www.wch.cn进行下载和更多产品选型。 图2.14右侧电路非常重要,C1为CH340E内部稳压提供滤波,设计PCB时应将电容靠近引脚设计,R1为数据接收方向的限流电阻,取值100~300Ω都可以,“P31”电气网络连接至STC8系列单片机的P3.1引脚,D1为肖特基二极管,其作用是限制电流方向,避免CH340E反向为单片机供电造成单片机核心电路不能完全掉电的问题,D1阳极连接到单片机P3.0引脚。C2和C3是为CH340E进行供电滤波和去耦,以保证CH340E核心的稳定工作。 2.6.4复位电路要搞好 如果学习过“数字电子技术”这门课程的相关内容就肯定知道触发器和时序逻辑电路章节中必学的“初态”和“次态”问题,简单来说就是需要明确电路之前的状态才能推导出后面的状态,由此可见,在数字电路(特别是时序电路)中一个已知的初始状态有多么重要。我们学习的单片机其实就是一个数字/模拟的混合系统,很多片内资源和相关寄存器都需要一个默认的起始状态。 现在讲的“复位”,其作用就是通过相关电路产生“复位信号”让单片机能在上电后或者运行中恢复到默认的起始状态。“复位”动作之后单片机会产生一系列的重置操作,例如,I/O口默认的模式和状态、相关寄存器的默认取值、所有标志位的状态重置、通信/定时相关的数据内容设定等。由此可见,复位的意义就是让单片机相关单元进行初始重置且程序从内存起始地址重新执行。 要让单片机正确复位就需要在RST引脚(等同于RESET引脚)上产生符合复位要求的有效信号,STC89、STC90、STC10、STC11、STC12、STC15、STC8A和STC8F系列单片机需要高电平复位信号,STC8G和STC8H系列单片机需要低电平复位信号。 以STC早期单片机所需的高电平复位为例,单片机正常运行时RST引脚应保持低电平,当需要复位时应拉高RST引脚的电平,并维持“系统时钟源、内部电路单元稳定周期+两个机器周期”的时间长度(为保证有效复位,复位信号应持续20 ~200ms为宜)。在12T型单片机中,1个机器周期等于12个时钟周期,时钟周期其实就是振荡周期,比如晶振频率是12M,振荡周期就是1/12000000s,由此可见,在设计具体复位电路时需要考虑单片机工作时钟频率后再去匹配复位电路的相关参数。 在早期的51单片机产品中,复位信号一般是由外部复位电路产生,所以很多经典的单片机原理类书籍将复位电路称作最小系统的必要组成,随着单片机技术的不断发展,很多单片机不再单独拿出一个RST引脚仅作复位之用,而是在晶圆设计时集成了片内上电复位POR(Power On Reset)电路,STC8系列单片机就都具备片上POR电路。POR电路在芯片上电后会产生一个内部复位脉冲并使器件保持静态,直至电源电压达到稳定阈值后再释放复位信号。这样一来,用户就可以省略外部复位电路将RST引脚闲置或者当作普通I/O口使用。 如果读者实际应用的单片机不具备片上POR电路也没事,可以搭建符合复位要求的外置电路产生复位信号。一般来说,单片机复位电路主要有四种类型: 微分型复位电路、积分型复位电路、比较器型复位电路和看门狗型复位电路。接下来,小宇老师就拿出相对简单的微分和积分型电路进行讲解,让读者能有一个直观的感受。 常见的阻容式微分复位电路如图2.15(a)所示,电路中的“Reset”电气网络连接至单片机“RST”引脚。该电路上电后的波形如图2.15(b)所示,其波形在上电后先是高电平,经过100ms后跌落到了1V以下最终保持低电平状态,我们常将其称为“高电平”复位电路。 图2.15微分型高电平复位电路原理图 分析微分复位电路,该电路的组成十分简单,其核心实现仅由1个电阻和1个电容组成,外加的S1按键主要实现手动复位功能,当S1按下时“Reset”电气网络被强制拉高实现复位。在设计该电路时一定要先根据单片机工作的时钟频率去考虑阻容的取值,若系统选用12MHz石英晶振,则1个机器周期就是1μs,复位信号的脉冲宽度最小也要在 2μs以上,但是真正设计时最好不要贴近理论值去构造电路,复位信号脉冲宽度以20~200ms为宜。当晶振频率大于或等于12MHz时,常见取值C1为10μF,R1为10kΩ。 当系统上电时,C1相当于通路,“Reset”电气网络上电瞬间为高电平,随着R1不断泄放C1的电荷,“Reset”电气网络的电压逐渐降低,最终降到低电平区间。在放电的过程中“Reset”电气网络的高电平持续了100ms左右才跌落到1V以下,这远大于 两个机器周期的复位时间要求,即复位有效。 若将图2.15中的电阻R1和电容C1互换位置就可以变成阻容式积分复位电路,电路原理图如图2.16(a)所示。该电路上电后的波形如图2.16(b)所示,其波形在上电后先是低电平,然后经过50ms左右就超过了1.6V并继续上升,最终保持在高电平电压区间,我们常将该电路称为“低电平”复位电路。当系统上电时C1相当于通路,故而“Reset”电气网络上电瞬间为低电平,随着电源通过R1不断地向C1充电,“Reset”电气网络的电位逐渐抬升并最终保持高电平。外加的S1按键主要实现手动复位功能,当S1按下时“Reset”电气网络被强制拉低实现复位。 图2.16积分型低电平复位电路原理图 阻容式复位电路非常简单,成本也很低,但是可靠性如何呢?可能有的读者会说: 市面上的开发板都用这个电路,我在实验室也用这个电路,从来没遇到过问题,而且这种经典电路每本书都这么讲的,你敢说不可靠?小宇老师得站出来说: 这电路确实简单,但可靠性确实不高。首先来说,阻容器件本身存在器件误差,误差会直接导致RC时间常数和充放电时间的差异,批量制造时难以保证产品的一致性。其次,阻容器件存在老化现象和温漂问题,在长期使用或者严苛温度环境中容易造成较大误差导致失效。最后,简单的阻容复位电路会有电容的迟滞充放电问题,导致复位信号可能不满足复位电平阈值要求,且面对来自电源的波动或者快速开关机情况会出现无法复位的问题。 朋友们可能会说,器件参数误差、老化和温漂在一般产品中都可以接受,一致性问题也没有那么高要求,本着“能用就行”的原则,这个电路也凑合用吧!也不是不行,但是可以稍微改进下,且看小宇老师做个实验。 以如图2.15(a)所示的阻容式微分复位电路为例,若将电源周期性通断,其复位波形就不再完美了,实际波形如图2.17(a)所示,复位波形由于电容的缓慢放电原因出现了下降迟缓且无法到达低电平阈值的问题(也就是复位电压“下不去”的情况),这种复位信号就不能保证单片机系统的有效复位,若工业控制有关的板卡遇到电源波动出现无法复位的情况,无疑是危险的。 图2.17微分型高电平不可靠复位及优化实验 若将微分复位电路按图2.17(b)改进,在电阻R1的两端并联一个D1,再次将电源周期性通断,复位波形就会变成如图2.17(c)所示的波形。从波形上看,电路改造后复位波形得到了明显的改善,图中波形下降迅速且可以下降到低电 平阈值以下,不会出现频繁上电时复位电压“下不去”的情况。 这个“不起眼”的D1为电容C1在掉电情况下提供了一条迅速泄放电荷的通道,这样一来就可以保证在电源频繁波动或者周期性上电情况下的正常复位。有的朋友可能要说了,这个复位波形看起来还是很“怪异”啊!虽说是高电平复位波形,但是看起来和“毛刺”一样,就不能通过什么电路把复位信号搞成类似于高低电平的波形样式吗? 当然也是可以的,再把电路优化一次。添加三极管和二极管进去,最终搭建出一种阈值电压比较型高电平复位电路,如图2.18(a)所示。电路的目的就是构造一个“复位阈值电压比较器”,电路中的稳压二极管D1(实际选用3.3V稳压管)和开关二极管D2(实际选用1N4148,导通压降为0.6V左右)决定了复位信号的电平阈值,大致就是3.3V+0.6V=3.9V(朋友们也可以更替D1的稳压参数构成更多复位阈值)。电路中的三极管Q1及外围电路构成了一个简单的比较器电路,当电源波动的时候也可以有效地根据阈值比较完成复位动作。R2的大小可以改变输出信号的驱动能力,R1和C2一起决定了复位延时的长度,C1是为了抑制和旁路电源中的高频噪声。该电路上电后的复位波形如图2.18(b)所示,这样的波形总算是“漂亮”了。 图2.18一种阈值电压比较型高电平复位电路原理图 虽说如图2.18(b)所示波形的高电平末端有个向上的小“凸起”,但这并不影响复位信号的有效性,因为复位电压只要在1.6V以上就满足STC高电平复位系列单片机的复位要求了(STC各系列单片机的复位电平阈值稍有差异,但是该电路可以在全系列STC单片机中适用),如果有朋友和小宇老师一样是个“强迫症”,那也可以微调R1和C2的取值去优化波形。 基于如图2.18(a)所示的高电平复位电路,也可以稍加变形做成如图2.19(a)所示的“低电平复位电路”,该电路适用于低电平复位的单片机,如STC8G、STC8H系列。该电路上电后的复位波形如图2.19(b)所示,该波形相当于图2.18(b)的取反波形。 图2.19一种阈值电压比较型低电平复位电路原理图 由此可见,小电路也有很多讲究。此处的改进只是抛砖引玉,朋友们别被“抛出去的砖”砸晕了,复位电路还存在很多改进电路和一些实际问题,希望读者可以自行延展,单片机复位端口处还可并联0.01~0.1μF的瓷片电容,以抑制电源高频噪声干扰或配置施密特触发器电路,进一步提高单片机对串入噪声的抑制。 可能有的朋友还是不满意这种RC充放电电路产生的复位波形,能不能有什么电路或者器件使用简单又能产生类似方波一样的复位波形呢?答案是肯定的。想要高可靠复位单元可以选择专用的复位监控芯片,如飞利浦半导体、美信半导体公司均有此类产品,这些芯片的体积小、功耗低、门槛电压可选。集成度的提高使抗干扰能力和温度适应性都得到了大幅提高,可以保证系统在不同的异常条件下进行可靠的复位。其原理其实是通过确定的电压阈值启动复位操作,同时排除瞬间干扰的影响,又有防止单片机在电源启动和关闭期间的误操作效果,以保证程序的正常执行。 以美信公司生产的MAX810这款高电平复位电路专用芯片为例,搭建如图2.20(a)所示电路,上电后测量“Reset”电气网络可以得到如图2.20(b)所示波形,这个波形就堪称“完美”了。 图2.20专用复位芯片MAX810电路及复位波形 常见的低电平复位电路有MAX705、MAX706、MAX809、MAX811等器件。高电平复位电路有MAX810、MAX812等器件。而MAX707、MAX708、MAX813L等器件同时有高、低电平复位输出信号和看门狗输出,在实际产品中经常会看到它们。需要注意的是,不同芯片的复位脉冲时间不一样,但是一般都可以达到100~200ms,完全满足常见处理器对复位时间的需求,有的芯片还支持复位阈值设定、备份电池切换、看门狗定时器、门限值检测器、复位脉冲极性选择等更为高级的功能,此处就留给读者朋友们自行去研究了。 2.6.5时钟电路真奇妙 小学的时候最喜欢做眼保健操,跟着旋律“1234,2234”,这旋律控制着我的每一个动作,踩着节拍完成了整个过程。细细想来,单片机的工作也是一样,在一定的“节拍”下锁存和处理数据,产生不同的状态和时序,完成不同的功能。如果没有这个节拍,单片机就无法执行程序和体现功能,这里的“节拍”就是时钟信号,好比是单片机系统中的“心脏”。 在早期的51单片机产品中,时钟信号一般是由外部振荡电路产生,所以很多经典的单片机原理类书籍也将时钟电路当作最小系统的必要组成之一,随着单片机技术的不断发展,为了进一步降低产品的EMI(Electro Magnetic Interference,电磁干扰),很多单片机在晶圆设计时内置了时钟源,片内RC时钟源的频率还支持多种选择,这样一来开发人员就可以省去外部时钟电路,单片机的时钟I/O引脚也可以节省出来当普通I/O引脚使用。 但是话又说回来,片上时钟源和外部时钟源还是有区别的,一般来说,片上时钟源的启动速度快,功耗适中,但是容易受到温度的影响产生频率偏差,若频率偏差严重就会影响程序运行(特别是通信类程序)。还有就是片上时钟的一致性难以保证,根据批次不一样或者制造上的差异性会导致芯片时钟频率不尽相同,但是对于要求不高的场合,使用内部时钟源倒也无妨。外部时钟源的启动需要一个稳定的时间,功耗也相对大一些,但是产生的时钟精度较高,不管是用无源石英晶体还是有源晶振,其信号的稳定度都较好,在持续性的通信应用上还是推荐外部时钟源作为单片机工作时钟。 有的朋友可能会有疑惑,为什么小宇老师刚刚说到“无源石英晶体”而不是“无源晶振”呢?我们平时将无源石英晶体说成“晶振”其实并不准确,无源晶体其实就是在石英晶片上电镀引出了电极,一般是两个脚,不用区分正反,在晶体结构外面装上了金属外壳,然后再在外壳上激光打字。无源晶体要想起振,一般还需要辅助外围电路才行。真正意义上的“晶振”是在晶体的基础之上额外添加了振荡、放大和整形电路后所形成的单元,常见的是4个脚,需要为其供电,然后从一个脚输出稳定可靠的时钟信号,这种就是我们说的有源晶振。 说了这么多,我们也不知道用于产生时钟信号的“心脏”长什么样子,接下来回到 “电子工艺”课程,看看如图2.21所示的几个常用于产生时钟信号的器件实物。 图2.21常见时钟产生类元器件实物图 先来认识第一行的器件,从左至右首先是直插式圆柱状无源晶体,常见大小有 2mm×6mm和3mm×8mm,常用于体积受限的场合,如U盘; 接着是直插式HC49S无源晶体,这种晶体外形最为常见; 然后是直插式HC49U无源晶体; 最后是贴片式HC49S无源晶体。第二行从左至右首先是贴片式晶振,单从样式上看是无法区分有源和无源的,用户需查阅产品手册后加以区分,这种贴片式晶振常见2脚和4脚的,常用的器件 封装有3225、3215、5032等; 接着是MC306封装的晶振,常用的还有长条形的MC146; 然后是温补晶振TCXO,其体积稍大,内部设计有温度补偿电路和微调窗口,因其温度特性好、频率偏差小,价格也稍微贵一些,类似的还有恒温晶振OCXO,价格就比TCXO还要贵一些; 最后是SiTime公司推出的可编程晶振,该器件有别于传统器件,用户可以通过编程修改振荡频率,支持1~725MHz内的频率调整,在一些特殊的应用场合会非常适用。 说到这里,我忍不住要问: 石英晶体内部长什么样子呢?要解决这个问题很简单,我们干脆动手拆解一个直插式HC49U无源晶体吧!朋友们是不是感觉有点“残忍”啊?那我们就选一个实验室里放了 N年且引脚发生严重氧化的晶体来做实验,拆解的过程如图2.22所示。首先打开晶体的金属外壳后发现了内部有一层网状隔片,目的是为了让晶体与外部金属壳绝缘和防震,拆除这层隔片后就看到核心石英晶体和电极了,用手轻轻一掰,“咔”的一声就碎了,真是“嘎嘣脆”。通过这个破坏性实验我们学到了什么呢?那就是晶体元器件在保存和使用时要避免磕碰,以免损坏内部石英晶体,焊接的时候也不要持续高温,以免晶体引脚升温太快引起内部电极与石英晶体片之间的碎裂,所以说,石英晶体这种器件是外表看着“皮实”,但“内心”脆弱的器件。 图2.22HC49U无源晶体拆解过程 拆解完了晶体,心里就非常痛快了,接下来再看看振荡电路的相关知识。单一的石英晶体无法产生稳定的振荡信号,必须辅助相关电路,常见的晶体振荡电路可以用皮尔斯振荡电路、考毕兹振荡电路和克拉普振荡电路。而用在单片机上的电路几乎都是皮尔斯振荡器(Pierce Oscillator)结构。哦!这个人我知道,就是那个打NBA的保罗·皮尔斯对吧?错!这里的“皮尔斯”是乔治·皮尔斯。他发明了一种电子振荡电路,特别适用于配合石英晶体振荡以产生振荡信号。皮尔斯振荡器衍生自考毕兹振荡器,其电路构成十分简单,我们自己也可以动手搭建,其电路原理如图2.23(a)所示,用示波器测量“OUT”电气网络的输出波形如图2.23(b)所示。 图2.23皮尔斯振荡器电路原理及输出波形图 分析该电路,电路采用单极性5V供电,U1所选型号为CD4069,该芯片是一款CMOS电平输入/输出的高速反相器(内含6个反相器单元),反相器在电路中等效于一个较大增益的放大器单元,在整个电路中只用了CD4069中的两个反相器单元,也就是1A、1Y、2A和2Y这4个功能引脚,其他的功能引脚都做了接地处理。 Y1就是无源的石英晶体,这里选择的是标称振荡频率为16MHz的HC49S晶体。R1是反馈电阻,通常取值都在兆欧级别,有了这个电阻就可以使反相器在晶振振荡初始时处于线性工作区,可以帮助晶体起振。R2可以调整驱动电位,以防止晶振被过分驱动而加速老化和造成晶体损坏。这两个电阻的取值非常关键,一旦取值不当就会产生高次谐波(一般是3次谐波,即Y1为xMHz时输出信号为3xMHz),建议朋友们在搭建电路时合理考虑。 C1、C2为负载电容,它们可以帮助起振,一般选用20~30pF且频率特性较好的电容(如瓷片电容、独石电容或CBB电容),其取值大小对振荡频率有微调作用(所以晶体的实际起振频率一般都不是绝对准确的标称频率)。负载电容的取值受两方面影响,一是晶体器件实际的电容参数,二是受PCB布线、焊盘和板层厚度等参数间接引入的寄生电容或杂散电容影响。所以 在进行实际电容选取时不一定要与晶体器件数据手册中的负载电容参数完全等值,可以按照实际参数去做调整(顺便 说一下,有的单片机芯片时钟引脚单元内部甚至自带了不同挡位的负载电容,如TI公司生产的MSP430x2xxx系列单片机,该系列产品内部就支持1pF、6pF、10pF和12.5pF的四档负载电容可选,这种单片机时钟引脚上只接个晶体就行,无须外围辅助电路也能正常工作)。 经过电路搭建,CD4069芯片的第4脚输出的“OUT”就是时钟信号,原则上一个石英晶体振荡出的波形可以同时供给很多芯片使用,不一定是一个单片机就需要一个晶振,当然,也要考虑输出信号的负载驱动能力,还得考虑PCB上时钟走线带来的干扰。 学完皮尔斯振荡器的简单电路后,有的朋友又会产生更大的疑惑,大家会想STC单片机的时钟电路根本不用CD4069啊?哪儿来的什么R1和R2啊?我一般都是接一个晶体和两个负载电容就行了啊?确实如此,一般来说,XTAL1和XTAL2是STC系列单片机的振荡信号接入引脚(也可以仅由XTAL2单端接入时钟信号)。其模型仍然是皮尔斯振荡器,只不过将振荡所需的反相器和相关电阻内置到了单片机内部罢了,其电路结构如图2.24所示。 图2.24STC系列单片机时钟单元内/外结构 皮尔斯振荡器因结构简单,非常适用于各种数字IC的设计制造。很多IC在设计的时候就内建了高速反相器与电阻,只要在外部加上石英晶体与负载电容就可以工作。由于石英晶体频率稳定,故而电路成本较低,因此广泛用于各种消费电子产品之中。 电路讲完了就来看看“时钟信号”到底有什么作用?之前说了单片机是工作在一定“节拍”下的,最快最直接的“节拍”就是由外部晶体振荡电路或者内部RC振荡器提供的时钟源频率,这个时钟称为“振荡周期”,在此基础之上还有状态周期、机器周期(CPU周期)和指令周期,所以“振荡周期”越小,则完成一条指令所需的时间就越短,简单来说就是给的“节拍”越快,单片机工作的处理速度就越高。但是时钟频率也要有个“度”,受限于单片机内部电路的电气指标和门电路的动态特性,单片机时钟频率一般都有个范围,例如,STC8H系列单片机可以支持4~45MHz工作频率。 必须说明的是,晶体的标称频率不能随意选择,有些应用中对振荡频率是有要求的。举个例子,有个朋友做STC8串口通信程序的时候用的是外部石英晶体振荡电路,石英晶体选择的是12MHz,波特率是9600b/s,上电后单片机可以正常工作,串口助手也能连续收到单片机的字符数据,但是奇怪的是接收数据开始的时候是正常的,慢慢地就开始乱码,到后面居然不能正常接收了,他赶紧问小宇老师,这是为啥呢?我让他微调了程序并把晶振换成11.0592MHz后通信正常了! 这是为啥?按理说12MHz晶体产生的振荡周期是1μs,而11.0592MHz晶体产生的振荡周期是1.085μs,这两个周期相差根本就不大,并不会过多影响单片机的执行速度,它们的主要差异是用在串口通信时,12MHz作为数值代入波特率计算后得到的偏差较大,在持续性通信过程中容易造成时钟的“累积误差”,每次都“慢半拍”持续下去的话就不止“半拍”了。 所以在特殊的应用中产生了看似奇怪的石英晶体标称频率,相似的还有用在DTMF(双音多频)编/解码上的3.579545MHz,又有用在RTC(实时时钟)上的32.768kHz,还有用在HF频段RFID(射频识别)上的13.56MHz等,这些频率值看似“怪异”实则有特殊的适用。所以,选择合适的晶体或者晶振非常重要,选型的时候一定要考虑好封装尺寸、负载电容、标称频率、温度范围、频率偏移、频率老化时长等参数。 2.6.6接口外围要配套 本章最后一节要谈一谈单片机最小系统设计时应该怎样考虑接口和外围的问题。最小系统不同于开发板,资源设计过多显得“累赘”,接口设计不合理又觉得“不灵活”,所以在设计最小系统时一定要突显易用性、灵活性、扩展性。接下来小宇老师以4个主要内容展开讲解。 1. 电源类接口要够用 很多小系统设计的时候仅引出1~2对VCC和GND电气网络,后续在连接扩展模块时都不知道从哪里取电,这样的设计就比较头疼,故而电气类引针至少成对出现5对或以上,位置上可以零散分布。如果小系统用的是USB接口来承担串口通信和供电的双重“任务”,必须要考虑USB的电流驱动能力。一般来说,笔记本电脑/台式PC的USB最大电流也就是500~700mA,若小系统要外加驱动电路等就需要在供电接口上考虑增设DC插座或者排针。若设计的小系统是基于STC8系列带ADC参考电压引脚的单片机,那就切记不要将AVref引脚固定连接到电源,推荐做“非固定连接”。例如,可以使用短接焊盘做连接处理,需要的时候可以点锡连接,不需要即可吸锡断开,推荐增设外部电压基准源以提升ADC数据精度。 2. 通信接口要做全 单片机小系统能做的事情很局限,我们需要将成组的I/O接口、SPI接口、I2C接口、串口等通信和扩展类有关的接口单独做出来,配合明显的丝印加以区分,这些接口能做的事情太多了。例如,有了成组的I/O接口就能驱动液晶或者外扩存储资源,有了SPI接口可以上手文件系统和操作SD卡,有了I2C接口可以驱动收音机模块或者其他I2C设备,有了串口能与PC交互,或者用串口连接ESP8266等模块实现无线AP接入,又或者用蓝牙实现无线数据透传,又或者用合宙科技Air724模组自己做个手机终端,再或者用CH9121芯片实现单片机到以太网的接入与数据收发等。 3. 特殊通道要引出 在STC8系列单片机中有很多信号输入/输出通道,例如,启用ADC转换时要将模拟信号连接至ADCx通道 ; 又如,PWM信号输出时要将PWMx_y通道引出连接至驱动单元; 再如,外部脉冲周期测定时还需要将待测信号送至CCP输入通道进行捕获等。这些通道上最好不要设计固定电路,哪怕是LED驱动电路也不要加,否则会干扰通道的输出或者电压采集,实在要加也可以,一定要配备短路焊盘,方便将其分离。 4. 核心外围要考虑 作为“五脏俱全”的小核心应该配备必要的外围,起码要有USB转串口单元(可选择沁恒微电子的CH340E方案)、要 有几个LED或者1颗RGB灯珠(用 作基本I/O验证和色彩指示)、要 有几个用户按键做交互、要具备复位按键或者一键下载电路(参考 2.6.2节的电路设计),在基础外围之上还可以添加一些功能接口座子,如nRF24L01无线数传模块接口、蓝牙接口、ESP8266模块接口、传感器模块接口、数码管模块接口、矩阵键盘模块接口、点阵/字符液晶模块接口等接口座子。若有需要,再添加一个一体化红外接收头、AT24Cxx器件(以便学习I2C通信)、W25Qxx器件(以便学习SPI通信)、MAX485器件(以便学习Modbus协议及RS485通信)等都是可以的。 好了!强制打住,小宇老师一开讲就刹不住车了,啰唆了这么多,希望朋友们可以对STC系列单片机有一个初步的认识。搞清楚单片机选型时的相关名词,知道引脚的作用,拿到一款单片机后在脑海里就可以形成小系统的初步设计,把电源单元、下载电路、复位电路、时钟电路和接口外围都考虑好。学了这一章之后,朋友们能不能动手自己搭建一个STC8单片机小系统呢?要是有信心就开始网上买件儿搭建吧!要是还不满足那就学习下电路板设计,推荐用立创EDA软件设计一款属于自己的PCB,哪怕再丑再困难也要搞出第一版试试看,留下自己的拙作是为了印证后续的成长!朋友们加油!