1. IIC协议基础与STM32G4实战准备
IIC(Inter-Integrated Circuit)是嵌入式开发中最常用的通信协议之一,它的精妙之处在于仅用两根线(SDA数据线和SCL时钟线)就能实现多设备通信。在蓝桥杯嵌入式比赛中,官方提供的STM32G4开发板采用PB6和PB7模拟IIC总线,这种设计既能降低硬件成本,又便于理解协议底层原理。
实际项目中,IIC总线的上拉电阻取值很关键。我曾在调试时发现通信失败,最后发现是上拉电阻值过大(10KΩ)导致上升沿过缓。后来改用4.7KΩ电阻,波形立刻变得干净利落。这里有个小技巧:用示波器观察SDA和SCL波形时,正常的信号应该呈现清晰的方波,如果看到圆角或振铃现象,就需要调整上拉电阻值。
模拟IIC的GPIO配置需要注意三点:
- 初始状态设置为高电平(上拉)
- 输出模式为开漏输出(GPIO_MODE_OUTPUT_OD)
- 切换输入/输出模式时需要重新配置GPIO
c复制// 模拟IIC的GPIO初始化示例
void I2C_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_SET);
}
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. AT24C02数据存储实战详解
AT24C02这颗2KB的EEPROM芯片虽然容量小,但在数据存储场景中非常实用。有次比赛现场,我遇到一个坑:连续写入数据时没有加延时,导致部分数据丢失。后来查手册才发现,AT24C02的写入周期(Write Cycle Time)典型值为5ms,这意味着每次写操作后必须延时足够时间。
字节写入
