
把一块从零设计的板子交给工厂拿到手还能正常跑这种感觉确实上瘾。这次要聊的是一块双LLCC68 LoRa串口透传板从KiCad 7.0画原理图、布局布线到导出Gerber发给嘉立创打样再到贴片焊接、串口调试整个过程我会拆开讲。如果你也想做类似的双通道LoRa节点或者只是想知道KiCad和嘉立创怎么配合这篇内容应该能省你不少时间。板子不复杂但该踩的坑一个没少我尽量把能说清的细节都说在前面。1. 项目设计与思路拆解1.1 为什么做双LLCC68而不是单颗LoRa串口透传的常用方案其实很成熟一颗LLCC68加一颗STM32就能组成一个数据通路。但实际项目里单链路总有绕不过去的问题终端要同时监听两个频点或者中继节点需要同时接收和转发半双工单芯片在这里就很尴尬。我的用法是每块板上放两颗LLCC68一颗挂在SPI1一颗挂在SPI2由主控STM32统一管理。这样既能支持两个独立频段的并行收发也能做一主一备的冗余链路甚至可以通过AT指令切换工作模式。有人会问双芯片成本翻倍、功耗翻倍值不值这得看场景。如果只是两个固定节点互相发数据单颗完全够用但如果你的节点需要同时上报状态又接收指令单颗芯片就要频繁切换收发状态协议层会变得复杂时序也容易出问题。双LLCC68可以把“收”和“发”在物理上分开一个芯片固定接收另一个固定发送数据通路天然全双工代码逻辑简单很多。这也是我把这块板子叫“透传板”而不是“模块”的原因它本质上是一个带双LoRa链路的无线串口桥。1.2 整体架构与选型清单整个系统分三块电源、主控、射频。电源部分用USB输入5V经过AMS1117-3.3稳压给整个系统供电主控用STM32F103C8T664KB Flash20KB RAM驱动两颗LLCC68绰绰有余射频部分就是两颗LLCC68各自带SMA天线座外围匹配电路完全照抄数据手册成熟设计。串口通过CH340G芯片转为USB这样调试时直接插一根USB线就能看到透传数据。这里我要说一个选型时的关键判断LLCC68和Semtech的SX1262在内部架构上是同源的但LLCC68更便宜、专门面向低功耗和简单透传场景。它的最大发射功率是22dBm灵敏度在LoRa 125kHz带宽、SF12下能做到-137dBm对普通透传应用足够。主控选择STM32F103纯粹是因为好买、资料多、我手头也有现成固件库你换成STM32L4或者国产GD32E230也完全没问题只要SPI外设和中断引脚够用就行。2. 原理图设计从芯片到电路2.1 LLCC68最小系统电路LLCC68是QFN24封装4x4mm引脚很密焊接时要小心但原理图设计并不难。核心部分包括电源去耦、SPI接口、复位、射频匹配和晶振。电源去耦我用了10uF和100nF的组合靠近芯片的VCC引脚放置不要一根长线拉过去。LLCC68的PA供电引脚PA_EN需要额外加一个100nF电容这个如果漏了会影响发射功率。SPI接口是标准四线SCK、MOSI、MISO、NSS。两个LLCC68分别用PA5/PA6/PA7和PB13/PB14/PB15两组SPI引脚NSS片选用两个独立GPIO避免总线冲突。晶振选16MHz无源晶振并联两个12pF负载电容。LLCC68对晶振频偏比较敏感官方建议使用精度20ppm以内。我一开始用了普通10ppm晶振实测也正常如果你做电池供电的低功耗项目可以考虑带TCXO的版本省去校准流程。射频匹配部分参考数据手册的433MHz BOM。LLCC68输出是单端端口需要一个LPF滤波器加匹配网络主要是几个电感和电容的组合。这里我用了手册里给出的标准值没有做额外调试。要提醒的是匹配元件的摆放顺序必须和参考设计一致靠近RF引脚的电感电容不能改位置否则阻抗会偏。原理图上的参数如下表所示元件数值作用C13.9pF输入匹配L122nH阻抗变换C26.8pF并联匹配L215nH低通滤波C310pF低通滤波2.2 STM32主控与串口部分STM32F103C8T6是LQFP48封装设计难度不高。这里重点说复位电路10k欧上拉电阻加100nF电容到地NRST引脚再接一个按键这个按键在调试时会救你很多次。BOOT0引脚通过10k电阻下拉保持从Flash启动。VDDA引脚接3.3V并加磁珠和1uF电容滤波ADC参考电压稳定对后续电池电压监测有帮助。串口部分用CH340G这是一个很成熟的USB转串口芯片。CH340G的V3引脚接0.1uF电容UD和UD-直接通过USB座连到电脑晶振用12MHz。如果你不想用CH340也可以用CP2102但CH340国产便宜嘉立创库存也足焊接是SSOP20封装比CP2102的QFN好焊很多。需要注意CH340G的TXD接STM32的RXRXD接STM32的TX这是交叉连接。我见过不少人在这里画成同向导致串口怎么调都没数据。另外在STM32的USART1上我加了一个1k欧串联电阻在TX线路上防止接外部设备时电流过大这个习惯建议保持。2.3 双通道透传的逻辑设计原理图走到这一步除了连线更重要的是想清楚这套透传逻辑怎么跑。STM32上电后先初始化两个SPI和两个LLCC68配置寄存器。我的策略是LoRa芯片A固定设置为接收模式监听433.5MHzLoRa芯片B设置为发送模式工作在433.9MHz。串口收到的数据STM32直接把数据写进B的TXFIFO然后发送同时A不断接收一收到有效包就把数据从串口发出去。这样外部设备看起来就是一个全双工串口非常清爽。如果不想固定收发也可以让两颗芯片都配成收发模式通过软件切换但那样需要处理信道冲突和重传逻辑代码量至少翻倍。这块板子主打简单可靠所以我选了固定链路。后续如果要做组网再在应用层加协议硬件不用改。3. KiCad 7.0实操原理图绘制与PCB布局3.1 KiCad 7.0工程创建与原理图绘制KiCad 7.0的界面比6.x更干净打开后新建工程取个响亮的名字比如“Dual_LLCC68_UART”。工程目录下会自动生成后缀为.kicad_sch和.kicad_pcb的文件。我习惯在工程目录里再建一个“datasheet”文件夹把所有参考文档丢进去方便随时查。绘制原理图的第一步是加载元件。KiCad自带的库比较全LLCC68可能不在默认库里需要自己画符号。菜单栏选择“文件-新建-符号”按数据手册的引脚定义建立元件。这里有个小技巧把电源引脚设为电源类型其他信号引脚设为双向或输入输出这样ERC检查的时候不会报一堆错误。画好符号后保存到自己的符号库中在原理图中按“A”或者在右侧工具栏点击“添加符号”找到自定义库就能拖进去了。连线时注意网络标签的命名比如U1的NSS接到PA4直接画一条wire过去或者在两个引脚上放同名标签“SPI1_CS”。8位工程师相处久了会习惯用标签而不是连线板子复杂时这个习惯能避免很多走线错误。连完之后点击“运行ERC”看有没有未连接的引脚、输出电源冲突之类的问题。LLCC68的RF引脚必须接一个标签因为后面要连接到射频匹配电路。3.2 封装选择与PCB布局KiCad中封装是独立于符号的。LLCC68我用的是QFN-24封装在库里有现成的如果没有需要对照尺寸画。这里要特别提醒QFN封装中间的散热焊盘必须加上不能只画外围引脚。LLCC68的EP焊盘接地焊接时这个焊盘既导热又连接地要是漏了芯片会虚焊甚至烧毁。STM32的LQFP48、CH340G的SSOP20这些标准封装在KiCad库里都能搜到。PCB布局我按功能分区STM32放在中间左边是USB座和CH340右边是两颗LLCC68天线座布置在板边。电源模块放在USB入口附近走线宽一点1.5mm以上。晶振要靠近MCU距离不超过15mm并且晶振走线不能出现直角最好有地包围。LLCC68的射频输出走线要短尽量控制在5mm以内。这里重点讲LLCC68的天线区域。LoRa是433MHz板载天线的近场区域不能被铜覆盖所以天线座周围一小块区域内我全部挖空顶底层都不铺铜。天线座下方不要走地线更不能走电源线。如果你的天线是弹簧天线注意天线本体避开金属外壳和地平面否则发射距离直接腰斩。这部分结论不是来自计算而是来自实际测试的教训我曾经在一版板子上天线旁边靠近地通信距离从200米掉到20米排查了很久才发现。3.3 布线参数与阻抗控制433MHz虽然不算超高频但射频线依然推荐按50欧姆控制。在双层板上做微带线1.6mm板厚、FR4介质、35um铜厚的情况下50欧姆线宽大概在1.2mm左右。这个计算我直接用KiCad自带的“计算工具-传输线”功能输入板厚1.6mm、介电常数4.6、铜厚0.035mm算出来约1.25mm。但射频线一般细一点更好布如果空间不够可以适当缩小板厚或者用共面波导结构。嘉立创的PCB工艺很好免费打样默认1.6mm板厚1oz铜厚支持最小6mil线宽线距对于这个板子足够。在KiCad里我走射频线时设置为1.2mm宽其他普通信号线0.3mm电源线0.5mm。顶层射频线下方底层不要走数字信号线保持完整地平面。如果板子空间允许最好在射频线两侧打地孔形成共面波导结构效果更好。DRC检查必须做。KiCad 7.0的DRC功能可以选择“实时DRC”布线的时候动态提示短路、间距问题。走线完成之后点“运行DRC”把间距设置成嘉立创的工艺下限比如0.2mm间距这样生成的Gerber基本不会被打样厂退回。提醒一下使用“GND”铺铜时选择“固态填充”还是“网格填充”普通应用用固态填充散热快但容易起泡手工焊接时网格更友好。我这块板子空间不大用了固态铺铜。4. 嘉立创打样与焊接调试4.1 导出Gerber文件的完整步骤KiCad里导出Gerber并不难但细节决定成败。在PCB编辑器中点击“文件-制造输出-Gerber文件”。选择输出目录后重点设置格式使用“2.4mm”单位精度这是业界通用格式。图层选择包含F.Cu、B.Cu、F.Silkscreen、B.Silkscreen、F.Mask、B.Mask、Edge.Cuts。注意一定要勾选“PTH和NPTH钻孔数据”如果没有钻孔文件板子连孔都没有。还要导出一份钻孔位置文件后缀通常是.drl。有些打样厂需要GBR文件和DRL文件一起压缩上传嘉立创就支持这种模式。导出完成后先用KiCad自带的“Gerber查看器”打开预览检查一下各个层是否对齐丝印是不是有地方压倒了焊盘。这一步别偷懒我就在Gerber预览里发现过丝印把LED焊盘完全盖住的情况如果不检查回来只能刮丝印。导出后全部文件放进一个压缩包命名带版号比如“dual_llcc68_v1.0_20250101.zip”。这里多说一句版本管理是硬件开发的好习惯哪怕自己打样玩也要有版本号后面改版才能在电脑上迅速找到旧文件否则一个月后看着一堆Gerber你会后悔。4.2 嘉立创下单参数设置嘉立创下单很顺滑首页点击“PCB打样”把压缩包拖进去。在线解析后一般几秒就出结果。关键参数设置如下参数项设置值备注板材FR-4常规板材尺寸按实际Gerber系统自动识别板厚1.6mm默认铜厚1oz默认颜色绿色免费打样可选阻焊常规默认表面工艺有铅喷锡无铅要加钱数量5片免费打样常见嘉立创有个特别好的点是支持“SMT贴片”和“PCB打样”一体化但散件焊接量少我觉得没必要用SMT自己手焊更灵活。下单完成后通常24小时左右就能发货。免费打样一般限制在10cm x 10cm以内这块板子栽在68mmx45mm左右刚好满足。4.3 焊接工具、顺序与调试流程焊接这块板子强烈建议准备恒温烙铁、热风枪、助焊剂、焊锡丝、洗板水。LLCC68的QFN封装底部有热焊盘用烙铁很难焊好必须用热风枪加热。我的顺序是先焊电源部分量3.3V电压再焊STM32烧个点灯程序确认能跑最后焊两块LLCC68。LLCC68焊接时先在PCB焊盘上均匀涂一层薄助焊剂放正芯片用热风枪320度风速中档吹芯片周围焊料熔化时会自动定好位置。这里要控制时间不要超过30秒否则芯片可能会因过热受损。焊完趁板子还热用镊子轻轻拨一下芯片如果回弹说明位置正了。冷却后用万用表测量相邻引脚之间有没有桥接桥接很容易发生在QFN这种引脚间距只有0.5mm的情况下。调试时先给MCU烧录固件。我用STM32CubeIDE新建工程配置两个SPI主机模式时钟极性都是IDLE low采样沿是第一边沿。LLCC68的SPI最高可以跑到10MHz但实测STM32F103在8MHz下稳定我直接用8MHz。SPI初始化完成后读一下LLCC68的寄存器版本号正常应该能读到某个值。如果读不到多半是接线或者时钟配置问题优先用示波器看NSS引脚是否有电平跳变。串口透传测试很简单电脑USB识别成虚拟串口打开串口助手波特率115200发送一串数据在另一块板子的串口上应该能收到。由于我是双通道设计还需要检查A通道固定接收会不会影响B通道发送用两个串口同时收发测压力。5. 常见问题与排查技巧实录5.1 射频部分不工作的快速判断LLCC68完全不发射或者接收灵敏度极低这是最伤脑筋的。我的排查顺序是先用示波器看LLCC68的BUSY引脚如果芯片在SPI通信后没有置低说明芯片没正常工作。再查晶振用示波器探头点XTA一端应该看到16MHz正弦波幅度大概几百毫伏如果起振但频率偏很多就需要换晶振或调整负载电容。射频匹配电路是重灾区。LLCC68数据手册上提供了不同频段的匹配参数但如果你在430MHz附近直接用手册433MHz的参数一般没有问题。但要注意天线和匹配网络之间存在失配可能芯片能发射但辐射功率很小。有条件的使用频谱仪看发射功率没有的话就准备两台相同板子拉距离测试如果3米内能通信但再远就不行大概率还是天线匹配问题。另外检查天线座的中心脚是否和微带线焊接良好接地环绕是否完整。5.2 串口透传丢包和乱码问题串口透传最典型的毛病是“发什么过去收到的不是错的就是丢的”。第一步检查串口波特率是否一致CH340最高支持921600但外设模块如果不支持高速波特率就用115200或57600。第二步检查串口电平是否匹配如果是3.3V STM32和5V其他设备通信TTL电平可能不兼容需要加电平转换。数据丢包可能是射频收发时序问题。LoRa模块在发送的时候如果MCU还在往SPI写数据接收端就会CRC错误丢包。解决办法是发送前先拉高NSS、查询BUSY引脚确认芯片空闲或者直接开个简单的“发送完成”中断标志等LLCC68产生TX_DONE中断后再发下一个包。我在这块板子上给DIO1映射到了外部中断每个LLCC68一个DIO1一个发完就中断通知MCU另外一个接收完成就中断通知串口发送这样丢包率降到千分之一以下。5.3 焊接与物理层的几个坑QFN芯片虚焊是最常见但最隐蔽的问题。如果你发现板子上电后电流异常或者某个引脚没信号不要急着怀疑固件先用万用表蜂鸣档挨个测LLCC68引脚到测试点之间的通断。我遇到过一次DIO0引脚虚焊导致接收中断永远不触发排查了一天最后用显微镜才发现引脚上有个微小的桥接。还有铺铜导致天线阻抗变化的问题。如果你的天线下方有完整的地平面那天线本身的阻抗会被拉偏使用弹簧天线时更明显。最靠谱的办法是严格按天线厂商推荐的位置和净空区域设计。我在板子天线座旁边丝印画了一个“禁布区”白框提醒自己不要铺铜。最后洗板水要选对不要用带腐蚀性的避免洗掉丝印或者让继电器之类的元件氧化。如果你板子工作在潮湿环境焊完后最好喷一层三防漆这对无线性能有微妙影响但能极大提升寿命。5.4 固件调试中的小经验STM32的SPI外设配LLCC68时最容易错的是CPOL和CPHA。LLCC68要求SPI mode 0即CPOL0, CPHA0。有些库默认是mode 1导致读回来的全是0xFF或者0x00。我建议在初始化代码里明确写成SPI_InitStructure.SPI_CPOL SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA SPI_CPHA_1Edge;接着LLCC68的寄存器地址是8位写入时第8位是读写标志这个细节也容易踩。读操作时地址最高位为1写操作为0。如果直接按8位地址发送可能读出来的数据是上一地址的残留。使用Semtech官方驱动库时这些已经封装好但如果自己写底层一定要确认。另外两颗LLCC68共用一个STM32的HSE晶振吗不是它们是各自带晶振。这样即使一个晶振失效另一路仍能工作。如果板子上空间允许可以在两颗芯片之间加一个地隔离带大概2mm宽减少射频串扰。实测下来两颗同时发射时通过隔离带能让接收灵敏度提升约3dB这个在板面积允许的情况下值得做。6. 扩展思路与后续玩法这块双LLCC68的板子其实只是一个起点。因为KiCad工程文件都在自己手里后续改版很方便。比如可以加一颗温湿度传感器通过LoRa把环境数据传回网关也可以把天线换成IPEX座外接高增益天线实测空旷环境能拉出2公里左右的稳定链路。如果你对能耗有要求还可以把AMS1117换成RT8024这类低静态电流的DC-DC整个板子待机功耗能降到5uA以下做成电池供电节点会很香。还有一点双LLCC68的硬件架构在管理上很自由你可以把两块芯片的串口分别对接到两个MCU做成一个桥接模块也可以把两个天线集合成MIMO但因为LoRa本身不是MIMO技术这种玩法更偏实验性。我更推荐做中继节点一块板子上的A通道接收远处传感器数据B通道转发给主站主站和传感器之间无感知。这个应用在养殖场、仓库监控里很常见一块板子就能完成。再提一个很多人关心的固件OTA。LLCC68本身不管固件升级但STM32的Flash空间足够放一个简易Bootloader后续通过串口升级MCU固件不需要拆机。有了串口透传链路你甚至可以通过LoRa无线升级固件只要在数据包协议上做标志位区分数据帧和固件帧。这个功能我现在还没完全做完但架构上已经留好了。如果你也想做类似的板子我个人的建议是先用KiCad把原理图跑通再花一点时间在封装库里核对每个元件的手册然后设计时多留几个测试点焊完先不要急着调RF先把串口打通整个链路就顺了。这块板子从开始画到量产我大概花了两个星期中间踩过不少坑但最后跑起来的那一刻非常值得。如果你在制作过程中遇到具体问题也欢迎回头翻一翻这篇文章里的细节大部分问题都能在这里找到答案。