硬件设计手册VerA1.6
BP1048B2硬件IO定义设计手册/规范/注意事项
BP1048 VerA固件功能概要
固件分为音乐固件和K歌固件两种类型
另外还有一种特殊的类型为UART串口固件,支持使用串口与其他单片机进行通信控制本芯片或获取数据。目前公版的串口固件由音乐固件修改而来,如果需要其他类型的,请联系我定制。
- 3通道(左右+混合)通道输出,可用作1.1/2.0/2.1系统
- 2路MIC输入(仅K歌固件可用,音乐固件仅支持1路MIC通话)
- 蓝牙输入
- 1路AUX有线音频输入
- 1路I2S音频输出(支持在软件中选择2.0/1.1/原声模式)
- 1路I2S音频输入*,和输出公用一个总线(需要定制启用,且不能与输出同时开启)
- 1路光纤音频输入
- USB/U盘输入
- TF卡输入
- 红外遥控输入
- 1路编码器输入,可用于控制音乐音量
- 1路POWERKEY通道,支持软开关机和6个按键
- 1路BAT_ADC检测通道,用于检测电池电压
- 1个普通LED信号输出
- 1路WS2812B信号输出,最大支持255个RGB灯,支持自定义灯效
- 1个AUX插入检测,支持插入自动切换模式
- 1个功放静音控制输出
- 1个I2C通道用于控制部分需要I2C协议控制的功放芯片
- 3路电位器通道,可通过APP自定义电位器功能
手册更新日志
2024-09-17 硬件版本微调至VerA1.2,去掉UART调参端口并使用蓝牙APP代替
2024-10-06 新版本固件去掉ADC_KEY按键(老版本固件如用到请前往历史文档中查看);增加充电检测端口;更新原理图
2024-12-07 增加电位器功能说明
2025-04-05 更新原理图,调整电位器说明
2025-05-31 V2版本固件文档更新(IO均未调整,仅小部分功能调整)
2025-08-23 增加串口固件相关说明
芯片介绍
一共48个引脚,28个GPIO
功能就那么多,都写在文档里了,你用不用随你
芯片本身的更多介绍请参见BP1048B2数据手册.pdf,里面包含引脚定义和详细参数
原理图概览

提示
原理图中LDOIN电源输入的二极管,是为了在5V供电下降压防止芯片太烫用的,如果直接使用电池直连给1048供电,或者使用3.3V电源供电,请去掉这个二极管
基础公用部分芯片设计
BP1048芯片的基础电源域,模拟音频输出域(DACL、DACR、DACX)、天线、USB设计,无论哪种固件,这些脚的连线均一致,因此请查看基础公用部分硬件设计文档
模拟音频输入(AUX输入)
引脚定义
| 引脚 | 功能 |
|---|---|
| 40(GPIOB2) | 音频 R 右声道输入 |
| 41(GPIOB3) | 音频 L 左声道输入 |
| 30(GPIO22) | AUX插入检测,拉低代表插入,如果不需要检测直接连接到地 |
参考电路
关于插入检测,请自行研究你购买的耳机头结构,然后看情况调整

麦克风输入
仅K歌固件支持K歌,音乐固件只支持一个麦克风1作为蓝牙通话的麦克风输入,如果需要使用蓝牙通话,请连接麦克风并前往蓝牙APP-设备参数配置中开启蓝牙通话
麦克风输入需要前级放大电路,一般前面会放个运放用来放大,这个电路可以参考下网上,我也没怎么设计过
引脚定义
| 引脚 | 功能 |
|---|---|
| 42 | 麦克风2 |
| 43 | 麦克风1 |
参考电路
下面是山景官方给的电路,经过测试可以使用,检测脚不用管,软件里没有启用检测脚

数字光纤输入
用于连接电脑主板后面的光纤口/机顶盒的光纤口等等
硬件上需要搭配光纤接收座使用,注意是接收座不是发射座
引脚定义
| 引脚 | 功能 |
|---|---|
| 36(GPIOA31) | SPDIF_IN |
参考电路
下面是山景官方给的图,已经验证过了,放心使用,有些电感其实阉割掉也没事,比如L1,直接短接就可以,数字音频没那么讲究,毕竟只是0和1的世界罢了

