#ifndef _MCU_BSP_I2C_H_ #define _MCU_BSP_I2C_H_ #include "stm32f1xx_hal.h" #define MCU_BSP_I2C_MASTER 0 #define MCU_BSP_I2C_SALVE 1 #define MCU_BSP_I2C_REG 2 // 即从设备带寄存器 /* I2C1的配置 */ #define MCU_BSP_I2C1_USE_FLAG 1 // 硬件电路是否存在该功能 #define MCU_BSP_I2C1_ID 1 #define MCU_BSP_I2C1_CLOCKSPEED 400000 // 配置时钟速率400k #define MCU_BSP_I2C1_DUTYCYCLE I2C_DUTYCYCLE_2 // I2C的占空比为 #define MCU_BSP_I2C1_I2C_ADDRESS1 0x0f // 如果为主模式为该I2C的地址,如果从模式为I2C的第一个从地址 #define MCU_BSP_I2C1_ADDRESS_MODE I2C_ADDRESSINGMODE_7BIT // 7位地址寻址 #define MCU_BSP_I2C1_DUALADDRESS_MODE I2C_DUALADDRESS_DISABLE // 主模式下,不启用双从地址 #define MCU_BSP_I2C1_I2C_ADDRESS2 0xff // 如果为主模式则不会被使用,如果从模式为I2C的第二个从地址 #define MCU_BSP_I2C1_GENERALCALL_MODE I2C_GENERALCALL_DISABLE // 广播模式失能 #define MCU_BSP_I2C1_NOSTRETCH_MODE I2C_NOSTRETCH_DISABLE // 时钟延长模式失能 #define MCU_BSP_I2C1_SCL_GPIO GPIOB #define MCU_BSP_I2C1_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define MCU_BSP_I2C1_SCL_GPIO_PIN GPIO_PIN_6 #define MCU_BSP_I2C1_SDA_GPIO GPIOB #define MCU_BSP_I2C1_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define MCU_BSP_I2C1_SDA_GPIO_PIN GPIO_PIN_7 /* I2C2的配置 */ #define MCU_BSP_I2C2_USE_FLAG 1 // 硬件电路是否存在该功能 #define MCU_BSP_I2C2_ID 2 #define MCU_BSP_I2C2_CLOCKSPEED 400000 // 配置时钟速率400k #define MCU_BSP_I2C2_DUTYCYCLE I2C_DUTYCYCLE_2 // I2C的占空比为 #define MCU_BSP_I2C2_I2C_ADDRESS1 0x30 // 如果为主模式为该I2C的地址,如果从模式为I2C的第一个从地址 #define MCU_BSP_I2C2_ADDRESS_MODE I2C_ADDRESSINGMODE_7BIT // 7位地址寻址 #define MCU_BSP_I2C2_DUALADDRESS_MODE I2C_DUALADDRESS_DISABLE // 主模式下,不启用双从地址 #define MCU_BSP_I2C2_I2C_ADDRESS2 0xff // 如果为主模式则不会被使用,如果从模式为I2C的第二个从地址 #define MCU_BSP_I2C2_GENERALCALL_MODE I2C_GENERALCALL_DISABLE // 广播模式失能 #define MCU_BSP_I2C2_NOSTRETCH_MODE I2C_NOSTRETCH_DISABLE // 时钟延长模式失能 #define MCU_BSP_I2C2_SCL_GPIO GPIOB #define MCU_BSP_I2C2_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define MCU_BSP_I2C2_SCL_GPIO_PIN GPIO_PIN_10 #define MCU_BSP_I2C2_SDA_GPIO GPIOB #define MCU_BSP_I2C2_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define MCU_BSP_I2C2_SDA_GPIO_PIN GPIO_PIN_11 int McuBspI2cInit(unsigned char I2cId); int McuBspI2cSendData(unsigned char type, unsigned char I2cId, unsigned short DevAddress, unsigned short MemAddress, unsigned short MemAddSize, unsigned char *pData, unsigned short Size); int McuBspI2cRecvData(uint8_t type, uint8_t I2cId, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size); /* IIC SLEEP */ void McuBspI2cSleep(void); /* IIC WakeUp */ void McuBspI2cWakeUp(void); #endif