5.4 KiB
5.4 KiB
基于 EB21-E 的星闪 SLE 硬件连接与固件初始化最小示例
目标:给硬件/固件同学一个可以直接落地的 EB21-E 使用备忘录,用于快速评估和原型验证。
1. 模组定位与典型应用
- 模组类型:EB21-E(利尔达),基于海思 Hi2825 SLE 低功耗星闪 SoC。
- 接口特点:UART/SPI/I2C/GPIO,多数场景推荐 UART 控制 + 外接天线。
- 典型应用:
- 低功耗远距离传感器(心率带、环境监测等);
- 手环/表带与网关之间的近距离/中距离高速链路;
- BLE → 星闪协议迁移过渡方案(利用类似 GATT 的上层抽象)。
2. 硬件连接最小原理图说明
以下以 MCU 使用 UART 控制 EB21-E 为例:
2.1 供电与地
VCC_3V3→ EB21-EVCC引脚(3.0V–3.6V,推荐 3.3V)。GND→ EB21-EGND引脚(至少两点星形接地,靠近模组的地大面积敷铜)。- 在 EB21-E
VCC旁边就近放置:- 100nF 贴片电容(0402/0603)
- 4.7µF–10µF 钽电容或陶瓷电容
2.2 UART 通信
- MCU
TX→ EB21-ERX(如UART0_RX)。 - MCU
RX→ EB21-ETX(如UART0_TX)。 - 波特率:
- 推荐从 115200 8N1 起步,后续可协商更高波特率。
- 注意:
- 若 MCU 为 5V IO,需加 电平转换器(如 TXS0108E)或分压电阻。
- 线长尽量 < 20cm,注意地参考一致。
2.3 复位与启动控制
EB21_RST:接MCU GPIO,低电平保持复位,高电平正常工作。- 上电后延时几毫秒再释放 RST。
- 如模组有
BOOT/MODE管脚:- 默认通过上拉/下拉电阻设置为 正常运行模式;
- 仅在升级固件或调试时切为 Boot 模式。
2.4 外接天线(E 版的关键)
ANT:RF 口 → IPEX 连接器 → 高频同轴线 → 外部天线(2.4GHz)。- PCB 布线:
ANT到 IPEX 尽量短直,50Ω 微带线;- 下方禁止铺地/信号(或按参考设计做阻抗控制)。
- 天线选型:
- 若追求极致远距离:选 2.4GHz 高增益定向天线(如 12–24dBi 八木/栅格)。
3. 固件初始化最小流程(MCU 侧)
以下示例为伪代码/结构化步骤,可根据具体 MCU 平台改写为 C/C++/Rust 等实现。
3.1 上电与 UART 初始化
void eb21_hw_init(void) {
// 1. 供电已由电源管理完成,此处只负责 IO 初始化
// 2. 配置 UART
uart_init(EB21_UART_PORT, 115200, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE);
// 3. 配置 RST 引脚
gpio_set_mode(EB21_RST_PIN, GPIO_MODE_OUTPUT);
gpio_write(EB21_RST_PIN, 0); // 先保持复位
delay_ms(10);
gpio_write(EB21_RST_PIN, 1); // 释放复位
// 4. 等待模组自检完成
delay_ms(100); // 视实际文档可调
}
3.2 与 EB21-E 的简单 AT/协议握手
很多厂商提供两种固件形态:
- AT 命令固件(UART 上下发 ASCII 命令)。
- 自定义二进制协议固件(类似本项目中蓝牙协议的 CMD/SEQ/CRC 格式)。
假设 EB21-E 提供 AT 命令风格接口(示例):
void eb21_send_cmd(const char *cmd) {
uart_write(EB21_UART_PORT, (const uint8_t *)cmd, strlen(cmd));
uart_write(EB21_UART_PORT, (const uint8_t *)"\r\n", 2);
}
bool eb21_wait_ok(uint32_t timeout_ms) {
char buf[64] = {0};
size_t len = uart_read_line(EB21_UART_PORT, buf, sizeof(buf), timeout_ms);
if (len == 0) return false;
return strstr(buf, "OK") != NULL;
}
bool eb21_basic_handshake(void) {
eb21_send_cmd("AT"); // 心跳
if (!eb21_wait_ok(100)) return false;
eb21_send_cmd("AT+VER?"); // 查询版本
if (!eb21_wait_ok(100)) return false;
// 其他必要的初始化命令,如设置角色/信道/功率
// eb21_send_cmd("AT+ROLE=PERIPHERAL");
// eb21_send_cmd("AT+POWER=MAX");
return true;
}
如果厂商提供 SLE 自定义协议栈,则可以将其看作“星闪版 GATT”:
- 先发“PING”/“HELLO”命令,确认链路正常;
- 然后配置本端角色(主/从)、频道、配对参数;
- 建链后以 TLV/帧格式收发业务数据。
4. 与现有 BLE 协议文档的映射思路
你当前的 doc_ble/蓝牙协议.md 已经定义了:
- 服务/特征 UUID;
- CMD 分段(控制/健康数据/紧急事件等);
- 统一数据包结构 (STX/LEN/CMD/SEQ/DATA/CRC)。
迁移到 EB21-E / 星闪 SLE 时,可以:
- 上层 CMD 不变:
- 继续使用现有 CMD_xxx 定义和数据结构(如心率包、血氧包)。
- 底层链路从 BLE GATT → SLE 链路:
- 将原本通过 GATT Notification/Write 的数据,改为通过 EB21-E 的“透传通道”发送;
- 在 MCU 上维护同样的打包/解包逻辑。
- 安全与加密:
- 若 EB21-E 内置加密/配对机制,可视作“链路加密”;
- 应用层仍可复用 AES/SM4 等加密封装敏感字段。
5. 调试建议
- 使用 USB-UART 转串口工具直接与 EB21-E 对话,先确认:
- 上电是否有启动 log;
- AT 命令是否响应;
- 在射频侧:
- 初期可用小 PCB 天线进行近距离联调;
- 功能 OK 后再换成高增益天线进行远距离验证。
如后续你确定具体 EB21-E 的数据手册/AT 指令集,我可以在本文件中继续补充:
- 完整 AT 命令表;
- 一个“星闪版 PING/心跳协议”的二进制帧格式示例;
- 与现有蓝牙协议命令一一对应的映射表。