跳转到内容

bsp::I2CDriver API

文档稀疏
符号
54
已记录
34
修订版本
0.1.0+855c407f828e

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

命名空间

1

1

结构体

1

函数

29

I2CBusDMA::I2CBusDMA

                    I2CBusDMA::I2CBusDMA (I2C_HandleTypeDef *hi2c, BusPins pins)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:49

I2CBusDMA::completeFromISR

                    void I2CBusDMA::completeFromISR (bool success, uint32_t hal_error)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:166

I2CBusDMA::failAndRecover

                    bool I2CBusDMA::failAndRecover (Error error, uint32_t hal_error)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:179

I2CBusDMA::fromHandle

                    I2CBusDMA * I2CBusDMA::fromHandle (I2C_HandleTypeDef *hi2c)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:130

I2CBusDMA::isBusy

                    bool I2CBusDMA::isBusy () const
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:61

I2CBusDMA::lastError

                    Error I2CBusDMA::lastError () const
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:67

I2CBusDMA::lastHalError

                    uint32_t I2CBusDMA::lastHalError () const
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:72

I2CBusDMA::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

I2CBusDMA::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

I2CBusDMA::prepareTransfer

                    bool I2CBusDMA::prepareTransfer ()
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:152

I2CBusDMA::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

I2CBusDMA::registerInstance

                    bool I2CBusDMA::registerInstance (I2CBusDMA *instance)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:188

I2CBusDMA::waitForTransfer

                    bool I2CBusDMA::waitForTransfer (uint32_t timeout_ms)
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:159

I2CBusDMA::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

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

枚举

1

I2CBusDMA::Error

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

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

变量

19

I2CBusDMA::completed_transfer_id_

                    volatile uint32_t I2CBusDMA::completed_transfer_id_
                  

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

bsp/i2c_driver/I2CBusDMA.hpp:197

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