2026/4/17 0:42:20
网站建设
项目流程
江苏网站建设的案例展示,东莞网站建设功能,进入京东商城,wordpress3.3I2C 配置步骤#xff1a;
使能 GPIO 和 I2C 时钟
配置 GPIO 为开漏复用功能 (如 PB6-SCL, PB7-SDA)
配置 I2C 参数 (模式、频率、地址)
使能 I2C
I2C 通信函数#xff1a;
发送#xff1a;HAL_I2C_Master_Transmit()(主发送)
接收#xff1a;HAL_I2C_Master_Receive()(主接…I2C 配置步骤使能 GPIO 和 I2C 时钟配置 GPIO 为开漏复用功能 (如 PB6-SCL, PB7-SDA)配置 I2C 参数 (模式、频率、地址)使能 I2CI2C 通信函数发送HAL_I2C_Master_Transmit()(主发送)接收HAL_I2C_Master_Receive()(主接收)发送 接收HAL_I2C_Master_TransmitReceive()代码示例STM32 作为主设备读取 EEPROM 数据// EEPROM地址(7位)#define EEPROM_ADDR 0xA0// I2C初始化I2C_HandleTypeDef hi2c1;void I2C1_Init(void){GPIO_InitTypeDef GPIO_InitStruct;// 使能GPIOB和I2C1时钟__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_I2C1_CLK_ENABLE();// 配置PB6(SCL)和PB7(SDA)为开漏复用功能GPIO_InitStruct.Pin GPIO_PIN_6 | GPIO_PIN_7;GPIO_InitStruct.Mode GPIO_MODE_AF_OD; // 复用开漏输出GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.Alternate GPIO_AF1_I2C1;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);// 配置I2C参数(标准模式100Kbps)hi2c1.Instance I2C1;hi2c1.Init.ClockSpeed 100000;hi2c1.Init.DutyCycle I2C_DUTYCYCLE_2; // 2:1占空比(标准模式)hi2c1.Init.OwnAddress1 0x00; // 自身地址(主设备一般不需要)hi2c1.Init.AddressingMode I2C_ADDRESSINGMODE_7BIT; // 7位地址模式hi2c1.Init.DualAddressMode DISABLE; // 单地址模式hi2c1.Init.OwnAddress2 0x00;hi2c1.Init.GeneralCallMode DISABLE; // 不启用广播模式hi2c1.Init.NoStretchMode DISABLE; // 启用时钟延展HAL_I2C_Init(hi2c1);HAL_I2C_Start(hi2c1); // 启动I2C}// 读取EEPROM一个字节uint8_t EEPROM_Read(uint16_t addr){uint8_t data;uint8_t reg_addr (uint8_t)(addr 8); // 高8位地址uint8_t reg_addr_low (uint8_t)addr; // 低8位地址// 发送写命令从机地址写位HAL_I2C_Master_Transmit(hi2c1, EEPROM_ADDR, reg_addr, 1, 1000);// 发送子地址HAL_I2C_Master_Transmit(hi2c1, EEPROM_ADDR, reg_addr_low, 1, 1000);// 发送读命令从机地址读位HAL_I2C_Master_Receive(hi2c1, EEPROM_ADDR | 0x01, data, 1, 1000);return data;}// 主函数int main(){I2C1_Init();uint8_t data EEPROM_Read(0x0000); // 读取0x0000地址的数据return 0;}