|
STM32G474xx HAL 用户手册
|
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