数字I2S输入/输出*
FM固件下无I2S功能
另外如需启用I2S输入功能的话需要与我联系,默认不开启,因为与光纤输入引脚冲突
山景的软件中可以配置协议(左对齐右对齐标准I2S)和各种配置,连接USB即可在线修改
如果要同时使用输入输出的话,这个东西必须配置为Master模式,带两个从机
引脚定义
| 引脚 | 功能 | 说明 |
|---|---|---|
| 19(GPIOA7) | MCLK_OUT | MCLK输出 |
| 33(GPIOA28) | LRCLK | |
| 34(GPIOA29) | BCLK | |
| 35(GPIOA30) | DATA_OUT | I2S数据输出 |
| 36(GPIOA31) | DATA_IN | I2S数据输入* |
POWER_ON电源开信号(必读)
芯片会在正常上电之后将这个脚拉高,可以用来用作电源指示灯或者软开关的MOS/三极管控制脚
默认情况下,芯片上电不会自动启动,而是需要长按POWER_KEY之后才会开机
注意
如果需要来电自启,请将这个引脚直接连接到地,芯片会在上电时自动启动,当然手动关机,开机功能仍然可以使用
引脚定义
| 引脚 | 功能 |
|---|---|
| 8(GPIOA0) | POWER_ON信号输出 |
警告
如果连接到外部MOS/灯等使用的话,必须在输出串一个100Ω以上的电阻,要不然上电的一瞬间把这个引脚拉低的话会被认为是来电自启模式而造成不符合预期的现象
控制
一组POWER_KEY(6个),共支持6个按键+1个编码器+3个电位器,按键支持双击 单击 长按 功能
引脚定义
| 引脚 | 功能 | 说明 |
|---|---|---|
| 5 | POWER_KEY | 内部包含上拉电阻,不用的话请悬空,不要连接到GND或电源上 |
| 6(GPIOB4) | 编码器A端 | / |
| 7(GPIOB5) | 编码器B端 | / |
| 32(GPIOA24) | 电位器1(通道E) | 如果不需要使用请悬空,不要连接到任何东西上 |
| 38(GPIOB0) | 电位器2(通道M) | 如果不需要使用请悬空,不要连接到任何东西上 |
| 39(GPIOB1) | 电位器3(通道N) | 如果不需要使用请悬空,不要连接到任何东西上 |
编码器
注意是编码器,不是电位器,可以无极旋转的那种是编码器,拧了几下就到底的是电位器
一些编码器自带按键,可以将这个按键作为K1使用,这样基本上一个编码器能搞定所有常用操作了,参考电路如下
比较乱,懒得改封装 凑合看看

功能定义
音乐音量控制
POWER_KEY通道
参考设计,无需外挂分压电阻,至于K1为什么没了,因为被放到编码器那边当开关去了,需要单独把K1放到这里的话,依样画葫芦电阻换成100Ω的即可
注意
注意:如果不使用POWER_KEY脚的话请悬空,不要连接到地或者LDOIN

功能定义
| 按键 | 短按功能 | 长按功能 | 备注 | 阻值 |
|---|---|---|---|---|
| K1 | 模式切换 | 开关机 | 双击支持TWS配对(蓝牙模式下)/FM搜台(收音机模式下) | 100Ω |
| K2 | 音量减 | 上一首 | 16KΩ | |
| K3 | 音量加 | 下一首 | 27KΩ | |
| K4 | 麦克风音量减(K歌固件) 切换音效配置(音乐固件) | 切换音效配置(K歌固件) 断开蓝牙连接(音乐固件) | 43KΩ | |
| K5 | 麦克风音量加(K歌固件) 静音(音乐固件) | 断开蓝牙连接 | 82KΩ | |
| K6 | 音乐播放/暂停(音乐固件) 一键原声/伴奏(K歌固件) | 播报电池电量(音乐固件) 音乐播放/暂停(K歌固件) | 220KΩ |
警告
注意事项:POWER_KEY的对地100nF电容用于按键消抖,不可省略。此外K1按键串的100Ω电阻正常情况下不可省略
电位器
公版固件一共支持3路电位器,电位器功能支持在蓝牙APP-电位器配置中进行配置,设计时无需过多关心电位器的顺序
电位器需要使用1048的VDD3.3输出作为分压源,禁止连接到外部电压源比如5V电源
电位器的消抖电容可以使用10nf-100nf,电位器阻值支持10k-100k
注意固件中带有电位器检测功能,开机时当没有插入电位器时会自动禁用此通道,因此在插入电位器之后才能在APP中进行调节,否则会看不见电位器通道,注意电位器不支持热插拔,请不要在开机时拔掉电位器
注意
注意:电位器通道2和3(芯片B0,B1脚)的电位器由于1048硬件原因,对地电容建议集成在主板上,不要放在电位器小板上,否则容易导致电位器检测误判。通道1不受影响

