STM32G474xx HAL 用户手册
stm32g4xx_hal_i2c.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_i2c.h
00004   * @author  MCD Application Team
00005   * @brief   I2C HAL 模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_I2C_H
00021 #define STM32G4xx_HAL_I2C_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32G4xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup I2C
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 /** @defgroup I2C_Exported_Types I2C 导出类型
00040   * @{
00041   */
00042 
00043 /** @defgroup I2C_Configuration_Structure_definition I2C 配置结构体定义
00044   * @brief  I2C 配置结构体定义
00045   * @{
00046   */
00047 typedef struct
00048 {
00049   uint32_t Timing;              /*!< 指定 I2C_TIMINGR 寄存器的值。
00050                                      此参数通过参考手册中的 I2C 初始化部分计算得出 */
00051                                      */
00052 
00053   uint32_t OwnAddress1;         /*!< 指定第一个设备自身地址。
00054                                      此参数可以是 7 位或 10 位地址。 */
00055 
00056   uint32_t AddressingMode;      /*!< 指定选择 7 位还是 10 位寻址模式。
00057                                      此参数可以是 @ref I2C_ADDRESSING_MODE 的值 */
00058 
00059   uint32_t DualAddressMode;     /*!< 指定是否选择双地址模式。
00060                                      此参数可以是 @ref I2C_DUAL_ADDRESSING_MODE 的值 */
00061 
00062   uint32_t OwnAddress2;         /*!< 如果选择了双地址模式,指定第二个设备自身地址
00063                                      此参数可以是 7 位地址。 */
00064 
00065   uint32_t OwnAddress2Masks;    /*!< 如果选择了双地址模式,指定第二个设备自身地址的应答掩码地址。
00066                                      此参数可以是 @ref I2C_OWN_ADDRESS2_MASKS 的值 */
00067 
00068 
00069   uint32_t GeneralCallMode;     /*!< 指定是否选择通用呼叫模式。
00070                                      此参数可以是 @ref I2C_GENERAL_CALL_ADDRESSING_MODE 的值 */
00071 
00072   uint32_t NoStretchMode;       /*!< 指定是否选择无时钟拉伸模式。
00073                                      此参数可以是 @ref I2C_NOSTRETCH_MODE 的值 */
00074 
00075 } I2C_InitTypeDef;
00076 
00077 /**
00078   * @}
00079   */
00080 
00081 /** @defgroup HAL_state_structure_definition HAL 状态结构体定义
00082   * @brief  HAL 状态结构体定义
00083   * @note  HAL I2C 状态值编码遵循以下描述的位图:\n
00084   *          b7-b6  错误信息\n
00085   *             00 : 无错误\n
00086   *             01 : 中止(中止用户请求进行中)\n
00087   *             10 : 超时\n
00088   *             11 : 错误\n
00089   *          b5     外设初始化状态\n
00090   *             0  : 复位(外设未初始化)\n
00091   *             1  : 初始化完成(外设已初始化并准备就绪。已调用 HAL I2C Init 函数)\n
00092   *          b4     (未使用)\n
00093   *             x  : 应设置为 0\n
00094   *          b3\n
00095   *             0  : 就绪或忙(无监听模式进行中)\n
00096   *             1  : 监听(外设处于地址监听模式)\n
00097   *          b2     内部处理状态\n
00098   *             0  : 就绪\n
00099   *             1  : 忙(外设忙于某些配置或内部操作)\n
00100   *          b1     接收状态\n
00101   *             0  : 就绪(无接收操作进行中)\n
00102   *             1  : 忙(接收操作进行中)\n
00103   *          b0     发送状态\n
00104   *             0  : 就绪(无发送操作进行中)\n
00105   *             1  : 忙(发送操作进行中)
00106   * @{
00107   */
00108 typedef enum
00109 {
00110   HAL_I2C_STATE_RESET             = 0x00U,   /*!< 外设尚未初始化         */
00111   HAL_I2C_STATE_READY             = 0x20U,   /*!< 外设已初始化并准备就绪  */
00112   HAL_I2C_STATE_BUSY              = 0x24U,   /*!< 内部处理正在进行中            */
00113   HAL_I2C_STATE_BUSY_TX           = 0x21U,   /*!< 数据发送过程正在进行中      */
00114   HAL_I2C_STATE_BUSY_RX           = 0x22U,   /*!< 数据接收过程正在进行中         */
00115   HAL_I2C_STATE_LISTEN            = 0x28U,   /*!< 地址监听模式正在进行中            */
00116   HAL_I2C_STATE_BUSY_TX_LISTEN    = 0x29U,   /*!< 地址监听模式和数据发送
00117                                                  过程正在进行中                         */
00118   HAL_I2C_STATE_BUSY_RX_LISTEN    = 0x2AU,   /*!< 地址监听模式和数据接收
00119                                                  过程正在进行中                         */
00120   HAL_I2C_STATE_ABORT             = 0x60U,   /*!< 中止用户请求进行中                */
00121 
00122 } HAL_I2C_StateTypeDef;
00123 
00124 /**
00125   * @}
00126   */
00127 
00128 /** @defgroup HAL_mode_structure_definition HAL 模式结构体定义
00129   * @brief  HAL 模式结构体定义
00130   * @note  HAL I2C 模式值编码遵循以下描述的位图:\n
00131   *          b7     (未使用)\n
00132   *             x  : 应设置为 0\n
00133   *          b6\n
00134   *             0  : 无\n
00135   *             1  : 内存(HAL I2C 通信处于内存模式)\n
00136   *          b5\n
00137   *             0  : 无\n
00138   *             1  : 从机(HAL I2C 通信处于从机模式)\n
00139   *          b4\n
00140   *             0  : 无\n
00141   *             1  : 主机(HAL I2C 通信处于主机模式)\n
00142   *          b3-b2-b1-b0  (未使用)\n
00143