Skip to content

内核(设备模型)

bflb_device_set_userdata(device, user_data)

把用户数据绑定到设备句柄

参数

  • device:设备句柄
  • user_data:用户数据指针

返回值:无

bflb_device_get_by_name(name)

按名称获取外设设备句柄(所有驱动 API 的入口)

参数

  • name:设备名

📎 设备名速查:支持的设备名(BL616)

返回值:设备句柄

通用工具

arch_strcmp(str1, str2)

字符串比较(可走 ROM API),返回差值

参数

  • str1:参数说明见 SDK 头文件
  • str2:参数说明见 SDK 头文件

返回值:int

arch_memcmp(s1, s2, n)

内存字节比较(可走 ROM API),返回差值

参数

  • s1:参数说明见 SDK 头文件
  • s2:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:int

arch_delay_us(cnt)

软件微秒级延时(循环等待)

参数

  • cnt:参数说明见 SDK 头文件

返回值:无

arch_delay_ms(cnt)

软件毫秒级延时(循环等待)

参数

  • cnt:参数说明见 SDK 头文件

返回值:无

bflb_soft_crc16(in, len)

软件计算 CRC16 校验

参数

  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint16_t

bflb_soft_crc32_ex(initial, in, len)

以指定初值软件计算 CRC32

参数

  • initial:参数说明见 SDK 头文件
  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint32_t

bflb_soft_crc32(initial, in, len)

软件计算 CRC32 校验

参数

  • initial:参数说明见 SDK 头文件
  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint32_t

bflb_check_cache_addr(in, len)

判断地址是否属于可缓存(XIP/PSRAM)区域

参数

  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint32_t

bflb_check_cache_addr_aligned(in, len)

判断地址是否按缓存行大小对齐

参数

  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint32_t

bflb_get_app_version_from_efuse(version)

@}

返回值:见 SDK 头文件

bflb_set_app_version_to_efuse(version)

@}

返回值:见 SDK 头文件

bflb_get_boot2_version_from_efuse(version)

@}

返回值:见 SDK 头文件

bflb_set_boot2_version_to_efuse(version)

@}

返回值:见 SDK 头文件

bflb_get_boot2_info_from_flash(version)

@}

返回值:见 SDK 头文件

bflb_get_chip_type(chip_type, chip_version)

@}

返回值:见 SDK 头文件

volatile(ebreak)

@}

返回值:见 SDK 头文件

arch_memcpy(dst, src, n)

内存复制(可走 ROM API)

参数

  • dst:参数说明见 SDK 头文件
  • src:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:void*

arch_memset(s, c, n)

内存填充(可走 ROM API)

参数

  • s:参数说明见 SDK 头文件
  • c:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:void*

arch_memcpy4(dst, src, n)

按 4 字节对齐复制(可走 ROM API)

参数

  • dst:参数说明见 SDK 头文件
  • src:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:uint32_t*

arch_memcpy_fast(pdst, psrc, n)

优化后的快速内存复制(对齐时按字复制)

参数

  • pdst:参数说明见 SDK 头文件
  • psrc:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:void*

arch_memset4(dst, val, n)

按 4 字节对齐填充(可走 ROM API)

参数

  • dst:参数说明见 SDK 头文件
  • val:参数说明见 SDK 头文件
  • n:参数说明见 SDK 头文件

返回值:uint32_t*

bflb_get_no_cache_addr(in, len)

获取指定可缓存地址的无缓存映射地址

参数

  • in:参数说明见 SDK 头文件
  • len:长度

返回值:[in] uint32_t

printf(n, string, function, file, line)

格式化打印到串口(标准库函数)

返回值:见 SDK 头文件

中断

bflb_irq_initialize()

中断 initialize.

返回值:无

bflb_irq_save()

关闭 global irq and save the previous 状态。

返回值:last 状态

bflb_irq_restore(flags)

使能 global irq by the previous 状态。

参数

  • flags:previous 状态 by bflb_irq_save

返回值:无

bflb_irq_attach(irq, isr, arg)

绑定中断 with 回调。

参数

  • irq:irq number
  • isr:中断 回调
  • arg:用户数据

返回值:A negated errno 值 on failure.

bflb_irq_detach(irq)

解绑中断, reset 中断 回调。

参数

  • irq:irq number

返回值:A negated errno 值 on failure.

bflb_irq_enable(irq)

使能中断。

参数

  • irq:irq number

返回值:无

bflb_irq_disable(irq)

关闭中断。

参数

  • irq:irq number

返回值:无

bflb_irq_set_pending(irq)

设置中断 with pending。

参数

  • irq:irq number

返回值:无

bflb_irq_clear_pending(irq)

清除中断 pending 状态。

参数

  • irq:irq number

返回值:无

bflb_irq_set_nlbits(nlbits)

设置中断 group。

参数

  • nlbits:参数说明见 SDK 头文件

返回值:无