功能定义
| 功能 | 备注 |
|---|---|
| 禁用(默认) | 禁用该电位器,旋转时不做任何操作 |
| 音乐音量 | 调节音乐主音量 |
| 麦克风音量 | 仅麦克风固件,调节麦克风主音量 |
| 立体声通道音量 | DacLR通道音量 |
| 混合通道音量 | DacX通道音量 |
| I2S通道音量 | I2S数字输出通道音量(仅三分频固件) |
| 音乐低音(F0) | 映射到Music Pre Eq的F0 |
| 音乐中音(F1) | 映射到Music Pre Eq的F1 |
| 音乐高音(F2) | 映射到Music Pre Eq的F2 |
| 麦克风低音(F0) | 仅麦克风固件,映射到Mic Out Eq的F0 |
| 麦克风中音(F1) | 仅麦克风固件,映射到Mic Out Eq的F1 |
| 麦克风高音(F2) | 仅麦克风固件,映射到Mic Out Eq的F2 |
| 混合通道低切频率 | 映射到DacX通道的ButterWorth EQ的频率,需要手动调整为低通模式,支持的频率范围20-475HZ |
| 麦克风混响&回声 | 仅麦克风固件 |
| 麦克风回声 | 仅麦克风固件 |
红外遥控
红外接收为NEC固定码,采用淘宝上贼便宜的遥控器作为示例码库,如果需要定制,请联系我,目前适配的遥控器链接如下:
21键 红外遥控器 38khz 蓝牙MP3解码板USB读插卡音响音箱遥控器 非常便宜还包邮带电池
红外接收头可以采用任何三条腿带内置IC的接收头,比如VS/HX1838等,不支持直接使用两条腿的红外二极管
电路很简单,参考如下

引脚定义
| 引脚 | 功能 | 说明 |
|---|---|---|
| 37(GPIOB6) | 红外遥控输入信号 | / |
功能定义
| 遥控器按键 | 短按功能 | 长按功能 | 红外码(NEC4bit前两位) |
|---|---|---|---|
| 电源 | 电源关机(不支持开) | 电源关机(不支持开) | 0xBA |
| MODE | 模式切换 | / | 0xB9 |
| 静音 | 静音/取消静音 | / | 0xB8 |
| 播放/暂停 | 播放/暂停 | 播报电池电量 | 0xBB |
| 上一首 | 上一首 | 上一首 | 0xBF |
| 下一首 | 下一首 | 下一首 | 0xBC |
| EQ | 音效模式 | / | 0xF8 |
| VOL- | 音量减 | 音量减 | 0xEA |
| VOL+ | 音量加 | 音量加 | 0xF6 |
| 0 | 音乐高音加 | 音乐高音加 | 0xE9 |
| RPT | REPEAT | / | 0xE6 |
| CLOCK | 收音机电台扫描 | 蓝牙连接控制(一般用于主动断开蓝牙) | 0xF2 |
| 1 | 音乐高音减 | 音乐高音减 | 0xF3 |
| 2 | 麦克风音量减 | 麦克风音量减 | 0xE7 |
| 3 | 麦克风音量加 | 麦克风音量加 | 0xA1 |
| 4 | 音乐低音加 | 音乐低音加 | 0xF7 |
| 5 | 麦克风高音减 | 麦克风高音减 | 0xE3 |
| 6 | 麦克风高音加 | 麦克风高音加 | 0xA5 |
| 7 | 音乐低音减 | 音乐低音减 | 0xBD |
| 8 | 麦克风低音减 | 麦克风低音减 | 0xAD |
| 9 | 麦克风低音加 | 麦克风低音加 | 0xB5 |
虽然定义看起来有点乱,但是我也没钱去定制遥控器,不会有比两块钱一个更便宜的遥控器了,所以只能拿数字键凑合功能,主打一个有总比没有好,其实看图就会发现规律,一般用几次就能记住了

