I2C 协议的理解以及在 OLED 上的应用

I 2 C I^2C I2C 协议

仓库地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

介绍

  • I 2 C I^2C I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线
  • 两根通信线:SCL(Serial Clock)、SDA(Serial Data)
  • 同步,半双工
  • 带数据应答
  • 支持总线挂载多设备(一主多从、多主多从)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

硬件电路

  • 所有I2C设备的SCL连在一起,SDA连在一起
  • 设备的SCL和SDA均要配置成开漏输出模式 开漏输出介绍
  • SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
    在这里插入图片描述
    在这里插入图片描述

I2C 时序基本单元

  • 起始条件:SCL高电平期间,SDA从高电平切换到低电平
  • 终止条件:SCL高电平期间,SDA从低电平切换到高电平
    在这里插入图片描述
  • 发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

在这里插入图片描述

  • 接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)
    在这里插入图片描述
  • 发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
  • 接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

在这里插入图片描述

  • 指定地址写
  • 对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)
    在这里插入图片描述
  • 当前地址读
  • 对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)
    在这里插入图片描述
  • 指定地址读
  • 对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)
    在这里插入图片描述

OLED 屏幕

OLED 屏幕使用的驱动 SSD-1306 使用 I 2 C I^2C I2C 进行通讯的,所以我们如果要想实践一下 I 2 C I^2C I2C 协议直接可以通过让OLED屏幕显示来达到训练的效果。
但是如果我们想直接玩OLED屏幕仅仅有 I 2 C I^2C I2C的知识是远远不够的,还需要了解SSD-1306它是如何让OLED屏幕进行显示的。如果想知道原理那么直接去看 SSD-1306 的数据手册就好啦。
这里简单介绍一下,我是用的OLED屏幕是0.96寸大小的64*128的屏幕,屏幕的组成的是是通过8页,128列组成的,每一页都有128列,一列有8个像素点。
在这里插入图片描述
在这里插入图片描述
每当我们传输数据给OLED屏幕的时候,它接收的就是一个 Byte 的数据,直接就是显示一列,比如传输 0xaa,那么显示结果就是如下图
在这里插入图片描述
更多的内容的话去看数据手册,当然所有的内容我的仓库都有提供。

效果展示

这里利用了上位机进行串口通讯,利用 Python 的解析能力,把视频内容进行二值化进行解析了,然后通过串口传输给单片机
在这里插入图片描述

I2C&OLED视频

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xwhking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值