跳转到内容

bsp::I2CDriver API

文档稀疏
符号
54
已记录
34
类型
2
继承关系
0
源码分支
main

20 / 54 个公开 API 符号没有说明。

共 2 个类型

类型目录
类

I2CBusDMA

查看源码

上游未提供类型说明。

构造与析构

1

I2CBusDMA

函数公开
        I2CBusDMA::I2CBusDMA (I2C_HandleTypeDef *hi2c, BusPins pins)
      

使用 HAL I2C 句柄构造总线对象 hi2c 要绑定的 HAL I2C 句柄 pins 当前总线的 SCL/SDA 引脚定义

bsp/i2c_driver/I2CBusDMA.hpp:49

成员函数

20

completeFromISR

函数私有
        void I2CBusDMA::completeFromISR (bool success, uint32_t hal_error)
      

在 ISR 中记录完成状态并唤醒等待线程 success 本次完成是否成功 hal_error HAL 层返回的错误码

bsp/i2c_driver/I2CBusDMA.hpp:166

failAndRecover

函数私有
        bool I2CBusDMA::failAndRecover (Error error, uint32_t hal_error)
      

记录失败原因并执行恢复流程 error 本次失败的抽象错误码 hal_error 本次失败对应的 HAL 错误码 始终返回 false,便于直接作为失败出口

bsp/i2c_driver/I2CBusDMA.hpp:179

fromHandle

函数公开静态
        I2CBusDMA * I2CBusDMA::fromHandle (I2C_HandleTypeDef *hi2c)
      

I2CBusDMA 根据 HAL 句柄反查实例 hi2c HAL I2C 句柄 I2CBusDMA 对应的实例,不存在则返回空指针

bsp/i2c_driver/I2CBusDMA.hpp:130

handle

函数公开const
        I2C_HandleTypeDef * I2CBusDMA::handle () const
      

获取底层 HAL I2C 句柄 当前绑定的 HAL I2C 句柄

bsp/i2c_driver/I2CBusDMA.hpp:55

isBusy

函数公开const
        bool I2CBusDMA::isBusy () const
      

查询总线当前是否忙碌 当前是否仍有事务未完成,或 HAL 状态尚未回到 READY

bsp/i2c_driver/I2CBusDMA.hpp:61

lastError

函数公开const
        Error I2CBusDMA::lastError () const
      

获取最近一次事务的抽象错误码 最近一次事务记录的错误状态

bsp/i2c_driver/I2CBusDMA.hpp:67

lastHalError

函数公开const
        uint32_t I2CBusDMA::lastHalError () const
      

获取最近一次事务的 HAL 原始错误码 最近一次事务记录的 HAL 错误码

bsp/i2c_driver/I2CBusDMA.hpp:72

memRead

函数公开
        bool I2CBusDMA::memRead (uint8_t device_addr_7bit, uint8_t reg, uint8_t *data, uint16_t len, uint32_t timeout_ms)
      

发起一次带寄存器地址的 DMA 读事务 device_addr_7bit 7 位设备地址 reg 目标寄存器地址 data 读数据缓冲区 len 读取字节数 timeout_ms 等待完成超时时间,单位毫秒 事务是否成功完成

bsp/i2c_driver/I2CBusDMA.hpp:83

memWrite

函数公开
        bool I2CBusDMA::memWrite (uint8_t device_addr_7bit, uint8_t device_reg, const uint8_t *data, uint16_t len, uint32_t timeout_ms)
      

发起一次带寄存器地址的 DMA 写事务 device_addr_7bit 7 位设备地址 device_reg 目标寄存器地址 data 写数据缓冲区 len 写入字节数 timeout_ms 等待完成超时时间,单位毫秒 事务是否成功完成

bsp/i2c_driver/I2CBusDMA.hpp:94

prepareTransfer

函数私有
        bool I2CBusDMA::prepareTransfer ()
      

在启动 DMA 前准备一次事务 当前是否允许启动新事务

bsp/i2c_driver/I2CBusDMA.hpp:152

read