提示
关于调节高音低音:
这里面所说的高音低音都是默认定义,实际上是映射到EQ上的,观察下默认EQ就可以发现有两个点分别对应高音和低音,假如你改了自定义EQ,那么那两个点将会被映射到你自定义EQ上的点,也可以利用这个特性来利用这个功能来操作EQ
SD/TF卡
应用场景为,装箱的音箱可以内置TF卡播放,并且也可以连接电脑直接作为读卡器,这样就不用插U盘和连接蓝牙也能放歌了
引脚定义
| 引脚 | 功能 |
|---|---|
| 23(GPIOA15) | SD_DATA |
| 24(GPIOA16) | SD_CLK |
| 25(GPIOA17) | SD_CMD |
TF卡参考电路

其中CD为检测脚,与SD_CLK复用,串个1K电阻连上去就行了,必须连接这个检测,要不然卡会没法识别
电池电压监测
芯片内置12bit ADC(0-4096),普普通通,需要外挂分压电阻
仅支持标准3.7V的锂电池测量,不支持磷酸铁锂/铅酸电池,不过虽然说不支持,但是仍然可以使用电量播报功能直接播报电压,只不过无法计算出百分比罢了
需要分压电阻规格如下(量程0-26V最大6串锂电池),精度必须要小于等于1%,否则因为电阻带来的误差自己负责:
R1(连接到电池端):47KΩ
R2(连接到地):6.8KΩ
串数出厂时默认配置为1-4串电池自动检测,假如超过4串或者不需要检测,需要在蓝牙APP-设备参数配置中手动配置
| 引脚 | 功能 |
|---|---|
| 28(GPIOA20) | 电池电压检测 |
参考电路
电路很简单,上面直接连接VBAT即可,注意R36两端电压不要超过3.3V,超过可能会烧芯片

注意事项
- 预定义的分压电阻阻值较大,ADC本身测量时就会有±3mv的波动,在测量单节锂电池时1mv的波动可能会造成0.0几伏的检测波动,因此这是正常的误差,如果介意的,需要修改更小的分压电阻以降低量程来换取更高的精度,联系我定制固件
- 开机瞬间ADC的测量值会偏低,我在软件中已经增加了补偿,尽管如此还是有很小的概率会造成开机时测量不准确,开机之后就会恢复正常
- 电量百分比是通过电压值计算而来,没有库仑计也没办法精确计算,目前的电量曲线是根据力神动力电池的放电特性来的,其他动力电池的曲线大差不差,因此稍微有点误差属于正常,如果需要定制曲线可以联系我
- 如果测量线与功放供电共用的话,功放大功率瞬间把电池电压拉低引起检测值偏低的情况也属于正常,主控检测的速度非常快,这种压降拿普通电压表测不出来的,我已经在软件中做了60个窗口取平均值以尽可能获得准确的电量,所以尽量采用内阻低的电池和降低线阻,在PCB布线时可以直接从电源输入处引一条线到测量电路
- 测量电路本身会耗电,毕竟两个电阻,所以在设计软开关时需要把这一点考虑到,不要不经过开关直接连接到测量电路了
- 山景蓝牙底层不支持精确到百分比1,因此返回的电量为十的倍数,四舍五入后的电压,范围为10%-100%
关于误差
简单测试了一下误差,非专业仪器,仅供参考

充电检测
串口固件不支持该功能,因为引脚冲突
用于电池供电场景下的充电器插入检测/提示,这样你的充电电路装在箱子里就不用外接一盏灯来显示充电状态了,实现了插入提示音功能和拓展RGB指示灯指示功能
该引脚内部自带下拉,如果不用此功能请将引脚悬空或连接到GND
警告
IO引脚耐压3.3V,不要将此引脚直接连接到充电输入端口!!建议连接到充电指示灯或在电源输入加个稳压管引到这个脚
引脚定义
| 引脚 | 功能 |
|---|---|
| 20(GPIOA9) | 充电检测脚(高电平为正在充电) |
功放静音脚
支持控制功放关断/开启,无声音时自动关闭功放以达到省电和降低底噪的目的,开机时用于消除POP音,一般连接到功放的MUTE脚
软件逻辑为:静音时关断(低电平),播放时开启(高电平),支持定制反转,不过正常情况下你加个三极管反转下就可以了
引脚定义
| 引脚 | 功能 |
|---|---|
| 31(GPIOA23) | 功放静音控制 |
提示
就算不使用这个静音脚功能,芯片在启动和关闭时也仅有很小的POP音(升级固件和硬断电时除外),因此如果你的设计中存在非常大的开机POP音,请检查别的电路和元件,这种情况下和芯片没有关系
LED
软件定义了一个万能LED作为指示灯输出,支持显示蓝牙状态,播放状态,按键反馈等
引脚定义
| 引脚 | 功能 |
|---|---|
| 29(GPIOA21) | 万能LED+ |
IO输出方式为高电平亮 低电平灭 参考电路如下,电阻决定亮度,IO驱动能力为6MA

