先搞懂它是什么
- API(应用程序接口):SDK 提供给应用的函数。本栏目以 SDK 源码的公开头文件(
drivers/lhal/include、components/各组件)为事实来源,按组件分类整理,共收录 1800+ 个 API。 - 统一套路:几乎所有驱动 API 都是“取设备句柄 → 初始化 → 操作 → 处理结果”四步,详见 内核与系统 API。
- 说明语言:功能说明以 SDK 头文件 doxygen 与驱动实现源码为依据;中文页为中文说明,英文页为英文原文。
芯片范围说明
本栏目以 Ai-M61 / Ai-M62(BL616/BL618) 为准。SDK 中的 BL616CL 对应安信可 Ai-M64 系列模组,其专属外设(如 touch v2、ADC v2、PEC、DSI、视频解码、DMA2D 等)已在对应分类中以「(仅 Ai-M64 支持)」标注,Ai-M61/Ai-M62 不支持这些外设。
API 分类索引
| 分类 | 内容 | 参考页 |
|---|---|---|
| 内核与系统 | 设备句柄、中断、时钟、复位、定时器、多核同步 | 内核与系统 API |
| 基础外设 | GPIO/UART/SPI/I2C/ADC/PWM/Timer/DMA/Flash 等核心外设 | 基础外设 API |
| 多媒体 | 显示(DBI/DSI/DVP/OSD/触摸)与音视频(I2S/AUADC/AUDAC/CAM/MJPEG) | 多媒体 API |
| 安全加密 | AES/SHA/PKA/TRNG/ECDSA/DSA 等安全引擎 | 安全加密 API |
| 系统、存储与升级 | MTD/EasyFlash、FATFS/LittleFS、崩溃转储、OTA | 系统、存储与升级 API |
| FreeRTOS | 任务、队列、信号量、互斥锁、事件组、软件定时器 | FreeRTOS API |
| WiFi 与网络 | wifi_mgmr、fhost、lwIP Socket | WiFi 与网络 API |
| BLE | 控制器、主机栈、GAP/GATT/连接 | BLE API |
| Shell 与日志 | 串口命令行、bflog 日志分级 | Shell 与日志 API |
使用套路(举一反三)
c
/* 1. 取设备句柄 */
struct bflb_device_s *dev = bflb_device_get_by_name("uart0");
/* 2. 初始化(配置模式/参数/速率) */
bflb_uart_init(dev, config);
/* 3. 操作(读/写/启动/停止) */
/* 4. 处理结果/状态 */常见考点 / 面试题
SDK API 为什么都要先 bflb_device_get_by_name?
设备模型把“设备名 → 句柄(地址/中断/操作表)”统一管理,驱动 API 通过句柄工作,换实例或芯片时代码风格不变。
怎么快速找到某个外设的 API?
API 前缀即外设名(如 GPIO 是 bflb_gpio_*、UART 是 bflb_uart_*、Wi-Fi 是 wifi_mgmr_*、BLE 是 bt_*),按本栏目分类索引定位后再查对应头文件。
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

