ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

STC8H8K64U最小系统板设计:从原理图到PCB的实战指南

STC8H8K64U最小系统板设计:从原理图到PCB的实战指南 1. 为什么选STC8H8K64U做最小系统板1.1 这颗芯片到底适合谁STC8H8K64U是STC近两年主推的8位增强型8051内核单片机64KB Flash、8KB SRAM、最高主频跑到48MHz自带硬件USB、4路UART、3路SPI、多路PWM和12位ADC。我第一次拿到样片的时候最直观的感受是这玩意儿把以前做最小系统板要外挂的一堆东西全塞进去了。以前用STC89C52RC做板子USB转串口要挂CH340或者CP2102晶振要外挂复位电路要自己搭现在STC8H8K64U直接内置USB控制器和内部高精度时钟外围元件能砍掉一大半。那它适合谁如果你是刚学完51单片机、想从开发板过渡到自己画板子的阶段这颗芯片是很好的练手对象。封装有LQFP48、QFN48、TSSOP20几种LQFP48引脚间距0.5mm对新手焊接稍微有点挑战但嘉立创打样SMT贴片可以省掉这个烦恼。如果你是有经验的工程师想找一个便宜、供货稳定、开发环境简单的MCU做小批量产品STC8H8K64U的BOM成本能压到很低整板物料算下来不到十块钱。1.2 最小系统板到底最小到什么程度很多人对最小系统板的理解有偏差以为元件越少越好。实际上最小系统的定义是让单片机能够正常运行程序所需的最少外围电路。对STC8H8K64U来说这个最少包括电源部分5V转3.3V的LDO虽然芯片宽压3.0V到5.5V但USB通信要求3.3V去耦电容每对VCC/GND引脚配一个0.1uF整体再并一个10uF复位电路STC8H内部有上电复位但建议保留外部复位按键和RC网络时钟电路内部IRC够用但高精度场合需要外挂晶振USB接口Type-C座子加两颗限流电阻下载接口STC支持USB直接下载也可以留UART排针指示灯电源指示和用户LED各一个我见过有人把去耦电容省掉结果USB枚举时好时坏查了半天才发现是电源纹波太大。所以最小不等于最省该有的保障电路一个都不能少。1.3 立创EDA在这类项目里的真实定位立创EDA现在叫嘉立创EDA分标准版和专业版两个分支。标准版适合快速画简单板子专业版在多层板、差分对、设计规则方面强很多。我个人的使用习惯是两层板用标准版四层以上或者有阻抗要求的用专业版。STC8H8K64U最小系统板是典型的两层板标准版完全够用而且标准版的元件库和嘉立创商城直接打通选型的时候能直接看到库存和价格这点比KiCad方便。有人问立创EDA和KiCad哪个好用我的看法是如果你主要在国内打样立创EDA的生态闭环更省事如果你要做复杂的开源硬件项目、需要版本管理KiCad更合适。这个项目里我全程用立创EDA专业版因为专业版对铺铜和设计规则检查的处理更细致后面讲布线的时候会具体说。2. 原理图设计从芯片手册到可落地图纸2.1 芯片引脚分配的前期规划画原理图之前我习惯先在纸上把引脚分配列清楚。STC8H8K64U的LQFP48封装有48个引脚其中P0到P7共40个IO剩下的8个是电源、地和特殊功能引脚。分配的时候有几个原则第一USB的D和D-必须接在P3.0和P3.1上这是芯片内部固定的没得选。第二串口下载用的UART1默认在P3.0和P3.1和USB复用所以如果同时要USB和串口得注意分时复用的问题。第三ADC输入尽量分配在P1口因为P1口靠近模拟电源引脚噪声更小。第四PWM输出优先放在P2口方便布线。我一般会做一个表格把每个引脚的功能、连接目标、备注列出来画图的时候直接照着填避免漏接或者接错。引脚号名称功能分配连接目标备注1P0.0GPIO排针J3-1预留2P0.1GPIO排针J3-2预留...............15P3.0USB D-Type-C D-固定16P3.1USB DType-C D固定17P3.2INT0按键K1外部中断38VCC电源3.3V主电源39GND地GND主地这个表格看起来简单但实际画图的时候能帮你省掉大量返工时间。我早期做板子的时候不喜欢列这个结果有一次把ADC参考电压引脚接到普通IO上板子打回来才发现只能飞线补救。2.2 电源部分LDO选型和去耦电容布局STC8H8K64U的工作电压范围是3.0V到5.5V看起来可以直接用5V供电。但USB通信要求D和D-的电压在3.3V左右所以如果要用USB功能必须把系统电压降到3.3V。我选的是AMS1117-3.3SOT-223封装最大输出1A压差1.1V左右。5V输入的时候3.3V输出完全没问题。这里有个细节AMS1117的静态电流比较大大概5mA左右如果做电池供电的项目这个LDO就不合适了得换低静态电流的型号。但最小系统板一般用USB供电5mA的损耗可以忽略。去耦电容的布局是很多人容易忽略的地方。我的做法是每个VCC引脚旁边放一个0.1uF的0402或0603电容尽量靠近引脚整个板子的电源入口放一个10uF的钽电容或者MLCC模拟电源引脚如果有单独用一个0.1uF加一个1uF的电容在立创EDA里画原理图的时候我习惯把去耦电容画在芯片符号的旁边而不是统一放在图纸角落。这样画PCB的时候电容自然就在芯片附近不用再翻原理图找对应关系。注意AMS1117的输出端必须接至少10uF的电容否则容易自激振荡。我实测过只接0.1uF的时候输出电压会有几百毫伏的纹波换成10uF之后就干净了。2.3 USB接口电路Type-C座子的正确接法Type-C座子有16个引脚但做USB 2.0设备只需要用到其中几个。我选的是16Pin的贴片Type-C母座立创商城上型号是TYPE-C-31-M-12。接线的时候注意VBUS接5V两个VBUS引脚都要接因为单个引脚过流能力有限GND接系统地四个GND引脚都要接D和D-分别接芯片的P3.1和P3.0CC1和CC2各接一个5.1K电阻到地这是Type-C设备识别用的其他引脚悬空D和D-线上我一般会串两个22欧姆的电阻虽然STC8H内部有匹配电阻但外部加一对能改善信号完整性。实测不加也能用但加了之后USB枚举成功率更高尤其是用质量一般的线材时。2.4 复位和时钟电路哪些能省哪些不能省STC8H8K64U内部有上电复位电路理论上不需要外部复位。但我建议还是保留一个复位按键和RC网络原因有两个一是调试的时候经常需要手动复位没有按键很不方便二是内部复位电路在电源缓慢上升的场合可能不可靠外部RC能提供额外的保障。复位电路的标准接法是一个10K电阻从RST引脚接到VCC一个0.1uF电容从RST接到GND再并一个按键到GND。这样上电时电容充电产生复位脉冲按键按下时手动复位。时钟方面STC8H8K64U内部IRC出厂校准到±0.3%做串口通信完全够用。但如果要做USB通信内部时钟的精度就不够了必须外挂晶振。USB协议要求时钟精度在±0.25%以内内部IRC温漂之后可能超标。我一般会焊一个12MHz的贴片晶振配两个22pF的负载电容。如果不用USB晶振可以省掉用内部时钟就行。2.5 原理图绘制中的立创EDA操作技巧在立创EDA专业版里画原理图有几个操作能大幅提升效率第一用设计管理器功能。把整个项目分成电源、MCU、接口、指示灯几个模块每个模块单独画最后用网络标签连接。这样图纸看起来清晰改起来也方便。第二善用阵列粘贴。比如要放10个排针先放一个设置好间距然后用阵列粘贴一次性放完比一个个拖快得多。第三给关键网络加颜色。我习惯把电源网络设成红色地设成黑色USB差分对设成蓝色。这样检查的时候一眼就能看出有没有接错。第四用设计规则检查DRC功能。画完原理图之后跑一遍DRC能查出悬空引脚、重复网络标签、电源短路等问题。我每次画完都会跑至少能发现两三个疏忽。3. PCB布局布线从原理图到可制造板子3.1 板框设计和元件布局原则最小系统板的尺寸我一般控制在50mm×30mm以内这个尺寸在嘉立创打样最便宜而且方便插在面包板上。板框用圆角矩形半径2mm避免尖角划手。元件布局的顺序是先放连接器再放主芯片最后放阻容。连接器的位置决定了板子的使用方式Type-C座子一般放在板子一侧排针放在另一侧按键放在手指容易按到的位置。STC8H8K64U放在板子中央周围留出足够的空间放去耦电容。布局的时候有几个硬性要求去耦电容必须紧贴芯片的VCC引脚距离不超过2mm晶振尽量靠近芯片走线短而直晶振下方不要走其他信号线USB差分对走线尽量等长长度差控制在5mil以内复位按键远离高频信号避免误触发我见过有人把晶振放在板子边缘走线绕了半个板子结果USB根本枚举不了。后来把晶振移到芯片旁边问题立刻解决。所以布局阶段多花十分钟布线阶段能省一小时。3.2 星型接地在两层板上的实现方法星型接地是模拟电路里常用的接地方式核心思想是让每个子系统的地电流单独回流到电源入口避免相互干扰。在两层板上实现星型接地我的做法是在电源入口处设定一个星点所有地线从这个点辐射出去。数字部分的地、模拟部分的地、功率部分的地分别走不同的路径回到星点。具体到STC8H8K64U最小系统板数字地芯片的GND引脚、去耦电容的地、排针的地模拟地ADC参考电压的地、晶振负载电容的地功率地LDO的地、USB座子的地在两层板上底层一般做完整的地平面但为了星型接地我会在底层用走线而不是铺铜来连接各地。具体操作是底层不铺铜用宽走线至少20mil从各区域的地引脚连到星点。顶层在空白区域铺铜但铺铜和底层地之间只通过星点连接。这样做的好处是地电流路径可控不会出现地环路。缺点是底层没有完整地平面信号回流路径变长。对于48MHz的STC8H8K64U来说这个影响可以接受因为它的信号上升沿不算特别快。如果跑USB全速12Mbps差分对的回流路径要特别注意我一般会在差分对下方铺一小块地铜并通过过孔连接到主地。提示立创EDA专业版里可以用铺铜管理器设置不同网络的铺铜优先级。把GND设成最高优先级铺铜的时候会自动避让其他网络。3.3 电源走线宽度计算和过孔选择电源走线的宽度要根据电流来算。STC8H8K64U全速运行的时候电流大概20mA加上USB和LED总共不超过100mA。按照1oz铜厚、温升10度的标准10mil的走线能过500mA左右所以电源线用15mil到20mil就绰绰有余了。但LDO的输入输出线要加宽因为AMS1117最大能输出1A虽然实际用不到但留余量总是好的。我一般用30mil走5V和3.3V的主干分支用15mil。过孔的选择也有讲究。信号过孔用0.3mm内径、0.6mm外径电源过孔用0.5mm内径、1.0mm外径。过孔数量要足够每个电源引脚旁边至少放一个过孔连接到地平面。我数过STC8H8K64U的LQFP48封装有12个GND引脚每个引脚旁边都放一个过孔一共12个再加上去耦电容的过孔总共20个左右。3.4 USB差分对的布线要点USB全速模式的差分阻抗要求是90欧姆±10%在两层板上实现这个阻抗有点难度因为板厚1.6mm走线和地平面的距离太远。我的做法是差分对走线宽度8mil间距8mil差分对下方铺地铜通过密集过孔连接到主地差分对长度尽量短不超过30mm差分对之间不走过孔如果必须过孔两个信号一起过保持对称实测下来这个参数在嘉立创的JLC04161H-3313板材上差分阻抗大概在85到95欧姆之间满足USB全速的要求。如果要跑USB高速480Mbps两层板就不够了得用四层板把差分对走在顶层第二层做完整地平面。3.5 丝印和位号图的导出板子画完之后丝印的整理也很重要。我习惯把元件位号放在元件轮廓旁边不要压在焊盘上。极性元件的丝印要标清楚比如Type-C座子的方向、LED的正负极、芯片的第一脚。立创EDA专业版导出位号图的方法是在PCB界面点击导出→位号图选择PDF格式设置好比例和层。导出的位号图可以打印出来贴片的时候对照着检查。我每次打样回来都会打印一份位号图贴片之前先核对一遍元件方向避免焊反。4. 打样、焊接与调试实战4.1 嘉立创打样的参数设置和注意事项在嘉立创下单的时候有几个参数需要特别注意板材FR-4Tg150这是最常用的价格便宜层数两层板厚1.6mm铜厚1oz阻焊颜色绿色最便宜其他颜色要加钱丝印颜色白色表面处理有铅喷锡最便宜或者无铅喷锡我一般选绿色阻焊、白色丝印、有铅喷锡5片板子不到30块钱。如果要做SMT贴片需要额外提供坐标文件和BOM表。立创EDA可以直接导出这些文件在制造→SMT菜单里操作。注意导出坐标文件的时候要确认原点的位置。我习惯把原点设在板子左下角这样坐标都是正数方便核对。4.2 手工焊接LQFP48封装的技巧LQFP48的引脚间距是0.5mm手工焊接需要一点技巧。我的步骤是第一步在焊盘上涂一层薄薄的助焊膏不要太多否则容易连锡。第二步用镊子把芯片放上去对齐第一脚。对齐的时候用放大镜或者手机微距镜头看确保引脚和焊盘一一对应。第三步先焊对角两个引脚固定芯片。焊的时候烙铁头温度设到350度接触时间不超过2秒。第四步用拖焊的方式焊剩下的引脚。烙铁头上沾少量焊锡沿着引脚一排拖过去。如果出现连锡用助焊膏加吸锡线清理。第五步焊完之后用洗板水清洗然后在放大镜下检查有没有虚焊或者连锡。我焊第一块板子的时候连锡了七八个引脚清理了半个小时。后来发现关键是助焊膏要涂够烙铁头要保持干净每拖两排就擦一次烙铁头。4.3 上电前的静态检查和上电测试板子焊完之后不要急着上电。先用万用表做静态检查测VCC和GND之间的电阻正常应该在几百欧姆以上。如果接近0说明有短路测每个电源引脚对地的二极管压降正常在0.5V左右检查Type-C座子的VBUS和GND有没有接反静态检查没问题之后再上电测试。我一般用可调电源限流设到100mA电压从0慢慢升到5V。如果电流突然变大立刻断电检查。上电之后先测3.3V输出是否正常。然后用STC的下载软件检测芯片。STC8H8K64U支持USB直接下载插上Type-C线打开STC-ISP软件如果能看到芯片型号说明最小系统已经工作了。4.4 常见问题排查速查表现象可能原因排查方法解决方法USB识别不到D和D-接反检查原理图和PCB交换D和D-USB识别不到晶振没起振用示波器测晶振引脚检查负载电容和焊接USB识别不到电源纹波太大示波器测3.3V加大去耦电容芯片不运行复位引脚被拉低测RST引脚电压检查复位电路芯片不运行电源电压不够测VCC引脚检查LDO输出串口通信乱码时钟频率不对检查IRC校准值重新校准或换晶振下载失败冷启动时序不对检查断电重启流程按STC要求操作LED不亮限流电阻太大测LED两端电压换小电阻按键不灵敏消抖电容太大测按键波形换小电容或软件消抖这个表格是我踩坑之后总结的基本上覆盖了最小系统板调试中80%的问题。其中USB识别不到是最常见的十次有八次是D和D-接反或者晶振问题。4.5 几个容易被忽略的细节第一个细节STC8H8K64U的P3.0和P3.1在上电的时候如果被拉低芯片会进入USB下载模式。所以如果这两个引脚外接了其他电路要确保上电时不会被拉低。我一般会在这两个引脚上各串一个100欧姆的电阻既不影响USB通信又能防止意外拉低。第二个细节Type-C座子的外壳接地。有些座子的外壳和GND是分开的需要单独接地。如果不接插拔的时候静电可能损坏芯片。我一般用0欧姆电阻把外壳接到GND或者直接铺铜连接。第三个细节排针的间距。如果要把最小系统板插在面包板上排针间距必须是2.54mm而且两排排针之间的距离要匹配面包板的孔距。我一般把排针放在板子两侧间距22.86mm9个孔距这样正好插在面包板中间。第四个细节丝印的方向。芯片的第一脚、Type-C座子的方向、LED的极性这些都要在丝印上标清楚。我见过有人把芯片焊反了上电直接冒烟。所以丝印上一定要有一个明显的圆点或者缺口标记。5. 从最小系统板到实际项目的扩展思路5.1 引出所有IO的排针设计最小系统板的一个核心价值是方便扩展。我一般会把所有40个IO都引出来用两排20Pin的排针间距2.54mm。排针的排列顺序按照端口号来P0.0到P0.7一排P1.0到P1.7一排以此类推。这样插杜邦线的时候不容易搞混。排针旁边可以加一些丝印标注比如P0.0/ADC0、P1.0/PWM0方便快速识别功能。立创EDA里可以用文本工具在丝印层加标注字体大小设成0.8mm清晰又不占地方。5.2 预留常见外设接口除了排针我还会预留几个常见外设的接口I2C接口4Pin排针包含VCC、GND、SCL、SDA方便接OLED屏幕或者传感器SPI接口6Pin排针包含VCC、GND、SCK、MISO、MOSI、CS方便接Flash或者无线模块UART接口4Pin排针包含VCC、GND、TX、RX方便接串口模块ADC接口2Pin排针包含VCC、GND、信号方便接电位器或者传感器这些接口不需要额外芯片只是把对应的IO引出来成本几乎为零但能大幅提升板子的实用性。5.3 电源扩展和电池供电方案如果要做电池供电的项目最小系统板需要改几个地方第一把AMS1117换成低静态电流的LDO比如HT7333静态电流只有4uA。第二加一个电池座比如CR2032或者18650。CR2032电压3V可以直接给STC8H8K64U供电不需要LDO。18650电压3.7V需要LDO降到3.3V。第三加一个电源开关方便控制通断。第四如果要用USB和电池同时供电需要加一个电源切换电路避免电池倒灌。简单的做法是用两个肖特基二极管做或门USB供电时电池不输出电池供电时USB不输出。5.4 从两层板升级到四层板的时机两层板做最小系统板完全够用但如果要加高速外设比如SD卡、以太网、高速ADC就需要考虑四层板了。四层板的结构一般是顶层信号、第二层地、第三层电源、底层信号。这样信号回流路径短电源阻抗低EMC性能好很多。嘉立创的四层板打样价格比两层板贵不少但如果是做产品这个成本值得花。我一般会在项目初期就用两层板验证功能功能没问题之后再改成四层板做正式版本。5.5 固件开发的起步建议硬件调通之后下一步就是写固件。STC8H8K64U的开发环境用Keil C51或者SDCC。我推荐用Keil因为STC官方提供的例程都是Keil工程直接拿来改就行。起步的时候先写一个LED闪烁程序确认时钟和IO配置正确。然后写串口打印程序确认UART工作正常。再写USB通信程序确认USB枚举成功。最后写ADC采集程序确认模拟部分正常。这样一步步来每步都有明确的验证目标出了问题也容易定位。STC的ISP下载软件里有一个定时器计算器和波特率计算器输入主频和想要的参数自动生成初始化代码非常方便。我刚开始用的时候不知道有这个功能手动算波特率算了好久后来发现软件里直接能生成省了很多事。6. 个人实操心得与避坑记录6.1 我踩过的三个大坑第一个坑去耦电容放太远。第一版板子我把去耦电容统一放在板子角落觉得反正都是接VCC和GND放哪里都一样。结果USB枚举成功率只有一半示波器一测芯片VCC引脚上的纹波有200mV。后来把电容移到芯片旁边纹波降到20mVUSB每次都能识别。第二个坑晶振负载电容选错。STC8H8K64U的外部晶振要求负载电容是22pF我手头没有22pF的就用两个10pF的并联以为20pF差不多。结果晶振起振时间变长有时候要好几秒才能稳定。后来换了准确的22pF起振时间降到几百毫秒。第三个坑复位按键没加消抖电容。按键直接接在RST引脚上按下去的时候芯片会复位好几次。后来在按键两端并了一个0.1uF电容问题解决。这个电容在原理图上很容易漏掉但实际使用中非常关键。6.2 立创EDA使用中的几个效率技巧第一个技巧用模块复用功能。如果项目里要用多个相同的电路比如多个LED指示灯画好一个之后保存成模块其他地方直接调用不用重复画。第二个技巧用网络标签代替长走线。原理图里如果两个点距离很远不要拉一根长线过去而是在两个点各放一个网络标签名字相同就表示连接。这样图纸干净改起来也方便。第三个技巧用批量修改功能。比如要把所有0.1uF电容的封装从0603改成0402选中所有电容右键属性批量修改封装一次搞定。第四个技巧导出BOM的时候勾选仅显示已贴片元件。这样BOM里不会出现排针、测试点这些不需要贴片的元件方便和贴片厂沟通。6.3 给新手的三条建议第一条第一块板子不要追求功能多。就做一个最小系统能跑LED和串口就行。功能越多出问题的概率越大调试时间越长。等第一块板子跑通了再逐步加外设。第二条原理图画完之后打印出来用红笔检查一遍。在电脑上看容易漏掉细节打印出来用笔指着一个个引脚检查能发现很多问题。我到现在还保持这个习惯每次画完原理图都打印一份。第三条PCB布局的时候想象一下电流怎么流。电源从入口进来经过LDO到芯片再回到地。这个路径越短越好越宽越好。信号从芯片出来到连接器路径也要短。布局的时候脑子里有电流路径的概念布出来的板子一般不会太差。6.4 这个项目后续可以怎么扩展最小系统板跑通之后可以往几个方向扩展方向一加无线模块。比如接一个ESP-01S做WiFi或者接一个HC-05做蓝牙。STC8H8K64U通过UART和模块通信实现远程控制。方向二加显示模块。比如接一个0.96寸OLED用I2C接口显示传感器数据或者系统状态。方向三加电机驱动。比如接一个TB6612或者L298N做小车或者机器人。STC8H8K64U的PWM输出可以直接驱动电机驱动芯片。方向四加数据存储。比如接一个W25Q64 Flash用SPI接口存储采集的数据。或者接一个SD卡模块做数据记录仪。方向五做低功耗版本。把LDO换成低静态电流的去掉不必要的LED和排针用STC8H8K64U的掉电模式做电池供电的传感器节点。这些扩展方向都不需要改最小系统板的核心电路只需要在排针上接对应的模块就行。这也是最小系统板的价值所在核心稳定外围灵活。6.5 关于成本的一点实际数据最后说一下成本。我最近一次打样5片STC8H8K64U最小系统板的物料成本大概是项目单价数量小计STC8H8K64U3.5元517.5元AMS1117-3.30.3元51.5元Type-C座子0.5元52.5元晶振12MHz0.3元51.5元阻容元件--约5元排针0.2元102元PCB打样5元525元合计--约55元平均下来一片板子11块钱左右。如果批量做PCB打样成本可以忽略物料成本能压到8块钱以内。这个价格对于学习和原型验证来说非常划算。焊接的时候注意LQFP48封装如果自己焊建议买一个热风枪比烙铁拖焊成功率高很多。热风枪温度设到300度风量调到最小对着芯片引脚吹10秒左右焊锡自动熔化。没有热风枪的话用刀头烙铁拖焊也行但需要多练习几次。我在实际使用中发现STC8H8K64U的USB下载功能非常稳定比CH340方案省事很多。插上线就能识别不需要按任何按键。唯一需要注意的是下载的时候要冷启动也就是先点下载按钮再给板子断电重新上电。这个流程和Arduino不太一样刚开始用的时候容易搞混。
返回列表