STM32F103之I2C学习记录
26.3.1 模式选择
该外设可以在以下四种模式之一
1)从机发送模式
2)从机接收模式
3)主机发送模式
4)主机接收模式
IIC协议时序

MSB:Most Significant Bit(最高有效位)
起始条件:SCL为高电平状态,SDA从高电平拉低
停止条件:SCL为高电平状态,SDA从低电平拉高
数据发送的顺序:先发送高位
I2C模块图

可以看出IIC模块中有:
1)数据寄存器、数据移位寄存器、比较器、PEC计算器
2)自己地址寄存器、双地址寄存器、PEC寄存器
3)数据控制单元
4)时钟控制单元
5)噪声滤波器
26.3.3 I2C主模式
主模式所需的序列
1)配置I2C_CR2寄存器,以生成正确的计时
2)配置时钟控制寄存器
3)配置上升时间寄存器
4)配置I2C_CR1寄存器使能该外设
5)设置I2C_CR1寄存器的起始位,以生成一个起始条件
外围输入时钟:
在sm mode下,至少2MHZ
在Fm mode下,至少4MHZ
SCL主时钟生成
CCR位用于生成SCL时钟的高电平和低电平,分别从上升沿和下降沿的生成开始。当一个从设备可能延伸SCL线路时,外设在被编程的时间结束时检查来自总线的SCL输入,在上升沿生成时。
如果SCL线是低的,这意味着一个从节点正在拉伸总线,而高层计数器将停止,直到SCL线被检测到是高的。这就保证了最小值高周期的SCL时钟参数。
如果SCL线高,则高电平计数器继续计数。如果SCL线高,则高电平计数器继续计数。
实际上,从外围设备生成SCL上升边缘到外围设备检测SCL上升边缘的反馈循环需要时间,即使没有从设备延长时钟。
起始条件
当忙位被清除时,设置起始位将使得接口生成起始条件,并且切换到主模式。
在主模式下,设置开始位将导致接口在当前字节传输结束时生成重启条件。
一旦起始条件被发送了:
SB位由硬件设置,如果设置了ITEVFEN位,就会产生一个中断。
26.3.6 SMBus
系统管理总线(SMBus)是一个两线接口,通过它,各种设备可以彼此通信,也可以与系统的其他部分通信。
它基于I2C操作原则。SMBus为系统和电源管理相关的任务提供了一个控制总线。
系统可以使用SMBus来在设备之间传递消息,而不是切换各个控制线路。
系统管理总线规范涉及三种类型的设备。
1)从设备是接收或响应命令的设备。
2)主设备是发出命令、生成时钟并终止传输的设备。
3)主机是为系统的CPU提供主接口的专用主机。主机必须是主从主机,并且必须支持SMBus主机通知协议。
系统中只允许一个主机。
SMBus与I2C之间的相同点
1)都是有两条线:时钟线和数据线+可选线
2)主从通信,主机提供时钟
3)多主能力
4)数据格式类似
SMBus与I2C之间的不同点

26.4 I2C中断



26.6 I2C寄存器

/========================STM32CUBEMX分析IIC===============================/
1、首先要选择模式,有以下几个模式

2、对IIC的一些参数配置

3、IIC涉及的中断

STM32F103之I2C学习记录的更多相关文章
- STM32F103之定时器学习记录
/==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...
- STM32F103之DMA学习记录
/================翻译STM32F103开发手册DMA章节===========================/ 13 DMA(Direct memory access) 13.1 ...
- STM32F103之ADC学习记录
1.问题 1)10位ADC的误差是多少? 首先要分清分辨率与精度的区别. 10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm. 但不能说这把尺子的精度是1mm. 在冬天,尺子会热胀冷缩,依然 ...
- STM32F103之GPIO学习记录
9 GPIO:通用I/O口 AFIO:可供选择的I/O口 9.1 GPIO功能描述 每一个通用的I/O口都有: 两个32位的配置寄存器(配置寄存器低和配置寄存器高): 两个32位的数据寄存器(输入数据 ...
- STM32F103之USART学习记录
1.USART的主要特性 1)名称:串行异步通信接口 2)全双工.异步通信 3)发送和接收速率最高可达4.5MBits/s 4)可编程数据长度8或9bits 5)可配置的停止位:支持1或2位停止位 6 ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
随机推荐
- Qt VS Tools插件官方下载及安装
下载 官方下载地址:https://download.qt.io/development_releases/vsaddin/(国外网站直接打开超级慢) 找到对应的VS版本下载 安装 下载完成后安装,打 ...
- 笔记本u盘插上不显示
u盘突然拔出笔记本再次插入时不显示: 解决方法:我的电脑-设备管理器-其他设备(你的U盘驱动)-卸载 再重新插上去,即可显示
- 批量启动关闭MS SQL 2005服务BAT
当装上了MSSQL2005后,内存的占用会变得很大.所以如果用一个批量处理来开启或关闭MSSQL2005所有的服务,那将会让我们的电脑更好使用.根据自己的经验,做出了下面两个批处理: 1.开启服务:( ...
- mybatis(六):设计模式 - 策略模式
- centos开发环境搭建
1.检查是否安装php php -v yum install php 2.安装composer curl -sS https://getcomposer.org/installer |php //下载 ...
- 题解【洛谷P1618】 三连击(升级版)
设三个数分别为n1.n2.n3,因为三个数的比为A:B:C,取一份量i,使得A·i=x,B·i=y,C·i=z(·是*的意思). 所以我们的代码只需要枚举i,并以此判断n1.n2.n3是否为三位数且包 ...
- ASP.NET Razor简介
Razor 不是一种编程语言.它是服务器端的标记语言. 什么是 Razor? Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中. 基于服务器的代 ...
- Android 系统签名
在做android产品开发的时候,很多时候都需要使用系统签名(比如在使用uid,APK升级的时候),所以,android提供给我们自定义签名文件的工具.这里将流程记录下来: 1.进入/android_ ...
- deepin linux 安装之后 引导错误 出现 grub>
deepin 安装之后 引导错误 ,,, 忙了一晚上 终于解决了 太辛苦了 不过明白了grub的工作原理也不亏,,,, 就是 整个过程满满的绝望 (哭 环境说明 华硕顽石4 笔记本 硬盘分区表GPT ...
- HBase 中 Memstore-Local Allocation Buffer
在0.90 版本后的 HBase,引入了一个高级机制用于缓解堆内存碎片的问题.此内存碎片问题的产生的主要原因是由于 memstore 上的扰动(频繁的分配与释放内存空间)导致.对应解决此问题的机制为M ...