bflb_irq_set_priority(irq, preemptprio, subprio)

设置中断 priority。

参数

  • irq:irq number
  • preemptprio:preempt priority
  • subprio:sub priority

返回值:无

bl618dg_level2_irq_handler(irq, preemptprio, subprio)

设置中断 priority。

参数

  • irq:irq number
  • preemptprio:preempt priority
  • subprio:sub priority

返回值:无

时钟

bflb_peripheral_clock_control(peri, enable)

enable/disable peri clock

参数

  • peri:: BFLB_PERIPHERAL_xxx
  • enable:: Boolean 值 to enable or disable the clock

返回值:int

bflb_peripheral_clock_get(peri)

get peri clock 值

参数

  • peri:: BFLB_PERIPHERAL_xxx

返回值:int

bflb_peripheral_clock_status_get(peri)

get peri clock 状态

参数

  • peri:: BFLB_PERIPHERAL_xxx

返回值:int

bflb_clk_get_system_clock(type)

Get system clock frequence

参数

  • type:system clock type

返回值:frequence

bflb_clk_get_peripheral_clock(type, idx)

Get peripheral clock frequence

参数

  • type:peripheral type
  • idx:peripheral index

返回值:frequence

复位

bflb_peripheral_reset(peri)

reset peri

参数

  • peri:: BFLB_PERIPHERAL_xxx

返回值:int

设备名

链表

bflb_dlist_remove(n)

从双向链表删除节点

参数

  • n:the node to remove from the list.

返回值:见 SDK 头文件

bflb_dlist_insert_after(l, n)

把节点插入指定节点之后

参数

  • l:list to insert it
  • n:new node to be inserted

返回值:见 SDK 头文件

bflb_dlist_insert_before(n, l)

把节点插入指定节点之前

参数

  • n:new node to be inserted
  • l:list to insert it

返回值:见 SDK 头文件

eFuse 控制器

bflb_ef_ctrl_get_common_trim_list(trim_list)

获取 eFuse control common trim list。

参数

  • trim_list:pointer to save trim list

返回值:trim list length

bflb_ef_ctrl_autoload_done(dev)

检查 eFuse 自动加载是否完成

参数

  • dev:设备句柄

📎 设备名速查:支持的设备名(BL616)

返回值:int

bflb_ef_ctrl_set_para(para)

配置 eFuse 读写的时序/延时参数

参数

  • para:parameter for eFuse program or read

返回值:int

bflb_ef_ctrl_write_direct(dev, offset, pword, count, program)

按偏移直接编程写入 eFuse(可选立即烧写)

参数

  • dev:设备句柄
  • offset:偏移
  • pword:参数说明见 SDK 头文件
  • count:数量
  • program:参数说明见 SDK 头文件

📎 设备名速查:支持的设备名(BL616)

返回值:无

bflb_ef_ctrl_read_direct(dev, offset, pword, count, reload)

按偏移直接读取 eFuse 数据(可选重新加载)

参数

  • dev:设备句柄
  • offset:偏移
  • pword:参数说明见 SDK 头文件
  • count:数量
  • reload:参数说明见 SDK 头文件

📎 设备名速查:支持的设备名(BL616)

返回值:无

bflb_ef_ctrl_read_common_trim(dev, name, trim, reload)

按名称读取 eFuse 公共校准参数

参数

  • dev:设备句柄
  • name:名称
  • trim:参数说明见 SDK 头文件
  • reload:参数说明见 SDK 头文件

📎 设备名速查:支持的设备名(BL616)

返回值:无

bflb_ef_ctrl_write_common_trim(dev, name, value, program)

按名称写入 eFuse 公共校准参数(含奇偶校验)

参数

  • dev:设备句柄
  • name:名称
  • value:值
  • program:参数说明见 SDK 头文件

📎 设备名速查:支持的设备名(BL616)

返回值:无

bflb_ef_ctrl_is_all_bits_zero(val, start, len)

判断数值的指定位段是否全为 0

参数

  • val:参数说明见 SDK 头文件
  • start:起始位置
  • len:长度

返回值:uint8_t

bflb_ef_ctrl_get_byte_zero_cnt(val)

统计一个字节中为 0 的位数

参数

  • val:参数说明见 SDK 头文件

返回值:uint32_t

bflb_ef_ctrl_get_trim_parity(val, len)

计算指定位长的奇偶校验位

参数

  • val:参数说明见 SDK 头文件
  • len:长度

返回值:uint8_t

bflb_ef_ctrl_busy(dev)

Check eFuse busy 状态

参数

  • dev:ef control 设备 pointer

📎 设备名速查:支持的设备名(BL616)

返回值:1 for busy 0 for not

bflb_ef_ctrl_busy_r1(dev)

Check eFuse region1 busy 状态

参数

  • dev:ef control 设备 pointer

📎 设备名速查:支持的设备名(BL616)

返回值:1 for busy 0 for not

