
简介BC26模块原理图文档面向STM32与物联网硬件开发者适合需要理解NB-IoT模组外围电路设计、做引脚级调试或二次开发的嵌入式工程师。压缩包为单个PDF文件大小仅109KB内容精炼便于快速查阅。文档基于BC26模组给出完整参考设计包含AMS1117-3.3稳压电源、S8050三极管电平转换与开关电路、SIM卡接口、RF天线前端、USB以及PWRKEY/RESET/PSM_EINT控制接口原理图还明确标出TXD_DBG/RXD_DBG调试串口、TXD_AUX/RXD_AUX辅助串口以及MCU_RXD/MCU_TXD等连接关系方便定位最小系统、绘制底板和排查信号通路。目前已有916人浏览学习。借助这份原理图读者可以快速核对模块供电与串口逻辑电平理清SIM_VDD/SIM_DATA等引脚走线为PCB布局、硬件排错和低功耗控制提供直接依据对于模块选型评估及产品化设计都有实际参考价值。1. BC26这张原理图先看电源再看信号BC26是一颗NB-IoT模组而不是MCU本体。严格说它内部是ARM Cortex-M内核的NB-IoT SoC但这张原理图里真正值钱的不是BC26模组本身而是它周围这圈“配套底板”AMS1117-3.3稳压、AO3401电源开关、S8050三极管电平转换、SIM卡座ESD防护、IPEX天线座以及PWRKEY、RESET、PSM_EINT三个控制脚的驱动网络。这些才是嵌入式硬件开发者抄板时最容易踩坑的地方。对做STM32、单片机物联网项目的工程师来说这张图的价值在于它把一颗NB-IoT模组如何接到3.3V主控、如何给SIM卡供电、如何做1.8V与3.3V逻辑域互转的完整链路摆出来了。接下来按“电源、电平、SIM、控制、射频”的顺序逐块拆。2. 电源域拆分AMS1117-3.3、AO3401与VBAT_RF/VBAT_BB的供电关系2.1 从PP5V到PP3V3LDO之外的PMOS开关管原理图第一个电源节点是PP5VC1和C2各10uF并联做输入去耦之后进AMS1117-3.3U1的VINVOUT输出PP3V3输出端C3 100nF做高频滤波。AMS1117是低压差线性稳压器这里输入5V输出3.3V压差1.7V虽然LDO效率一般但胜在干净、无开关噪声对NB-IoT模组的射频敏感度来说是合理选择。值得注意的不是那颗LDO而是旁边这颗AO3401Q3。AO3401是P沟道MOSFET低电平导通高电平关断。图纸里POWER_EN经4.7K电阻R6接到GateGate对地还有电阻保证默认状态确定。这颗管子在高边做负载开关用途是让主控比如STM32的GPIO通过POWER_EN信号直接切断或恢复模组供电实现真正的硬件级断电而不是让模组一直挂在电源上只靠PSM待机。提示AO3401的Gate不能悬空一旦悬空PMOS可能因栅极电荷泄漏进入半导通状态表现为模组功耗异常偏高。抄板时务必确认Gate对地有下拉电阻。2.2 VBAT_RF与VBAT_BB为什么要分开BC26的42脚VBAT_BB和43脚VBAT_RF在原理图里是两个独立引脚但很多第一次画底板的工程师会直接把这两个脚并在一起拉一根粗线。这在低功耗场景下会埋雷NB-IoT发射是突发式的虽然平均电流只有几十mA但发射瞬间电流会明显抬升射频电路拉电流时会在走线寄生电感上产生压降如果VBAT_RF和VBAT_BB共用一段细走线基带数字电路会被射频突发电流干扰严重时直接掉电复位。PCB上建议VBAT_RF单独走线靠近43脚放100nF电容VBAT_BB则在其引脚附近放1uF和100nF并联组合。总输入端的10uF大电容放在PP3V3进入模组电源网络的总入口。这个思路和画STM32最小系统板原理图时给模拟电源脚单独走线是一个道理——别让数字逻辑的开关噪声污染模拟/射频参考。2.3 VDD_EXT与VDD_MCU1.8V逻辑域从哪来原理图里有两个重要的电源网络名PP1V8和VDD_MCU。PP1V8通常来自模组VDD_EXT引脚输出的1.8V LDO供给电平转换电路的高侧VDD_MCU则是用户主控一侧的3.3V电源域。BC26的UART、SIM、控制引脚外部IO电平是1.8V而STM32的GPIO多数是3.3V两个域不能直连这就是后面那几颗S8050存在的原因。测试点期望电压纹波容限测量位置PP5V4.75~5.25V±100mVC1正极PP3V33.235~3.365V±50mVC3正极或AMS1117 VOUTPP1V81.75~1.85V±30mV电平转换网络上拉端VBAT_RF3.3V±5%发射瞬间跌落不超过300mVBC26 43脚附近上电后先不要急着接模组用万用表把这四个点的电压量一遍尤其是PP1V8。PP1V8如果被外部电路拉低或者短路电平转换电路的输出逻辑会直接错乱表现为主控发AT指令模组完全无响应。3. 三极管电平转换S8050搭出的MCU串口链路3.1 为什么不用电平转换芯片BC26的UART IO是1.8V电平STM32的UART是3.3V电平。常见方案是TXS0102、TXB0104这类电平转换芯片但原理图里选的是两颗S8050三极管加电阻网络。原因很直接成本低、物料通用、不依赖额外芯片供电。S8050是NPN三极管VCEO 25VIC最大500mA用在UART这种几mA的信号线上绰绰有余。UART 115200bps的速率下S8050的开关速度完全够用。但这里有个必须说清的工程细节单级NPN三极管集电极输出和基极输入是反相的。基极高电平时三极管饱和导通集电极被拉到GND基极低电平时三极管截止集电极被上拉电阻拉到高电平。所以直接用单管做电平转换输出波形和输入波形是反相的。原理图里MCU_TXD、MCU_RXD、MO_TXD、MO_RXD四个网络分别对应主控发送、主控接收、模组发送、模组接收每一条方向链路各用一颗三极管处理。3.2 抄这张图必须核对的四个网络网络表里出现的阻值组合很有代表性10K电阻做基极到GND的下拉防止三极管在MCU上电瞬间误开通4.7K电阻做集电极到PP1V8或VDD_MCU的上拉决定输出高电平的电压值。以主控到模组方向为例MCU_TXD经4.7K电阻进Q1基极Q1集电极上拉到PP1V8输出接MO_RXD另一方向MO_TXD经4.7K电阻进Q2基极集电极上拉到VDD_MCU输出接MCU_RXD。网络/器件位置典型值作用R1/R4基极到GND10K上电默认状态锁定R2/R3集电极到电源4.7K设定输出高电平Q1/Q2信号通道S8050电平搬移与反相PP1V8模组侧上拉1.8V匹配BC26 IO电平VDD_MCU主控侧上拉3.3V匹配STM32 IO电平提示照抄这个电路后第一件事不是焊接而是用示波器双通道同时看输入端和输出端的波形。如果发现波形反相而你的STM32 USART不支持极性反转配置就需要改成双管串接结构或者在主控侧用外部逻辑门再反相一次。很多“模组发AT没反应”的案例最后查出来不是模组坏了而是电平转换把UART空闲电平从高拉成了低导致模组一直认为总线被占用。3.3 实际联调时的验证顺序焊接完成后的验证顺序建议分三步走先量电平再测相位最后跑数据。量电平指的是空闲状态下主控TXD输出应该是3.3V高电平对应模组RXD引脚应该被电平转换电路拉到1.8V高电平同样模组TXD空闲时是1.8V高主控RXD侧应该被拉到3.3V高。任何一侧空闲电平不对先查上拉电阻供电再查三极管焊接方向。测相位这步最容易忽略发送0x55二进制01010101用示波器看模组RXD脚的波形正常情况应该能看到方波如果看到的是完全反相的波形说明电平转换路径需要加一级反相或者主控串口配成反极性。跑数据则是最简单的回环测试把模组TXD和RXD短接前不要直接短接模组引脚而是短接主控侧MCU_TXD和MCU_RXD先确认主控到电平转换电路这段没问题。4. SIM卡座电路与接口ESD防护设计4.1 SIM接口的串阻、滤波与TVS布置原理图里SIM接口用了SIM-008C卡座六个信号脚分别对应SIM_VDD、SIM_CLK、SIM_RST、SIM_DATA、SIM_GND预留VPP脚接地。BC26侧引脚14到11分别是SIM_VDD、SIM_CLK、SIM_RST、SIM_DATA与卡座之间有完整的防护网络这类设计在物联网底板里属于标准做法但在抄板时容易被忽略。SIM_CLK和SIM_RST上各串一颗22R电阻这是阻抗匹配与EMI抑制的常见手段。SIM_DATA线上有10K R14上拉到SIM_VDD保证数据线空闲状态为高。每个信号对地并联33pF电容C5到C8把高频谐波泄放掉。100nF C4放在SIM_VDD入口确保卡供电稳定。SMF05CD1是五通道TVS阵列钳位SIM信号的ESD浪涌避免插拔SIM卡时静电打坏模组内部接口。信号BC26引脚串阻对地电容保护器件SIM_VDD14无100nFSMF05CSIM_CLK1322R33pFSMF05CSIM_RST1222R33pFSMF05CSIM_DATA11无33pFSMF05C10K上拉4.2 用AT指令验证SIM卡链路焊完SIM这部分电路不要急着用STM32跑完整协议栈先通过UART把模组调试口TXD_DBG/RXD_DBG接到电脑用串口助手或Python脚本发AT指令验证模组和SIM卡的握手情况。下面这段脚本用pyserial完成最基本的SIM卡探测。import serial import time ser serial.Serial( portCOM10, # 按实际串口号修改 baudrate9600, # BC26 默认调试波特率 timeout1 ) def at(cmd, delay0.5): ser.write((cmd \r\n).encode()) time.sleep(delay) return ser.read(ser.in_waiting).decode(errorsignore) print(at(AT)) # 1. 模组是否存活, 期望返回 OK print(at(ATCPIN?)) # 2. SIM 卡状态, READY 表示已识别 print(at(ATCSQ)) # 3. 信号强度, 第一个值大于10可用 print(at(ATCEREG?)) # 4. 网络注册状态, 0,1 表示已注册 ser.close()这段脚本里每条AT指令都有明确用途。AT指令验证串口链路是否通畅返回OK说明电平转换电路工作正常、波特率匹配ATCPIN?查询SIM卡是否被识别返回READY说明SIM_VDD供电、SIM_DATA上拉、复位时序都正常如果返回ERROR就要检查卡座焊接和SMF05C是否把信号钳死了ATCSQ读信号强度ATCEREG?查网络注册状态。如果ATCPIN?一直报错优先检查SIM_VDD电压在卡插入瞬间是否被拉低以及22R串阻、33pF电容是否有虚焊。提示SIM_VDD的电压是模组内部根据卡类型自动切换的1.8V或3V都正常不要用万用表只量一次空闲电压就判断卡电路有问题。插卡瞬间的波形才决定卡能否被识别。5. PWRKEY、RESET与PSM_EINT控制脚上的细节和时序5.1 三个控制脚的电气约定BC26的PWRKEY、RESET、PSM_EINT在原理图里分别由Q4、Q5、Q7三颗S8050驱动这里用三极管而不是MCU GPIO直连是有原因的模组这些脚内部结构与GPIO不同PWRKEY内部上拉到VBAT外部需要用开漏或三极管把它拉低触发RESET同理。BC26的IO域是1.8V如果STM32的3.3V GPIO直接推高到这些引脚可能通过内部上拉电阻反灌电流进模组电源域。信号有效电平典型脉宽内部结构主控侧设置PWRKEY低电平500ms以上内部上拉三极管拉低初始高阻RESET低电平100ms以上内部上拉三极管拉低初始高阻PSM_EINT下降沿/低电平大于100us唤醒输入三极管拉低触发PWRKEY的时序特别关键拉低时间不足可能导致模组无法正常启动表现为模组没有串口应答、NETLIGHT不亮。而RESET的复位脉宽要求相对宽松但也不能用一个过窄的毛刺去触发容易进入不确定状态。5.2 STM32 HAL驱动代码模板下面这段代码以STM32 HAL库为例演示如何通过GPIO控制Q4、Q5、Q7实现开机和复位。注意三个控制信号在原理图里最终命名是PWRKEY_SET、RESET_SET、PSM_EINT_SET中间经过三极管到模组脚。#define PWRKEY_SET_Pin GPIO_PIN_0 #define PWRKEY_SET_Port GPIOA #define RESET_SET_Pin GPIO_PIN_1 #define RESET_SET_Port GPIOA #define PSM_EINT_SET_Pin GPIO_PIN_2 #define PSM_EINT_SET_Port GPIOA void b26_gpio_init(void) { GPIO_InitTypeDef gpio {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); // 三极管驱动, 初始全部输出低, 三极管截止, 模组侧引脚被内部上拉保持高 gpio.Mode GPIO_MODE_OUTPUT_PP; gpio.Pull GPIO_NOPULL; gpio.Speed GPIO_SPEED_FREQ_LOW; gpio.Pin PWRKEY_SET_Pin | RESET_SET_Pin | PSM_EINT_SET_Pin; HAL_GPIO_Init(GPIOA, gpio); HAL_GPIO_WritePin(PWRKEY_SET_Port, PWRKEY_SET_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RESET_SET_Port, RESET_SET_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(PSM_EINT_SET_Port, PSM_EINT_SET_Pin, GPIO_PIN_RESET); } void b26_power_on(void) { // 拉低 PWRKEY, 三极管导通, 模组 PWRKEY 被拉低 HAL_GPIO_WritePin(PWRKEY_SET_Port, PWRKEY_SET_Pin, GPIO_PIN_SET); HAL_Delay(600); // 保持低电平 600ms, 满足最小脉宽要求 HAL_GPIO_WritePin(PWRKEY_SET_Port, PWRKEY_SET_Pin, GPIO_PIN_RESET); } void b26_reset(void) { HAL_GPIO_WritePin(RESET_SET_Port, RESET_SET_Pin, GPIO_PIN_SET); HAL_Delay(150); // 复位脉宽 150ms HAL_GPIO_WritePin(RESET_SET_Port, RESET_SET_Pin, GPIO_PIN_RESET); }这段代码里GPIO初始化时输出低电平很关键三极管基极低电平时截止模组侧PWRKEY和RESET被内部上拉保持高电平不会误触发开机或复位。开机函数先把PWRKEY_SET拉高600ms再释放对应三极管导通拉低模组PWRKEY的过程。如果开机后模组没有反应先用示波器抓模组侧PWRKEY引脚的波形确认拉低时间和幅度是否到位不要一上来就怀疑模组损坏。5.3 PSM_EINT与低功耗唤醒路径PSM_EINT的作用是在模组进入PSM省电模式后通过外部事件把它唤醒。原理图里PSM_EINT_SET从主控来经过Q7到模组PSM_EINT脚。实际使用场景是主控和模组都睡下某个外部传感器产生中断事件主控被唤醒后拉低PSM_EINT_SET通知模组退出PSM然后双方通过UART交互。这块容易踩的坑是主控休眠时GPIO状态不稳定导致PSM_EINT被意外拉低模组根本睡不进去。解决办法是主控进入休眠前把PSM_EINT_SET对应的GPIO配成固定高电平或者高阻输入不要在休眠流程里反复翻转。配合RI脚做数据到达唤醒时需要注意RI的电平定义不同版本固件有差异打印RI状态确认比较保险。6. 射频天线与整板调试从原理图到首板验证RF_ANT从BC26的35脚引出经过U3Z-21310110021001这颗射频匹配/滤波网络后接到RF1KH-IPEX-K501-29IPEX座。U3的作用是阻抗匹配和带外抑制NB-IoT工作频段在B3/B5/B8等匹配网络通常由模组厂商参考设计给出抄板时不要随意改动U3的型号和位置天线走线需要控制特性阻抗常见做法是表层微带线线宽根据板厚和叠层计算走线下方保持完整参考地IPEX座附近留出净空区。拿到第一版贴好的板子调试顺序建议固定在六步先量PP5V和PP3V3有无短路再量PP1V8是否正常然后量电平转换电路各路空闲电平确认无误后发AT指令看到OK后查ATCPIN?和ATCSQ最后注册网络看NETLIGHT。如果NETLIGHT慢闪或闪烁节奏不符合预期优先查天线是否接好、U3焊接是否连锡再用频谱仪看射频输出。另外BC26的ADC0引脚可以通过两颗电阻分压检测电池电压分压后的电压不要超过1.8V这类小技巧在整板功耗调优时非常实用能让主控在不额外增加采样芯片的情况下完成电池电量监控。本文还有配套的精品资源点击获取