目录
[HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT](#HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT)
[HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA](#HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA)
[HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA](#HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA)
I2C
1.初始化与基本配置
HAL_I2C_Init
cppHAL_I2C_Init(I2C_HandleTypeDef *hi2c) //初始化 I2C 外设(时钟、模式、地址宽度等)
HAL_I2C_DeInit
cppHAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) //关闭 I2C 并释放资源
2.阻塞模式
HAL_I2C_Master_Transmit
cppHAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) //主机 → 从机:发送数据,阻塞直至完成或超时
HAL_I2C_Master_Receive
cppHAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) //主机 ← 从机 :接收数据,阻塞
HAL_I2C_Slave_Transmit
cppHAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout) //从机 → 主机 :从机发送,阻塞
HAL_I2C_Slave_Receive
cppHAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout) //从机 ← 主机 :从机接收,阻塞
HAL_I2C_Mem_Write
cppHAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) //主机 → 从机(写寄存器) //常用于 EEPROM、传感器寄存器写入
HAL_I2C_Mem_Read
cppHAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) //主机 ← 从机(读寄存器) //常用于读取寄存器或 EEPROM
3.中断模式
HAL_I2C_Master_Transmit_IT
cppHAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) //主机 → 从机 //启动中断发送,立即返回 //回调函数 HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Master_Receive_IT
cppHAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) //主机 ← 从机 //启动中断接收 //回调函数 HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Slave_Transmit_IT
cppHAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) //从机 → 主机 //从机中断发送 //回调 HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Slave_Receive_IT
cppHAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) // 从机 ← 主机 // 从机中断接收 //回调 HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT
cppHAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT // 适用于寄存器/EEPROM 的中断访问
HAL_I2C_ErrorCallback
cppHAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) //(错误处理)
4.DMA模式
HAL_I2C_Master_Transmit_DMA
cppHAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) //主机 → 从机 //使用 DMA 发送
HAL_I2C_Master_Receive_DMA
cppHAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) // 主机 ← 从机 // 使用 DMA 接收
HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA
cppHAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA // 从机 DMA 传输
HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA
cppHAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA //寄存器/EEPROM DMA 访问