当前位置: 首页 > news >正文

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视频

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

相关文章:

  • mac上安装 Rust 开发环境
  • 数据分析_商务运营考核指标体系搭建
  • 【爬虫】12306自动化购票
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取目录大小?
  • os agent智能体软件 - 第三弹 - 纯语音交互
  • 解决npm install报错:getaddrinfo ENOTFOUND registry.nlark.com
  • 如何从不同位置将联系人导入 iPhone(完整指南)
  • 【520 特辑】用 HTML/CSS/JavaScript 打造浪漫炫酷的表白网页
  • 【HTML-3】HTML 中的水平线与换行:基础元素详解
  • 零售EDI:Belk Stores EDI需求分析
  • 使用 ARCore 和 Kotlin 开发 Android 增强现实应用入门指南
  • 安装PostgresSQL
  • 在 Kotlin 中,什么是内联函数?有什么作用?
  • 微软的 Windows Linux 子系统现已开源
  • 基于R语言的空间异质性数据分析技术
  • Django基础(二)Django 项目基础操作
  • 【缺陷】GaN和AlN中的掺杂特性
  • Spring Cloud Gateway深度解析:原理、架构与生产实践
  • 如何使用MATLAB NLP工具箱进行文本聚类
  • 使用SQLite Expert个人版VACUUM功能修复数据库
  • 这群“工博士”,把论文“写”在车间里
  • 保利、北京建工联合体45.45亿元竞得北京海淀区宅地,溢价率11.95%
  • 关税战导致中国商品冲击周边市场?“对美出口减少并未导致对东盟出口激增”
  • 张永宁任福建宁德市委书记
  • 国家统计局:4月全国城镇调查失业率为5.1%,比上月下降0.1个百分点
  • 山东发布高温橙警:预计19日至21日局地可达40℃