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学习记录的更多相关文章

  1. STM32F103之定时器学习记录

    /==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...

  2. STM32F103之DMA学习记录

    /================翻译STM32F103开发手册DMA章节===========================/ 13 DMA(Direct memory access) 13.1 ...

  3. STM32F103之ADC学习记录

    1.问题 1)10位ADC的误差是多少? 首先要分清分辨率与精度的区别. 10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm. 但不能说这把尺子的精度是1mm. 在冬天,尺子会热胀冷缩,依然 ...

  4. STM32F103之GPIO学习记录

    9 GPIO:通用I/O口 AFIO:可供选择的I/O口 9.1 GPIO功能描述 每一个通用的I/O口都有: 两个32位的配置寄存器(配置寄存器低和配置寄存器高): 两个32位的数据寄存器(输入数据 ...

  5. STM32F103之USART学习记录

    1.USART的主要特性 1)名称:串行异步通信接口 2)全双工.异步通信 3)发送和接收速率最高可达4.5MBits/s 4)可编程数据长度8或9bits 5)可配置的停止位:支持1或2位停止位 6 ...

  6. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  7. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  8. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  9. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

随机推荐

  1. Web测试控件测试点总结

    1. https://www.testwo.com/blog/344  文本输入框测试用例 验证输入框是否trim处理 注:trim()函数作用是 去掉字符序列左边和右边的空格,中间的空格不管.如果字 ...

  2. 杭电oj 2098——分拆素数和(包含如何判断质数及优化),java实现

    question:分拆素数和 思路: 1.首先从1一直遍历到数据的1/2位置(因为后面的会和前面的重复),因为是要两个数,所以另一个数就是原数据减去遍历的数字(即i 和data-i),如果二者同时为质 ...

  3. JASON

    JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人 ...

  4. 在centos7下获取git代码(部署代码)

    一.准备好账号 现在我们写的前端页面都放在公司自己搭建的gitlab上,使用的是 SSH KEY 访问的,所以我们先注册了一个账号 "1374669657@qq.com" . 二. ...

  5. OWIN时遇到的问题

    1.在需要授权时如何获得需要授权的应用clientId? 除了从Request.QueryString("client_id")中获得还有别的方法吗?例如通过OWIN中间件的某个属 ...

  6. UI高级组件

    今天继续学习UI高级组件 网格视图 GridView 用GridView标签添加,显示网格视图,需要用到适配器,共有四种适配器 ArrayAdapter,SmipleAdapter,SmipleCou ...

  7. E. Vus the Cossack and a Field (求一有规律矩形区域值) (有一结论待证)

    E. Vus the Cossack and a Field (求一有规律矩形区域值) 题意:给出一个原01矩阵,它按照以下规则拓展:向右和下拓展一个相同大小的 0 1 分别和原矩阵对应位置相反的矩阵 ...

  8. Spring Cloud和Spring Boot版本问题导致Nacos 注册失败!

    之前学习consul注册中心的时候就遇到版本问题,这次学习nacos的时候又遇到版本问题,可惜没长记性,排查了一天最后才发现是boot和cloud的版本有问题. 记录一下,防止以后再出现这种浪费时间的 ...

  9. 2019 ICPC南京站网络赛 H题 Holy Grail(BF算法最短路)

    计蒜客题目链接:https://nanti.jisuanke.com/t/41305 给定的起点是S,终点是T,反向跑一下就可以了,注意判负环以及每次查询需要添加边 AC代码: #include< ...

  10. 微信小程序 - height: calc(xx - xx);无效

    遇到一个小问题,记录一下 问题:在微信小程序中使用scroll-view标签时,用height:cale(xx - xx)设置高度无效,在page中设置高度为百分百依旧无效 解决办法:直接在父级vie ...