IIC总线协议基础
IIC(Inter-Integrated Circuit)是一种同步、半双工的串行通信总线协议,由Philips公司开发。总线由SDA(数据线)和SCL(时钟线)两根信号线组成,支持多主多从架构。通信速率分为标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。
每个从设备有唯一的7位或10位地址,主设备通过地址寻址进行通信。数据帧包含起始条件、地址帧、数据帧和停止条件。时钟线SCL由主设备控制,数据线SDA在SCL高电平期间必须保持稳定。
硬件连接与初始化
IIC总线需外接上拉电阻(通常4.7kΩ),确保信号线的默认高电平。以STM32为例,硬件IIC初始化步骤如下:
#include "stm32f1xx_hal.h"
I2C_HandleTypeDef hi2c1;
void MX_I2C1_Init(void) {
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALC

被折叠的 条评论
为什么被折叠?