函数公开
        bool I2CBusDMA::read (uint8_t device_addr_7bit, uint8_t *data, uint16_t len, uint32_t timeout_ms)
      

发起一次原始 DMA 读事务 device_addr_7bit 7 位设备地址 data 读数据缓冲区 len 读取字节数 timeout_ms 等待完成超时时间,单位毫秒 事务是否成功完成

bsp/i2c_driver/I2CBusDMA.hpp:108

registerInstance

函数私有静态
        bool I2CBusDMA::registerInstance (I2CBusDMA *instance)
      

把实例注册到静态反查表 instance 要注册的总线对象 注册是否成功

bsp/i2c_driver/I2CBusDMA.hpp:188

waitForTransfer

函数私有
        bool I2CBusDMA::waitForTransfer (uint32_t timeout_ms)
      

阻塞等待当前事务完成 timeout_ms 等待完成超时时间,单位毫秒 当前事务是否成功完成

bsp/i2c_driver/I2CBusDMA.hpp:159

write

函数公开
        bool I2CBusDMA::write (uint8_t device_addr_7bit, const uint8_t *data, uint16_t len, uint32_t timeout_ms)
      

发起一次原始 DMA 写事务 device_addr_7bit 7 位设备地址 data 写数据缓冲区 len 写入字节数 timeout_ms 等待完成超时时间,单位毫秒 事务是否成功完成

bsp/i2c_driver/I2CBusDMA.hpp:117

成员变量

12

completed_transfer_id_

变量私有
        volatile uint32_t I2CBusDMA::completed_transfer_id_
      

最近一次完成记录对应的事务编号

bsp/i2c_driver/I2CBusDMA.hpp:197

嵌套类型

2

Error

枚举公开

描述一次总线事务的最终错误状态

Busy
总线或驱动当前忙碌,无法启动新事务
HalError
HAL 在事务过程中报告错误
InvalidContext
调用上下文不是可阻塞等待的 CMSIS 线程
InvalidHandle
HAL I2C 句柄无效
None
最近一次事务成功完成
RecoveryFailed
失败后的恢复流程也未成功
StartFailed
DMA 事务启动失败
Timeout
等待完成超时
bsp/i2c_driver/I2CBusDMA.hpp:32
结构体

I2CBusDMA::BusPins

查看源码

上游未提供类型说明。

成员变量

5

其他公开符号

函数

8

anonymous_namespace{I2CBusDMA.cpp}::isThreadFlagsError

函数
        bool anonymous_namespace{I2CBusDMA.cpp}::isThreadFlagsError (const uint32_t flags)
      

上游未提供说明。

bsp/i2c_driver/I2CBusDMA.cpp:25

anonymous_namespace{I2CBusDMA.cpp}::kernelTicksFromMs

函数
        uint32_t anonymous_namespace{I2CBusDMA.cpp}::kernelTicksFromMs (uint32_t timeout_ms)
      

上游未提供说明。

bsp/i2c_driver/I2CBusDMA.cpp:12

anonymous_namespace{I2CBusDMA.cpp}::shortDelay

函数
        void anonymous_namespace{I2CBusDMA.cpp}::shortDelay ()
      

上游未提供说明。

bsp/i2c_driver/I2CBusDMA.cpp:30

变量

2

anonymous_namespace{I2CBusDMA.cpp}::BusPulseDelayCycles

变量
        uint32_t anonymous_namespace{I2CBusDMA.cpp}::BusPulseDelayCycles
      

上游未提供说明。

bsp/i2c_driver/I2CBusDMA.cpp:10

anonymous_namespace{I2CBusDMA.cpp}::TransferCompleteFlag

变量
        uint32_t anonymous_namespace{I2CBusDMA.cpp}::TransferCompleteFlag
      

上游未提供说明。

bsp/i2c_driver/I2CBusDMA.cpp:9

文件

2

bsp/i2c_driver/I2CBusDMA.hpp

文件

基于 STM32 HAL DMA 和 CMSIS-RTOS v2 线程标志的单 owner I2C 总线封装

bsp/i2c_driver/I2CBusDMA.hpp