#ifndef __I2C_H__ #define __I2C_H__ /* Definition for I2Cx clock resources */ #define BSP_I2Cx_SPEED 400000 #define BSP_I2Cx_SLAVE_ADDRESS 0xf0 /* Definition for I2Cx Pins, PULL UP in hw */ #define BSP_I2Cx_SCL_GPIO_PORT GPIOB #define BSP_I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define BSP_I2Cx_SCL_PIN GPIO_PIN_10 #define BSP_I2Cx_SCL_PULL GPIO_NOPULL #define BSP_I2Cx_SDA_GPIO_PORT GPIOB #define BSP_I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define BSP_I2Cx_SDA_PIN GPIO_PIN_11 #define BSP_I2Cx_SDA_PULL GPIO_NOPULL #define BSP_EEROM_WRITE_PROTECT_PORT GPIOB #define BSP_EEROM_WRITE_PROTECT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define BSP_EEROM_WRITE_PROTECT_PIN GPIO_PIN_0 #define BSP_EEROM_WRITE_PROTECT_PULL GPIO_NOPULL #define BSP_EEROM_WRITE_ENABLE() HAL_GPIO_WritePin(BSP_EEROM_WRITE_PROTECT_PORT, BSP_EEROM_WRITE_PROTECT_PIN, GPIO_PIN_RESET) #define BSP_EEROM_WRITE_FORBIDEN() HAL_GPIO_WritePin(BSP_EEROM_WRITE_PROTECT_PORT, BSP_EEROM_WRITE_PROTECT_PIN, GPIO_PIN_SET) #define BSP_RTC_INTERRUPT_PORT GPIOB #define BSP_RTC_INTERRUPT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define BSP_RTC_INTERRUPT_PIN GPIO_PIN_1 #define BSP_RTC_INTERRUPT_PULL GPIO_NOPULL #define BSP_RTC_INTERRUPT_IRQn EXTI1_IRQn #define BSP_RTC_INTERRUPT_PRIORITY 0x05 /*Device Address*/ #define BSP_RTC_WR_ADDRESS 0x64 #define BSP_RTC_RD_ADDRESS 0x65 #define BSP_EEROM_WR_ADDRESS 0xA0 #define BSP_EEROM_RD_ADDRESS 0xA1 #define BSP_I2Cx_SCL_HIGH() HAL_GPIO_WritePin(BSP_I2Cx_SCL_GPIO_PORT, BSP_I2Cx_SCL_PIN, GPIO_PIN_SET) #define BSP_I2Cx_SCL_LOW() HAL_GPIO_WritePin(BSP_I2Cx_SCL_GPIO_PORT, BSP_I2Cx_SCL_PIN, GPIO_PIN_RESET) #define BSP_I2Cx_SDA_HIGH() HAL_GPIO_WritePin(BSP_I2Cx_SDA_GPIO_PORT, BSP_I2Cx_SDA_PIN, GPIO_PIN_SET) #define BSP_I2Cx_SDA_LOW() HAL_GPIO_WritePin(BSP_I2Cx_SDA_GPIO_PORT, BSP_I2Cx_SDA_PIN, GPIO_PIN_RESET) #define BSP_I2Cx_SCL_STATUS() HAL_GPIO_ReadPin(BSP_I2Cx_SCL_GPIO_PORT, BSP_I2Cx_SCL_PIN) #define BSP_I2Cx_SDA_STATUS() HAL_GPIO_ReadPin(BSP_I2Cx_SDA_GPIO_PORT, BSP_I2Cx_SDA_PIN) //#define I2C_DELAY_COUNT 12 #define I2C_DELAY_COUNT 2 void I2C_Device_Init(void); void I2C_GPIO_Out_Config(void); void I2C_GPIO_In_Config(void); void I2C_Start(void); void I2C_Stop(void); uint8_t I2C_Wait_Ack(void); void I2C_Ack(void); void I2C_NAck(void); #endif