一、IIC简要介绍
IIC(Inter-Integrated Circuit)是一种由飞利浦公司开发的串行通信协议,主要用于微控制器与外设之间的低速、短距离数据传输。其核心特性如下:
1. 物理结构
- 仅需两根双向信号线:
- SDA(串行数据线):传输数据
- SCL(串行时钟线):同步通信时序
- 采用开漏输出设计,依赖上拉电阻维持高电平,支持多设备连接。
2. 通信模式
- 半双工:同一时间仅支持单向传输(主机→从机或从机→主机),通过动态切换方向实现双向通信。
- 全双工协议对比:SPI等协议需独立发送/接收线路,而IIC通过硬件简化节省资源。
3. 典型应用场景
- 适用于传感器、EEPROM等低速外设,尤其适合硬件资源受限的嵌入式系统。
- 通过主机控制SCL和地址帧中的读写位来管理通信流程。
4. 通信流程示例
- 起始条件:SCL高电平时,SDA由高→低跳变。
- 地址传输:7位设备地址+1位读写位,从机响应ACK。
- 数据交换:按字节传输,每字节后跟随ACK确认。
- 停止条件:SCL高电平时,SDA由低→高跳变。
5. 优势与局限
- 优势:硬件简单、成本低,支持多主多从拓扑。
- 局限:速率较低(标准模式100kbps),依赖上拉电阻且易受干扰。
二、连接多个IIC设备
一)、硬件连接方式
-
总线拓扑设计
- 将所有设备的SDA和SCL引脚分别并联连接,确保信号线物理上共享。
- 在总线的SDA和SCL线上各添加一个4.7kΩ~10kΩ的上拉电阻,连接到电源正极(VCC),确保空闲时为高电平。
-
地址冲突处理
- 每个IIC设备需配置唯一地址(7位或10位),通过跳线或寄存器设置。
- 部分设备(如PCF8574)支持通过硬件跳帽修改地址,避免冲突。
注:不同的IIC设备地址及设置方式不同,请参考相关设备的文档。
二)、通信流程关键点
-
主机控制时序
- 主机发送起始条件(SCL高时SDA下降沿),后接从机地址+读写位,从机通过ACK确认响应。
- 数据按字节传输,每字节后需从机返回ACK/NACK信号
三、CH592等MCU硬件IIC接口配置要点
需将SCL/SDA引脚配置为上拉输入方式。
GPIOB_ModeCfg(GPIO_Pin_12 | GPIO_Pin_13, GPIO_ModeIN_PU);
这里有点比较奇怪的地方,如果使用软件模拟IIC来驱动的话,需要将这两引脚配置为推挽输出模式。
时钟初始化
典型配置参数:400kHz通信速率,16:9占空比,7位地址模式。关键代码如下:
I2C_Init(I2C_Mode_I2C, 400000, I2C_DutyCycle_16_9, I2C_Ack_Enable, I2C_AckAddr_7bit, MASTER_ADDR);
四、4Pin IIC 驱动OLED屏介绍
这里以中景园的驱动芯片为SSD1315的OLED显示屏为例说明。


从上图中,我们很容易看出,该OLED屏的IIC地址为0x78。
该公司好象也有驱动芯片为SSD1306的OLED显示屏,两种屏的IIC地址不同,SSD1306的IIC地址是0x3C。

为从图中,我们可以看出数据格式为:
S ->SSD1315 地址->ACK->Control byte ->ACK->Data byte ->Control byte ->ACK->Data byte-> P
S:起始位
P: 停止位
Control byte: 最高位通常为0。Bit6:数据/命令选择,1表示接下来发送的是数据,0表示发送的是命令。
五、CH592 MCU 的IIC接口使用指南

CH582等硬件IIC驱动OLED显示屏

最低0.47元/天 解锁文章
1104

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



