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

(五)STM32F407 cubemx IIC驱动OLED(1)IIC协议篇

(五)STM32F407 cubemx IIC驱动OLED(1)IIC协议篇

   这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。
  废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列系统硬件IIC配置都能明白如何通过参考手册去学习配置。而不是Ctrl c,Ctrl v。这篇文章大致的简述一下IIC协议,对IIC协议有一定的认识。

1)I2C 简介

  I2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有 I2C 总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还 与 SMBus 2.0 兼容。根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。

2)I2C 主要特性

1.I2C 主模式特性:— 时钟生成 — 起始位和停止位生成
2.I2C 从模式特性:— 可编程 I2C 地址检测 — 双寻址模式,可对 2 个从地址应答 — 停止位检测
3.7 位/10 位寻址以及广播呼叫的生成和检测
4.支持不同的通信速度:— 标准速度(高达 100 kHz) — 快速速度(高达 400 kHz)

3)I2C模式选择

   从发送器 、从接收器 、主发送器 、主接收器。
   接下来就要介绍从接收端OLED,主发送端STM32。

主发送端

   在主模式下,I2C 接口会启动数据传输并生成时钟信号。串行数据传输始终是在出现起始位时开始,在出现停止位时结束。起始位和停止位均在主模式下由软件生成(也就是STM32编写)。 在从模式下,该接口能够识别其自身地址(7 或 10 位)以及广播呼叫地址。数据和地址均以 8 位字节传输,MSB 在前。起始位后紧随地址字节(7 位地址占据一个字节; 10 位地址占据两个字节,注意这)。地址始终在主模式下传送。 在字节传输 8 个时钟周期后是第 9 个时钟脉冲,在此期间接收器必须向发送器发送一个应答位。请参见图。
在这里插入图片描述    到这就需要明白两个概念:十位数据或者七位数据数据格式不同
    首先不同之处在于:在10 位寻址模式下,比较对象还包括头序列(11110xx0),其中,xx 表示该地址的两个最高有效位。头或地址不匹配:接口会忽略它并等待下一个起始位。头匹配(仅针对 10 位模式):如果 ACK 位置 1,则接口会生成一个应答脉冲并等待 8 位从地址。

从接受端

在这里插入图片描述  数据格式七位构成:起始位、从发送地址位、应答位、数据、应答位、停止位。
  数据格式十位长度:起始位、地址头序列、从发送地址位长度为2个字节、地址头序列、应答位、数据、应答位、停止位

主发送端

在这里插入图片描述1. EV5、EV6、EV9、EV8_1 和 EV8_2 事件可延长 SCL 低电平时间,直到相应的软件序列结束为止。
2. 如果软件序列在下一个字节传输结束之前未能完成,EV8 事件会延长 SCL 低电平时间。
至此对OLED部分的IIC有了一定的了解,下一步开始了解硬件OLED。

http://www.lryc.cn/news/347751.html

相关文章:

  • OpenCV特征匹配总结
  • 二叉树的四种遍历代码实现
  • 系统和功能测试:确保软件的功能和易用性
  • 关于服务端接口知识的汇总
  • 树(数据结构)
  • Spring底层入门(十一)
  • 优质资料:大型制造企业等级保护安全建设整改依据,系统现状分析,网络安全风险分析
  • 几种监控工具学习
  • 树莓派python开发
  • 纯血鸿蒙APP实战开发——首页下拉进入二楼效果案例
  • 苹果cms:开启高速缓存加快访问速度
  • 实时数据推送——长轮询,短轮询,长连接
  • 七.音视频编辑-创建视频过渡-应用
  • Android11 InputManagerService启动流程分析
  • 【计算机网络篇】数据链路层(8)共享式以太网的退避算法和信道利用率
  • wordpress主题 7B2 PRO主题5.4.2免授权直接安装
  • Dubbo基本使用
  • JS解密之新js加密实战(二)
  • tsconfig 备忘清单
  • jmeter后置处理器提取到的参数因为换行符导致json解析错误
  • 栈与队列的实现
  • 线性集合:ArrayList,LinkedList,Vector/Stack
  • llama3 发布!大语言模型新选择 | 开源日报 No.251
  • SpringBoot 具体是做什么的?
  • Debian常用命令
  • 常见的前端框架
  • 初学者如何选择ARM开发硬件?
  • Mysql 多表查询,内外连接
  • 【C语言】函数
  • 【LeetCode】每日一题 2024_5_13 腐烂的橘子(经典多源 BFS)