简介:面向物联网与无线通信开发者的Lora模块原理图解析文档,系统梳理了Lora模块的硬件架构与核心芯片选型,有助于读者快速理解低功耗远距离无线通信的电路基础。资源包仅包含1个PDF文件,大小约98KB,内容精炼且便于随时查阅。当前已有四千余人学习下载,在同类原理图资料中具备一定参考热度。文档深入拆解了微控制器、射频前端、天线以及电源管理四大组成部分:微控制器选用STM32L151C8T6,支持SPI、I2C、UART等丰富外设接口;射频前端基于SX1276芯片,兼容LoRa、LoRaWAN、FSK等多种协议;天线采用PCB天线形式,兼顾方向性与增益;电源管理芯片TPS63060可适配多种供电模式。此外,内容还涉及OLED显示屏接线、USB转串口通信、RS485接口等典型应用细节,并标注了晶振、电容、电阻等关键元件参数,适合物联网学习者、硬件工程师及嵌入式学生用于原理图阅读训练、硬件选型参考或学习笔记整理。
1. Lora模块原理图:拆板先看电源树,别急着找射频
做 LoRa 节点开发的人拿到这块板子的原理图 PDF,第一反应通常是去找 SX1276 的射频链路,但我劝你先看电源树。这份 Lora 模块原理图里,主控是低功耗的 STM32L151C8T6,射频部分用 SX1276 封装成的贴片模块 LSD4RF-2F717N30,外围还带了 0.96 寸 OLED、485 接口、USB 转串口和两路传感器槽位。它适合三类人:抄板做硬件改版的工程师、写 LoRa 驱动需要引脚映射表的嵌入式开发,以及所有被白屏 OLED 和死活叫不醒的射频板折磨过的人。下面按图纸把供电、接口、射频匹配拆开说,最后附我踩过的五个坑。
2. 原理图拆解:主控选型、射频前端、电源树与引脚映射
2.1 主控 STM32L151C8T6:低功耗场景下的选型逻辑
主控是 STM32L151C8T6,Cortex-M3 内核,主频 32MHz,LQFP48 封装。关键参数是 64KB Flash、32KB RAM。它和常见的 F103 最大的差异在功耗:L151 的待机电流是微安级,F103 是毫安级。LoRa 节点靠电池供电,一颗 LDO 挂多个外设,主控待机功耗直接决定电池能用一个月还是一年。
原理图里有两个细节印证了这个选型逻辑。第一,VBAT 引脚(第 1 脚)单独引出去,说明设计时预留了 RTC 备份供电路径,断电后靠纽扣电池维持时钟;第二,LSE 晶振 Y1 是 32.768kHz,负载电容 12pF,专门给 RTC 用,配合低功耗模式做定时唤醒。这个组合在 LoRa 场景里很典型:平时睡死,RTC 按 duty cycle 醒来,发完数据再睡。
2.2 射频模块 LSD4RF-2F717N30:SX1276 被封装成了什么
射频部分用的是 LSD4RF-2F717N30,一个基于 SX1276 的 SiP 贴片模块。SX1276 支持 LoRa、FSK、OOK 调制,频率覆盖 137-1020MHz,和常见的 SX1278 比,SX1276 增加了高频段支持,多国频段认证好过一些。模块引脚定义在原理图里很清楚:RST、DIO0-DIO3、DIO5、GND、VCC、SO(MISO)、SI(MOSI)、NSS、SCK、RF。
SPI 四线挂在 STM32 的 SPI1 上:PA4 接 NSS,PA5 接 SCK,PA6 接 MISO,PA7 接 MOSI。DIO0 和 DIO1 分别接 PA0、PA1,这两个引脚能产生 EXTI 中断,LoRa 的发送完成和接收中断都要靠 DIO0 触发。模块自带了功率放大和匹配网络,PCB 端只需要把电源滤波做好、天线阻抗控制好,射频设计难度比完全用分立器件低很多。
/* SX1276 SPI 读寄存器,验证模块 SPI 通路是否打通 */ uint8_t sx1276_read_reg(uint8_t addr) { uint8_t val = 0; ss_lo(); /* PA4 拉低,选中模块 */ spi_transfer(addr & 0x7F); /* 读命令,bit7 为 0 */ val = spi_transfer(0x00); /* 传任意字节,取回数据 */ ss_hi(); /* 释放片选 */ return val; }逻辑说明:SX1276 的 SPI 是半双工,一次传输分两步,先发地址(bit7 置 0 表示读),再发一个无关字节把数据从 SO 上移出来。NSS 低有效,整个操作必须保证片选拉低期间 SCK 不被别的设备占用。参数说明:SPI 时钟建议不超过 10MHz,寄存器地址按 SX1276 datasheet 查表,比如 0x42 是 LoRa 版本号寄存器,新片读回来应该是 0x12。这个函数是调试射频链路的第一块探路石,通电后先跑它。
2.3 电源树:V3.3、V5.0 与 USB_VCC 的供电优先级
USB-MINI 座(CON2)的 5V 进来后分成两路:一路直接叫 USB_VCC、V5.0,给 485 侧和外设供电;另一路进 U8(SPX1117-3.3V)降压成 3.3V,作为数字主电源。SPX1117 是低压差线性稳压器,输出端挂了 E2 10uF 钽电容加 C16 106 陶瓷电容,输入端挂 C10 104 陶瓷电容,典型的"大电容管低频纹波、小电容管高频噪声"组合。图纸上每个芯片电源引脚基本都有 104 去耦电容,RF 模块 VCC 引脚附近还有 C18、C110 额外并了一路,射频发射瞬间电流大,电源要压得住。
这里要特别提一个容易看走眼的点:摘要里写电源管理用的是 TPS63060,但实际原理图主电源就是 SPX1117-3.3V,TPS63060 在整张图里没有出现。原理图版本迭代过程中,电源方案可能改过,你拿图纸说话,不要拿摘要当依据,改 BOM 前先对着最新版本核对。
VBAT 引脚、V3.3、V5.0 三套电源网络要分清:V3.3 是主逻辑电源,VBAT 只给 RTC 域供电,V5.0 走 485 和 USB 外设,混接会出问题。
2.4 接口映射核对表:SPI、I2C、UART 一次理清
把原理图里的网络标签整理成一张引脚映射表,是后面写驱动的地基。这张表照着抄就行:
| 外设 | 接口 | STM32 引脚 | 连接目标 | 用途 |
|---|---|---|---|---|
| SPI1 | SPI | PA4(NSS) PA5(SCK) PA6(MISO) PA7(MOSI) | U12 射频模块 | LoRa 数据通道 |
| I2C1 | I2C | PB6(SCL) PB7(SDA) | OLED / 传感器 | 屏幕与传感器 |
| USART2 | UART | PA2(TX) PA3(RX) | 485 芯片 RXD/TXD | RS485 总线 |
| USART1 | UART | PA9(TX) PA10(RX) | USB 转串口 U1 | 调试 / 下载 |
| SWD | JTAG | PA13(SWDIO) PA14(SWCLK) | 调试座 J10 | 烧录与调试 |
| GPIO | GPIO | PB5/PB9/PA8/PB0/PB2 | LED / 按键 | 状态指示 |
为什么要先理这张表再动代码?因为新手最容易犯的错就是把 USART2 的 PA2 当 SPI 的 MOSI 用,或者把 485 芯片的收发接反。SPI1 和 I2C1 是独立外设总线,RF 模块和 OLED 不会抢同一组引脚;但 PA0、PA1 同时接了射频模块的 DIO0、DIO1 和 ADC 采样通道,代码里如果两处都初始化,就会出现引脚冲突。这位开发者就是踩了这个坑,后面单独讲。
3. 接口接线与启动链路:OLED、485、USB 转串口的连接细节
3.1 OLED 0.96 寸屏幕:SPI 与 IIC 二选一的跳线逻辑
OLED 插座 J7 是 7PIN 座,引脚顺序是 GND、VCC、D0、D1、RES、DC、CS。这块 0.96 寸屏的驱动是 SSD1306,支持 SPI 和 I2C 两种模式,区别全在 D0、D1、DC、CS 四个引脚怎么接。
SPI 模式下:D0 当 SCK,D1 当 MOSI,DC 当数据/命令选择脚,CS 当片选,速度可以到 10MHz 以上。I2C 模式下:D0 当 SCL,D1 当 SDA,DC 和 CS 要短接到 VCC(I2C 地址由 SA0 决定,DC 接 VCC 时地址是 0x3D,接 GND 时是 0x3C),RES 仍保留独立复位。原理图里 D0、D1、RES、DC、CS 都有网络标签从 MCU 引过来,说明这块板两种模式都能用,靠 PCB 上跳线或电阻位置切换。
/* SSD1306 I2C 初始化关键顺序,地址 0x3C 或 0x3D */ static void ssd1306_init(void) { uint8_t addr = 0x3C; /* SA0=0 时地址 */ i2c_write(addr, 0x00, 0xAE); /* 关屏 */ i2c_write(addr, 0x00, 0x20); /* 设置内存模式 */ i2c_write(addr, 0x00, 0x00); /* 水平寻址 */ i2c_write(addr, 0x00, 0x8D); /* 电荷泵设置 */ i2c_write(addr, 0x00, 0x14); /* 开启电荷泵 */ i2c_write(addr, 0x00, 0xAF); /* 开屏 */ }逻辑说明:SSD1306 的 I2C 命令写入分两段,第一字节 0x00 表示后续是命令,第二字节是命令码。初始化顺序必须是"关屏 → 设置寻址模式 → 开电荷泵 → 清显存 → 开屏",跳过任何一步都可能出现白屏或者显示错位。参数说明:地址字节是 7 位地址左移一位拼上 R/W 位,0x3C 是常见默认地址;如果原理图上 DC 通过电阻接到了 VCC,就要换成 0x3D。OLED 的 RES 网络在原理图里和主控复位有一定关联,驱动里最好先把 RES 拉低 10ms 再拉高,给屏一个干净的复位脉冲,否则上电时序不对会花屏。
3.2 485 与 USART2:交叉接线、终端电阻和收发方向
485 部分的核心在接线方向。USART2 的 PA2 是 TX,要接到 485 芯片的 RXD(数据进);PA3 是 RX,要接到 485 芯片的 TXD(数据出)。交叉连接,照着抄都会抄反,抄反的结果是自发自收正常、对端收不到。原理图里 485 端子 J23 的丝印标了 485+、485-,对应总线上的 A、B 两线,A 接 A、B 接 B,极性反了整条总线都通信不了。
收发方向的控制也要留意。原理图没有直接画自动收发流控电路,意味着驱动里要用 GPIO 或 UART 的 TX 信号控制 DE/RE。常见做法是发数据前把 DE 拉高,发完再拉低,回到接收态。终端电阻方面,原理图上 J13 位置焊了一颗 0Ω 电阻 R9,这只是把线路接通,不是 120Ω 匹配电阻。点对点或短距离调试没问题,但组网超过三个节点,总线首尾各需要一颗 120Ω 终端电阻,否则信号反射会把波形弄坏,表现为数据偶发错位。
485 总线标准挂载 32 个节点,用的是差分信号,共地是隐性的第三条线。很多工程师只接 A、B 两根线,长距离传输时地电位差会直接烧毁芯片,务必让所有节点通过屏蔽层或专用线共地。
3.3 USB 转串口与 BOOT0:烧录下载的完整链路
调试链路从 CON2(MINI-USB)进来,USB_D+/D- 经 ESD 保护件到 U1,这是一颗 USB 转 UART 芯片,原理图上丝印没给出具体型号,常见做法是 CP2102 或 CH340 类。U1_TX 接 PA10(MCU 的 RX),U1_RX 接 PA9(MCU 的 TX),交叉接法。默认波特率 115200 起步,最高可以到 460800,用于打印日志和 ISP 下载。
SWD 调试口在 J10 上,10Pin 座子引出 PA13/SWDIO、PA14/SWCLK,外加 NRST、V3.3、GND。接线顺序有讲究:先接 GND,再接 VCC,最后接 SWDIO 和 SWCLK,避免调试器与被调试板电位差过大导致烧引脚。BOOT0 和 BOOT1 引脚各有一颗 10k 下拉电阻,默认从 Flash 启动。要进系统存储器模式(ISP 下载)就把 BOOT0 拉高,复位后从 USART1 启动,下载完再把 BOOT0 拉回低电平复位。调试时这块板子的 BOOT0 有拨码开关控制,比跳线帽方便,但也埋了一个坑,后面避坑章节细说。
3.4 射频匹配与天线:SMA、π 型匹配和 ESD 的取舍
天线接口 J8 是 SMA 座。RF 模块的 RF 引脚出去,经过 L10(120R/1A 磁珠)、C6(12pF)、C7(22pF)、C8(22pF)组成的匹配网络,再到 SMA。C37 是 NC 位(预留 15pF 可选电容),说明图纸给频率微调留了位置。这套 π 型匹配网络在 433MHz 附近把模块输出阻抗调到 50Ω,给天线用。
射频匹配部分,没有网络分析仪就不要动 C6、C7、C8 的容值,调乱了灵敏度会掉十几个 dB,而且很难调回来。ESD9B5VL 阵列在 USB、天线、按键处都有,是保护器件,不要当普通二极管拆掉,拆了之后静电打几次,芯片就静默死亡了。
天线的长度和铺设位置对 LoRa 距离影响最大。433MHz 频段 1/4 波长天线约 17cm,SMA 座中心针焊接质量直接影响驻波比,焊接时间控制在 3 秒以内,焊太久会把座子内部绝缘层烫坏。
4. 避坑清单:原理图里最容易看走眼的五个问题
4.1 现象:POWERLED 不亮,VCC 端量不到 3.3V
原因:SPX1117 输入或输出电容贴反、虚焊,或者 LDO 引脚在生产时连锡短路。板上 USB 5V 是正常的,但 3.3V 网络被拉死。
解决:断电后先量 V3.3 对地阻值,如果只有几欧姆,优先检查 LDO 输出端的 E2 钽电容和 C16 陶瓷电容,拆掉其中一个再量,排除电容短路。如果是开路,用万用表从 USB_VCC 到 LDO 输入引脚逐点追通断,重点看焊接和 PCB 走线过孔。
4.2 现象:OLED 白屏,I2C 扫描却能搜到 ACK
原因:SSD1306 上电后没有执行复位时序,或者 I2C 器件地址与驱动代码不一致。原理图上 RES 网络如果和主控复位脚共享,上电瞬间屏的复位和 MCU 的复位同时释放,此时 I2C 还没初始化完,屏就处在未定义状态。
解决:驱动初始化最前面加一段 RES 控制,拉低 10ms、拉高、再延时 100ms,确保屏完全复位后再发命令。地址不对就写个扫描函数,0x3C 和 0x3D 都试一遍,打印出 ACK 的地址,再写死到代码里。
4.3 现象:两块板点对点 485 正常,三块以上就丢包乱码
原因:总线上没有终端电阻,R9 的 0Ω 只是把线路接通;节点之间没有共地。485 是差分总线,阻抗不匹配时信号反射会在数据中间叠加振铃,导致接收端采样出错。
解决:总线首尾两块板的 A、B 之间各焊一颗 120Ω 电阻,中间节点不焊。所有节点的 GND 用一条线连起来,不要偷懒只拉 A、B。组网速率降到 9600bps 再试,高速挡位对终端电阻更敏感。
4.4 现象:LoRa 空旷地只跑 50 米,RSSI 比预期差 20dB
原因:天线没接或者 SMA 座中心针虚焊,π 型匹配电容被人为改动,或者模块底部 GND 散热焊盘没有和 PCB 焊实。射频这玩意儿很玄学,看起来都连通了,实际驻波比 3:1,能量全反射回来了。
解决:先接上一根 17cm 的 433MHz 导线天线做基准测试,排除天线本身问题。如果还是差,检查 SMA 座中心针和焊盘,用万用表蜂鸣挡从座子内芯量到匹配网络输出点。GND 焊盘务必确认过锡,模块底部大面积接地区域是最容易虚焊的。
4.5 现象:SWD 连接失败,ST-Link 报 cannot connect
原因:BOOT0 被拨码或跳线拉高,芯片复位后进了 ISP 模式;或者应用代码把 PA13、PA14 复用成了普通 GPIO;或者复位脚被 OLED 的 RES 网络长期拽低。
解决:先把 BOOT0 拨回低电平,按住板上的复位键,在 IDE 里点 connect under reset,等芯片复位释放的瞬间抢连。SWD 引脚被复用的话,按住复位期间芯片不执行用户代码,是可以连上的;连上后第一件事就是擦除 Flash。OLED 的 RES 网络如果和 NRST 共享,拔掉 OLED 再试一次,能排除屏侧电路的影响。
5. 上电验证三板斧:从原理图到点亮 OLED 和 LoRa 通信
拿到这块板子,先别急着写应用层,按"电源 → 时钟 → 复位"的顺序做一次冷启动验证。万用表量 V3.3 对地电压,示波器 AC 耦合看纹波,VPP 超过 50mV 就要查去耦电容。8MHz 主晶振用示波器 10x 探头量两脚,应该有 0.3V 左右的差分波形,1x 探头会直接停振,这是很多人误判晶振坏了的原因。32.768kHz 的 LSE 晶振同样看一眼波形,RTC 起振慢是正常的,上电后等几秒再看。最后按一下复位键,NRST 应该从高电平拉出一个干净的低脉冲。
引脚映射验证用一段最小初始化代码就够了:
/* 验证 SPI1 引脚映射是否正确,PA4-PA7 复用为 SPI1 */ void spi1_gpio_init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef gpio = {0}; gpio.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; gpio.Mode = GPIO_MODE_AF_PP; gpio.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &gpio); }逻辑说明:PA4-PA7 全部复用为 SPI1 功能,PA4 是 NSS,由硬件外设自动控制片选,也可以改成软件 GPIO 控制。速度选 HIGH 保证 SPI 时钟上升沿够陡,如果主频不高、走线又短,降到 MEDIUM 可以减少辐射。参数说明:引脚模式必须选 AF_PP(复用推挽),选成 GPIO_MODE_OUTPUT 的话 SPI 外设的时钟信号出不来。跑通这段之后,调用sx1276_read_reg(0x42),读到 0x12 就说明整条 SPI 链路从代码到引脚映射到模块全部打通,这块板的骨架就活了。
从那以后我每次拿到这类原理图 PDF,都先花五分钟把电源树和引脚映射表抄到一张纸上,再动烙铁和代码。这个习惯已经帮我救回了好几块差点返工的板子——OLED 花屏是地址问题、485 乱码是终端电阻缺失、SWD 连不上是 BOOT0 拨反,全是原理图上能提前看出来的事。希望帮到你。
本文还有配套的精品资源,点击获取