跳转至

SSI

SSI(Synchronous Serial Interface)是精简的同步串行接口——去除 CPOL/CPHA/帧格式等配置,直接发送"地址+数据",专为寄存器级外设通信优化。

支持 4 种地址/数据组合模式(addr16_data16、addr32_data16、addr32_data32 等)。适用 RF 前端、PMIC 等寄存器配置型外设。

头文件清单

#include "include/driver/ssi.h"

接口清单

接口名称 功能简述
uapi_ssi_init 初始化SSI驱动
uapi_ssi_deinit 去初始化SSI驱动
uapi_ssi_read_addr16_data16 通过16位地址读取SSI 16位寄存器
uapi_ssi_write_addr16_data16 通过16位地址写入SSI 16位寄存器
uapi_ssi_read_addr32_data16 通过32位地址读取SSI 16位寄存器
uapi_ssi_write_addr32_data16 通过32位地址写入SSI 16位寄存器
uapi_ssi_read_addr32_data32 通过32位地址读取SSI 32位寄存器
uapi_ssi_write_addr32_data32 通过32位地址写入SSI 32位寄存器

Functions

uapi_ssi_init

void uapi_ssi_init(void)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 初始化SSI驱动模块,完成SSI控制器硬件资源配置
  • 调用前需确保SSI硬件时钟已使能
  • 该接口应在其他SSI读写操作之前调用

前置条件

  • SSI硬件时钟已使能
  • SSI硬件资源未被其他模块占用

uapi_ssi_deinit

void uapi_ssi_deinit(void)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 去初始化SSI驱动模块,释放SSI控制器硬件资源
  • 调用后不应再执行SSI读写操作
  • 重复调用不产生异常

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成

uapi_ssi_read_addr16_data16

errcode_t uapi_ssi_read_addr16_data16(uint16_t addr, uint16_t *data)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过16位地址读取SSI 16位寄存器值
  • 适用于访问16位地址空间的SSI寄存器
  • 读取结果通过出参data返回

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成
  • 入参data不为NULL,且指向内存空间已申请成功

入参

名称 参数类型 详细说明 约束取值范围
addr uint16_t 读取的寄存器地址 0x0000 ~ 0xFFFF
data uint16_t * 指向存储读取数据的指针 非NULL

出参

名称 数据类型 输出说明
data uint16_t * 存储读取到的16位寄存器值

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器读取成功
Other 其他错误码,参考errcode_t 执行失败

uapi_ssi_write_addr16_data16

errcode_t uapi_ssi_write_addr16_data16(uint16_t addr, uint16_t value)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过16位地址写入SSI 16位寄存器
  • 适用于访问16位地址空间的SSI寄存器
  • 写入值为16位宽

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
addr uint16_t 写入的寄存器地址 0x0000 ~ 0xFFFF
value uint16_t 写入的寄存器值 0x0000 ~ 0xFFFF

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器写入成功
Other 其他错误码,参考errcode_t 执行失败

uapi_ssi_read_addr32_data16

errcode_t uapi_ssi_read_addr32_data16(uint32_t addr, uint16_t *data)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过32位地址读取SSI 16位寄存器值
  • 适用于访问32位地址空间的SSI寄存器,数据位宽为16位
  • 读取结果通过出参data返回

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成
  • 入参data不为NULL,且指向内存空间已申请成功

入参

名称 参数类型 详细说明 约束取值范围
addr uint32_t 读取的寄存器地址 0x00000000 ~ 0xFFFFFFFF
data uint16_t * 指向存储读取数据的指针 非NULL

出参

名称 数据类型 输出说明
data uint16_t * 存储读取到的16位寄存器值

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器读取成功
Other 其他错误码,参考errcode_t 执行失败

uapi_ssi_write_addr32_data16

errcode_t uapi_ssi_write_addr32_data16(uint32_t addr, uint16_t value)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过32位地址写入SSI 16位寄存器
  • 适用于访问32位地址空间的SSI寄存器,数据位宽为16位
  • 写入值为16位宽

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
addr uint32_t 写入的寄存器地址 0x00000000 ~ 0xFFFFFFFF
value uint16_t 写入的寄存器值 0x0000 ~ 0xFFFF

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器写入成功
Other 其他错误码,参考errcode_t 执行失败

uapi_ssi_read_addr32_data32

errcode_t uapi_ssi_read_addr32_data32(uint32_t addr, uint32_t *data)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过32位地址读取SSI 32位寄存器值
  • 适用于访问32位地址空间的SSI寄存器,数据位宽为32位
  • 读取结果通过出参data返回

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成
  • 入参data不为NULL,且指向内存空间已申请成功

入参

名称 参数类型 详细说明 约束取值范围
addr uint32_t 读取的寄存器地址 0x00000000 ~ 0xFFFFFFFF
data uint32_t * 指向存储读取数据的指针 非NULL

出参

名称 数据类型 输出说明
data uint32_t * 存储读取到的32位寄存器值

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器读取成功
Other 其他错误码,参考errcode_t 执行失败

uapi_ssi_write_addr32_data32

errcode_t uapi_ssi_write_addr32_data32(uint32_t addr, uint32_t value)

头文件清单

#include "include/driver/ssi.h"

功能说明

  • 通过32位地址写入SSI 32位寄存器
  • 适用于访问32位地址空间的SSI寄存器,数据位宽为32位
  • 写入值为32位宽

前置条件

  • SSI模块已通过uapi_ssi_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
addr uint32_t 写入的寄存器地址 0x00000000 ~ 0xFFFFFFFF
value uint32_t 写入的寄存器值 0x00000000 ~ 0xFFFFFFFF

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 寄存器写入成功
Other 其他错误码,参考errcode_t 执行失败

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明:作为SSI模块读写接口的返回值类型,表示操作执行结果