支持的设备名(BL616)

以下设备名可用于 bflb_device_get_by_name(name) 获取外设句柄。设备表取自 SDK drivers/lhal/config/ 下对应芯片的 device_table.c:同时出现在 BL616 与 BL616CL 设备表中的设备名,Ai-M61 / Ai-M62 / Ai-M64 均支持;仅 BL616 表有的为 Ai-M61 / Ai-M62;仅 BL616CL 表有的为 Ai-M64 专属。

设备名外设支持的模组参考
adcADCAi-M61 / Ai-M62ADC
dacDACAi-M61 / Ai-M62DAC
ef_ctrleFuse 控制器Ai-M61 / Ai-M62 / Ai-M64EFUSE
gpioGPIOAi-M61 / Ai-M62 / Ai-M64GPIO 输出(点亮 LED)
uart0UART 串口Ai-M61 / Ai-M62 / Ai-M64UART(串口)
uart1UART 串口Ai-M61 / Ai-M62 / Ai-M64UART(串口)
spi0SPIAi-M61 / Ai-M62 / Ai-M64SPI 协议
pwm_v2_0PWM v2Ai-M61 / Ai-M62 / Ai-M64PWM
dma0_ch0DMAAi-M61 / Ai-M62 / Ai-M64DMA 传输
dma0_ch1DMAAi-M61 / Ai-M62 / Ai-M64DMA 传输
dma0_ch2DMAAi-M61 / Ai-M62 / Ai-M64DMA 传输
dma0_ch3DMAAi-M61 / Ai-M62 / Ai-M64DMA 传输
i2c0I2CAi-M61 / Ai-M62 / Ai-M64I2C 协议
i2c1I2CAi-M61 / Ai-M62 / Ai-M64I2C 协议
i2s0I2S 音频Ai-M61 / Ai-M62 / Ai-M64I2S 音频
timer0定时器Ai-M61 / Ai-M62 / Ai-M64TIMER 定时器
timer1定时器Ai-M61 / Ai-M62 / Ai-M64TIMER 定时器
rtcRTCAi-M61 / Ai-M62 / Ai-M64RTC 实时时钟
sec_aesAES 加密Ai-M61 / Ai-M62 / Ai-M64SEC_ENG 安全引擎(AES)
sec_shaSHA 摘要Ai-M61 / Ai-M62 / Ai-M64
sec_trng真随机数 TRNGAi-M61 / Ai-M62 / Ai-M64
sec_pkaPKA 公钥算法Ai-M61 / Ai-M62 / Ai-M64
sec_gmacGMAC 认证Ai-M61 / Ai-M62 / Ai-M64
emac0以太网 EMACAi-M61 / Ai-M62 / Ai-M64EMAC 以太网
watchdog0看门狗 WDGAi-M61 / Ai-M62 / Ai-M64TIMER 定时器
cks校验和 CKSAi-M61 / Ai-M62 / Ai-M64CKS 校验和
mjpegMJPEG 编码Ai-M61 / Ai-M62 / Ai-M64MJPEG 视频采集
irrx红外 IRAi-M61 / Ai-M62IR 红外(NEC 协议)
cam0摄像头 CAMAi-M61 / Ai-M62 / Ai-M64CAM 摄像头(DVP)
cam1摄像头 CAMAi-M61 / Ai-M62 / Ai-M64CAM 摄像头(DVP)
auadc音频采集 AUADCAi-M61 / Ai-M62 / Ai-M64音频采集及播放
audac音频 DACAi-M61 / Ai-M62 / Ai-M64音频采集及播放
sdio2SDIOAi-M61 / Ai-M62 / Ai-M64SDIO 高速接口
sdhSD 主机Ai-M61 / Ai-M62 / Ai-M64
dbiDBI 显示接口Ai-M61 / Ai-M62 / Ai-M64DBI 显示屏接口
wo单线输出 WOAi-M61 / Ai-M62 / Ai-M64WO 单线输出(WS2812)
usb_v2USBAi-M61 / Ai-M62 / Ai-M64
adc_v2_0ADC v2仅 Ai-M64 支持
uart2UART 串口仅 Ai-M64 支持
spi1SPI仅 Ai-M64 支持
dma0_ch4DMA仅 Ai-M64 支持
dma0_ch5DMA仅 Ai-M64 支持
dma0_ch6DMA仅 Ai-M64 支持
dma0_ch7DMA仅 Ai-M64 支持
timer0_captureTIMER 捕获仅 Ai-M64 支持
gmac0千兆以太网 GMAC仅 Ai-M64 支持
mjdecJPEG 解码仅 Ai-M64 支持
pec_sm0PEC v2仅 Ai-M64 支持
pec_sm1PEC v2仅 Ai-M64 支持
touch_v2touch v2仅 Ai-M64 支持

遇到问题?

如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

Released under the MIT License. Build Time 2026-09-11 14:52:23