RGB
本设计使用WS2812作为RGB灯输出,最大支持串255个灯珠并可以独立控制,刷新率25fps左右
使用这个首先建议了解WS2812B的工作方式,简单看一下,了解为什么一条线就能支持那么多LED即可
https://blog.csdn.net/Xhw3f586/article/details/132295552
虽然输出就一个引脚,但是区分了两种LED:主LED(支持状态显示/电量等)和拓展LED(能量灯/电量/百分比等)
软件中定义第一个LED永远都是主LED,剩下的LED作为拓展LED使用
目前软件中定义为8个(1+7)灯珠,如果需要修改的话请使用蓝牙APP-RGB配置自行配置
如果只需要主LED,连接一个即可,主灯的功能可以完全代替普通LED
如果只需要拓展LED,必须经过一个主LED后才能得到拓展LED所需的信号,一般很少用这种场景,真要这样的话就板载一个WS2812作为信号处理吧
注
不同型号灯珠数据手册上的时序其实并不一样,但是B站有博主测过,其实支持的范围很广,所以按理只要是个WS2812B就能正常工作,不排除极小概率下有些神奇的厂家搞出来的阴间灯珠不能用或者显示异常,软件中定义的0码高电平为300ns,1码高电平为900ns,参考下即可 一般都能用
引脚定义
| 引脚 | 功能 |
|---|---|
| 9(GPIOA1) | WS2812B RGB数据 |
参考电路

默认颜色/模式说明
主指示灯
支持在蓝牙APP-RGB配置中自定义每种模式的颜色
| 颜色/模式 | 含义 |
|---|---|
| 任意颜色呼吸灯 | 当然正在播放音乐/麦克风声音 |
| 蓝灯常亮 | 蓝牙模式且蓝牙已连接并没有播放音乐 |
| 蓝灯闪烁 | 蓝牙模式且蓝牙未连接处于等待配对状态 |
| 黄灯 | 收音机模式 |
| 紫色 | TF卡播放/U盘播放/USB播放 |
| 粉色 | 同轴/光纤/I2S播放 |
| 橙色 | AUX线路输入播放 |
| 白色/灭 | 开机或空闲 |
| 青色(浅蓝色) | TWS从机模式 |
| 电量播报 | 绿=>红渐变,代表电量100%=>10% |
拓展指示灯
支持在蓝牙APP-RGB配置中自定义灯效和颜色
| 颜色/模式 | 含义 |
|---|---|
| 能量灯(默认) | 当前播放的音乐/麦克风声音能量 |
| 黄色百分比 | 麦克风当前音量,仅在触发麦克风音量调节时显示 |
| 白色百分比 | 音乐当前音量,仅在触发音乐音量调节时显示 |
| 电量播报 | 百分比+颜色形式展示 |
| 充电显示 | 仿大疆mini3充电管家指示灯形式 |
串口通信*
该功能仅串口固件支持,协议说明请前往串口通信协议说明查看详情
调试时可以使用常规USB转串口工具进行通信测试,波特率为115200,串口电平为3.3V
引脚定义
| 引脚 | 功能 |
|---|---|
| 20(GPIOA9) | UART_RX接收 |
| 21(GPIOA10) | UART_TX发送 |
参考电路

FM收音机*
仅FM收音机定制固件支持该功能
需要外挂RDA5807M(其他型号没测试)芯片作为FM接收芯片,提供12M晶振信号输出,无需外部晶振
引脚定义
| 引脚 | 功能 |
|---|---|
| 17(GPIOA5) | I2C_SDATA |
| 18(GPIOA6) | I2C_SCLK |
| 34(GPIOA29) | 12M晶振信号输出 |
| 38(GPIOB0) | FM右声道 |
| 39(GPIOB1) | FM左声道 |
设计规则
- FM电路尽量远离MCU主控
- FM I2C两条线需要使用10K电阻上拉3.3V,并且需要串接磁珠或220R-1K电阻
参考电路
此电路仅供参考,FMCLK为12M信号,如果摆动幅度不够,请调整R27阻值
FM_LOUT和FM_ROUT连接到主控上面
