上一篇把板子焊起来了,这一篇是后续调试记录:IO 与蜂鸣器、BLE 信号强度、墨水屏驱动。
一、按键、蜂鸣器与串口
先拿最基础的 IO 做验证。三个按键接普通 GPIO,蜂鸣器用一个 IO 驱动,规则很简单:按 KEY1 响 1 声,KEY2 响 2 声,KEY3 响 3 声,同时通过串口把按键编号打出来,方便确认有没有误触发。代码是主循环里轮询的,摘一段:
while (1)
{
if (HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) == GPIO_PIN_RESET)
{
Beep(1);
printf("KEY1 pressed, beep 1\r\n");
HAL_Delay(300);
}
/* KEY2 调 Beep(2),KEY3 调 Beep(3),逻辑一样 */
}串口走 CH340N 转 USB 到电脑,实测三个按键识别正常,没有连发,蜂鸣器响的次数也对得上。

二、BLE 射频信号
射频部分没有从零写,用的是官方 STM32WBA65 开发板的例程改的,把器件和配置换成 STM32WBA62CI 的对应参数后编译下载。手机端用 ST 的 BLE Toolbox 扫描看信号强度,天线用的是 FPC 软排线天线。
实测结果:设备和手机距离 30cm 以内,RSSI 大约在 -66dBm;拉到 2m 开外,就掉到 -77dBm 以下了。按理说这个距离还不算远,衰减有点偏快,我判断还是射频这块没处理好——要么 FPC 天线本身没选对,要么我那个 π 型匹配网络的参数还得按实际板子重新调。这块后面准备重新测一下匹配。

三、墨水屏:卡在 busy
最后是墨水屏。程序跑起来一直报 busy,看起来是驱动在等 BUSY 脚释放。拿万用表量测试点、抓了 SPI 波形,数据是正常的,命令也发出去了,说明时序和接线问题不大。
后来翻官方参考图纸对了一遍,才发现升压电路的电感规格不对:官方要 47μH、3020 封装的功率电感,我手上只有 0603 封装的,随手贴了一个。0603 的电感饱和电流和感值都撑不住,升压上不去,屏幕刷新就特别慢,偶尔直接卡住。

我要赚赏金
