提供多主机功能,STM32的I2C通信简析

MCU开发加油站 2018-01-26 09:37 次阅读

I2C总线是由NXP(原PHILIPS)公司设计,有十分简洁的物理层定义,其特性如下:

• 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;

• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;

• 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;

• 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;

• 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。

其典型的接口连线如下:

I2C的协议很简单:

数据的有效性

在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变 。

起始和停止条件

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件;

SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。

字节格式

发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须处理一个响应位。

应答响应

数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。   

在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

也就是说主器件发送完一字节数据后要接收一个应答位(低电平),从器件接收完一个字节后要发送一个低电平。

寻址方式(7位地址方式)

第一个字节的头7 位组成了从机地址,最低位(LSB)是第8 位,它决定了传输的 普通的和带重复开始条件的7位地址格式方向。第一个字节的最低位是

“0”,表示主机会写信息到被选中的从机;

“1”表示主机会向从机读信息。当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都由R/W 位决定。

仲裁

I2C是所主机总线,每个设备都可以成为主机,但任一时刻只能有一个主机。

stm32至少有一个I2C接口,提供多主机功能,可以实现所有I2C总线的时序、协议、仲裁和定时功能,支持标准和快速传输两种模式,同时与SMBus 2.0兼容。

原文标题:STM32的I2C通信

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

获取STM32 MCU唯一ID的方法

在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以提高 Fl....

发表于 11-18 11:37 14次 阅读
获取STM32 MCU唯一ID的方法

STM32的各种时钟系统的应用解析

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部....

发表于 11-16 16:50 79次 阅读
STM32的各种时钟系统的应用解析

stm32怎么烧录程序

STM32烧录程序目前笔者知道的有三种:JLink ,Ulink和串口烧录,使用工具分别为:JLin....

的头像 发烧友学院 发表于 11-16 16:09 112次 阅读
stm32怎么烧录程序

SysTick定时器实现走马灯的功能

SysTick定时器非常简答,只有四个寄存器。这四个寄存器的含义在《Cortex-M3权威指南》那本....

发表于 11-16 15:59 39次 阅读
SysTick定时器实现走马灯的功能

STM32的Cortex-M3中断异常处理

在STM32处理器中有43个可屏蔽中断通道(不包含 16个 Cortex?-M3的中断线)。共设置了....

发表于 11-16 15:35 36次 阅读
STM32的Cortex-M3中断异常处理

掌握这三个思路告诉你如何使用STM32测量频率和占空比

显然,很容易想到——利用DMA。所以,笔者使用输入捕获事件触发DMA来搬运寄存器而非触发中断即可,然....

的头像 贸泽电子设计圈 发表于 11-16 15:07 130次 阅读
掌握这三个思路告诉你如何使用STM32测量频率和占空比

如何获得SPC58xx系列微控制器的外设示例

我需要SPC58xx系列微控制器的外设示例。喜欢它适用于STM32xx系列。我没有在ST网站上找到它。请让我知道如何获得它。 ...

发表于 11-16 10:23 52次 阅读
如何获得SPC58xx系列微控制器的外设示例

STM32 I2C总线从机发送接收源码下载

功能: 1、接收主机发送的数据并储存在内部缓冲区,然后通过串口打印输出; 2、主机读取数据时,将内部缓冲区中的数据返回; ...

发表于 11-16 09:46 69次 阅读
STM32 I2C总线从机发送接收源码下载

请问STM32虚拟串口打开情况下被拔出,上位机软件怎么处理?

我现在是能检测到虚拟串口被拔出的,不过现在需要串口再次插上去的时候,能够再次使用,这个就不好弄了,因为拔掉之前的串口状态...

发表于 11-16 08:57 215次 阅读
请问STM32虚拟串口打开情况下被拔出,上位机软件怎么处理?

用什么方法测STM32的MCU的功耗靠谱?

我之前是直接用数字万用表的mA档测3.3V供给MCU的电流IDD,3.3V断开串数字万用表量 但是同事跟我讲这样测不准,那么要怎...

发表于 11-16 08:56 309次 阅读
用什么方法测STM32的MCU的功耗靠谱?

STM32 fsmc驱动RA8875读取RA8875寄存器的时候返回的值都是寄存器的地址

现在用STM32的 fsmc 驱动 RA8875 出现了一个奇怪的现象,在读取RA8875寄存器的时候返回的值都是寄存器的地址,代码如下 ...

发表于 11-16 08:56 171次 阅读
STM32 fsmc驱动RA8875读取RA8875寄存器的时候返回的值都是寄存器的地址

STM32CubeMX 105芯片USB Host读写U盘

问题描述:      本人的项目中要将一次不过100字节的少量数据存入U盘。最初用的是CH376芯片,后来发现S...

发表于 11-16 08:55 203次 阅读
STM32CubeMX 105芯片USB Host读写U盘

请问STM32F103 Timer捕捉模式下,定时器溢出是否会产生溢出中断?

求助:STM32F103 Timer 捕捉模式下,定时器溢出是否会产生溢出中断?...

发表于 11-16 08:51 161次 阅读
请问STM32F103 Timer捕捉模式下,定时器溢出是否会产生溢出中断?

请问为什么STM32主晶振不用有源晶振?

如题,例如STM32F103的主晶振用的都是无源晶振?...

发表于 11-16 08:51 148次 阅读
请问为什么STM32主晶振不用有源晶振?

STM32F4的USB功能

关于STM32F4的USB功能,有以下问题想请教各位高手。 硬件搭建环境: 电脑(USB host)STM32F4(USB1口)-S...

发表于 11-16 08:49 268次 阅读
STM32F4的USB功能

STM32F103利用DMA控制PWM占空比出现错误

新手求助,我想用DMA控制PWM占空比以控制舵机转动,在占空比减少的情况下没有问题,可是在占空比累加的情况下只会输出最后...

发表于 11-16 08:46 113次 阅读
STM32F103利用DMA控制PWM占空比出现错误

CAN总线一致性测试中的容错性测试介绍

CAN线短接到地线:将CANScope-StressZ的GND接口与Vdis-连接。如图3分别测试C....

的头像 ZLG致远电子 发表于 11-15 16:32 228次 阅读
CAN总线一致性测试中的容错性测试介绍

基于STM32对DS1302的驱动

////DS1302引脚定义,可根据实际情况自行修改端口定义 #define RST PAou....

发表于 11-15 16:30 93次 阅读
基于STM32对DS1302的驱动

STM32单片机开发板教程之器件电子签名的详细资料概述

电子签名存放在闪存存储器模块的系统存储区域,可以通过JTAG/SWD 或者CPU 读取。它所包含的芯....

发表于 11-15 11:07 40次 阅读
STM32单片机开发板教程之器件电子签名的详细资料概述

STM32开发板教程之定时器中断实验的资料概述

STM32 定时器功能十分强大,它一共有三种定时器。高级定时器(TIME1 和TIME8),通用定时....

发表于 11-15 10:04 27次 阅读
STM32开发板教程之定时器中断实验的资料概述

STM32开发板教程之ADC的详细资料概述

ADC(Analog to Digital Converter),模拟/数字转换器,理解为将连续变量....

发表于 11-15 10:04 29次 阅读
STM32开发板教程之ADC的详细资料概述

STM32开发板教程之SysTick定时器的详细资料概述

SysTick 是一个被放在NVIC 中的定时器,主要目的是为给操作系统提供一个硬件上的中断(号称滴....

发表于 11-15 10:03 20次 阅读
STM32开发板教程之SysTick定时器的详细资料概述

STM32开发板教程之窗口看门狗(WWDG)的详细资料概述

窗口看门狗通常被用来检测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件....

发表于 11-15 10:03 30次 阅读
STM32开发板教程之窗口看门狗(WWDG)的详细资料概述

STM32开发板教程之开发板编译和下载程序指导

打开一个工程文件,工程文件的后缀为.uvproj。在弹出的开发环境中,可以看到左上方第三行菜单栏里的....

发表于 11-15 09:54 24次 阅读
STM32开发板教程之开发板编译和下载程序指导

各种STM32单片机的flash的详细资料合集免费下载

本文档的主要内容详细介绍的是各种STM32单片机的flash的详细资料合集免费下载。

发表于 11-13 08:00 43次 阅读
各种STM32单片机的flash的详细资料合集免费下载

舵机实验的程序详细资料免费下载

本文档的主要内容详细介绍的是使用STM32F10x舵机实验的程序详细资料免费下载。舵机由0度向180....

发表于 11-13 08:00 60次 阅读
舵机实验的程序详细资料免费下载

STM32系列32位微控制器(MCU)产品数据和选型手册免费下载

本文档的主要内容详细介绍的是STM32系列32位微控制器(MCU)产品数据和选型手册免费下载。

发表于 11-13 08:00 50次 阅读
STM32系列32位微控制器(MCU)产品数据和选型手册免费下载

Grbl固件的STM32F108单片机系列版的详细资料合集免费下载

本文档的主要内容详细介绍的是Grbl固件的STM32F108单片机系列版的详细资料合集免费下载。

发表于 11-12 08:00 35次 阅读
Grbl固件的STM32F108单片机系列版的详细资料合集免费下载

STM32调试DEBUG时需要了解那些知识相关资料概述

学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。本文....

的头像 嵌入式资讯精选 发表于 11-11 11:39 300次 阅读
STM32调试DEBUG时需要了解那些知识相关资料概述

KNX网络的特点及在智慧城市中的作用

  尽管几乎我们日常生活中的所有其它元素通过现代电子硬件的利用已发生了不可逆转的变化(通过互联网进行....

发表于 11-11 07:54 51次 阅读
KNX网络的特点及在智慧城市中的作用

STM32F1XX的开发攻略详细资料免费下载

本文档的主要内容详细介绍的是普中STM32F1XX的开发攻略详细资料免费下载

发表于 11-09 08:00 73次 阅读
STM32F1XX的开发攻略详细资料免费下载

STM32F103XX系列微控制器中文数据手册的资料免费下载

本文档的主要内容详细介绍的是STM32F103XX系列微控制器中文数据手册的资料免费下载。

发表于 11-09 08:00 47次 阅读
STM32F103XX系列微控制器中文数据手册的资料免费下载

STM32 IAP的实现原理以及方式详细资料概述

个人的理解呢,对于ISP 技术呢,怎么说因为我们也没有用过程序的编程器,从第一次接触51 单片机就用....

发表于 11-08 11:37 69次 阅读
STM32 IAP的实现原理以及方式详细资料概述

典型CAN总线器件的介绍及其应用资料概述

CAN总线的突出优点使其在各个领域的应用得到迅速发展, 这使得许多器件厂商竞相推出各种CAN总线器件....

发表于 11-08 11:05 56次 阅读
典型CAN总线器件的介绍及其应用资料概述

STM32 32位MCU系列选型手册免费下载

STM32组合提供了一个非凡的选择品种,现在包括ARM皮质米芯(M0,M0,M3,M4和M7),为开....

发表于 11-08 08:00 49次 阅读
STM32 32位MCU系列选型手册免费下载

FlyMcu STM32程序ISP串口烧写软件资料免费下载

本文档的主要内容详细介绍的是FlyMcu STM32程序ISP串口烧写软件资料免费下载。

发表于 11-08 08:00 34次 阅读
FlyMcu STM32程序ISP串口烧写软件资料免费下载

你可能还不知道数据手册中有这些内容

一般《Reference manual参考手册》和《Datasheet数据手册》这两本手册是我们底层....

的头像 嵌入式资讯精选 发表于 11-07 09:11 220次 阅读
你可能还不知道数据手册中有这些内容

使用STM32F103C8T6温度检测的程序资料免费下载

本文档的主要内容详细介绍的是使用STM32F103C8T6温度检测的程序资料免费下载

发表于 11-07 08:00 40次 阅读
使用STM32F103C8T6温度检测的程序资料免费下载

如何系统地入门学习stm32?老司机筒子们有自己的看法

arm 官方也开始推这种通用库了。而此时st发现一剑走天涯的方法的确有很多弊端,开始了stmcube....

的头像 嵌入式资讯精选 发表于 11-06 17:07 507次 阅读
如何系统地入门学习stm32?老司机筒子们有自己的看法

stm32的DMA1通道一览表,stm32使用DMA的相关操作

从数据搬运的角度看,如果要把存储地址A的数值赋给另外一个地址上B的变量,CPU实现过程为首先读出A地....

的头像 玩转单片机 发表于 11-05 10:56 281次 阅读
stm32的DMA1通道一览表,stm32使用DMA的相关操作

基于STM32单片机的64Mbit单对单通信

简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。

的头像 畅学单片机 发表于 11-02 14:19 249次 阅读
基于STM32单片机的64Mbit单对单通信

STM32L0x3 32位微控制器存储器中文数据手册免费下载

本参考手册面向应用开发人员,提供有关使用 STM32L0x3 微控制器存储器与外设的完整信息。

发表于 10-31 08:00 48次 阅读
STM32L0x3 32位微控制器存储器中文数据手册免费下载

STM32F103的定时器触发ADC官方程序免费下载

本文档的主要内容详细介绍的是STM32F103的定时器触发ADC官方程序免费下载

发表于 10-30 15:40 73次 阅读
STM32F103的定时器触发ADC官方程序免费下载

浅析硬中断和软中断的区别

从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控....

的头像 嵌入式ARM 发表于 10-30 14:34 330次 阅读
浅析硬中断和软中断的区别

关于1553b现场总线的简单剖析

1553B总线是MIL-STD-1553总线的简称,其中B就是BUS,MIL-STD-1553总线是....

发表于 10-28 10:53 331次 阅读
关于1553b现场总线的简单剖析

西门子首款内置型现场总线诊断控制系统能提供扩展性现场总线诊断

西门子推出了据其称是首个带综合现场总线诊断的控制系统。这个名为Simatic AFDiSD “活动现....

发表于 10-28 10:48 143次 阅读
西门子首款内置型现场总线诊断控制系统能提供扩展性现场总线诊断

STM32单片机如何超频工作超大约多少还能正常工作

根据微软学术的定义,所谓超频(OVERCLOCKING)就是强制将计算机或硬件运行于厂商指定的时钟频....

的头像 玩转单片机 发表于 10-28 09:26 604次 阅读
STM32单片机如何超频工作超大约多少还能正常工作

STM32引脚功能的详细资料说明

本文档的主要内容详细介绍的是STM32引脚功能的详细资料说明

发表于 10-26 08:00 92次 阅读
STM32引脚功能的详细资料说明

如何使用STM32单片机设计一个两轮自平衡小车

本文采用STM32单片机作为主控制器,用MMA7361加速度传感器和两个陀螺仪传感器来检测车的状态,....

发表于 10-26 08:00 73次 阅读
如何使用STM32单片机设计一个两轮自平衡小车

转学STM32的入门总结和学习步骤

大家可能是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩....

的头像 玩转单片机 发表于 10-25 16:19 491次 阅读
转学STM32的入门总结和学习步骤

详细分析11个电机驱动设计方案

24V无刷直流 (BLDC) 电机正弦波驱动,应用于空气净化器风扇。此参考设计是用于无刷直流 (BL....

的头像 单片机爱好者 发表于 10-25 16:02 833次 阅读
详细分析11个电机驱动设计方案

学STM32对你来说有什么好处

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。

的头像 玩转单片机 发表于 10-25 09:06 1608次 阅读
学STM32对你来说有什么好处

STM32单片机的最新原理图资料免费下载

本文档的主要内容详细介绍的是STM32单片机的最新原理图资料免费下载内容包括了:IO,LCD/OLE....

发表于 10-24 08:00 58次 阅读
STM32单片机的最新原理图资料免费下载

探讨NXP的自动驾驶安全观念

NXP在全球有30个以上的汽车业务办公地点,有超过2400位汽车工程师,40%的收入来自汽车业务,在....

的头像 高工智能汽车 发表于 10-23 09:30 795次 阅读
探讨NXP的自动驾驶安全观念

进行315M无线模块的学习与发送的资料合集免费下载

本文档的主要内容详细介绍的是进行无线315的学习与发送的资料合集免费下载内容包括了:核心、硬件、OB....

发表于 10-22 08:00 49次 阅读
进行315M无线模块的学习与发送的资料合集免费下载

STM32摄像头实验代码的详细资料免费下载

本文档的主要内容详细介绍的是STM32摄像头实验代码的详细资料免费下载。

发表于 10-22 08:00 52次 阅读
STM32摄像头实验代码的详细资料免费下载

STM32控制激光雕刻机的详细资料免费下载

本文档的主要内容详细介绍的是STM32控制激光雕刻机的详细资料免费下载。

发表于 10-22 08:00 63次 阅读
STM32控制激光雕刻机的详细资料免费下载

如何实现NXP WLC无线充电方案本地化

随着华为Mate 20 Pro率先支持15W无线快充以及无线充电联盟Qi标准制定以后,无线充电技术着....

的头像 周立功单片机 发表于 10-19 16:42 1281次 阅读
如何实现NXP WLC无线充电方案本地化

史上最全STM32调试步骤!

将Jlink与学习板,USB延长线与学习板,串口延长线与学习板(或者USB转串口线与学习板)连接起来....

的头像 电子发烧友网 发表于 10-18 15:42 728次 阅读
史上最全STM32调试步骤!

STM3210C EVAL评估板原理图详细资料免费下载

本文档的主要内容详细介绍的是STM3210C EVAL评估板原理图详细资料免费下载。

发表于 10-18 10:27 62次 阅读
STM3210C EVAL评估板原理图详细资料免费下载

SN74LVC646A 具有三态输出的八路总线收发器和寄存器

SN54LVC646A八路总线收发器和寄存器设计用于2.7 V至3.6 VVCC操作,SN74LVC646A八路总线收发器和寄存器设计用于1.65V至3.6VVCC操作。 这些器件由总线收发器电路,D型触发器和控制电路组成用于直接从输入总线或内部寄存器多路传输数据。 A或B总线上的数据在适当时钟(CLKAB或CLKBA)输入的低到高转换时被输入寄存器。图1显示了使用?? LVC646A器件执行的四种基本总线管理功能。 输出使能(OE)和方向控制(DIR)输入控制收发器功能。在收发器模式下,高阻抗端口的数据存储在任一寄存器或两者中。 选择控制(SAB和SBA)输入可以复用存储的和实时(透明模式)数据。当OE \低时,DIR确定哪个总线接收数据。在隔离模式(OE \ high)中,A数据存储在一个寄存器中,B数据可以存储在另一个寄存器中。 当禁用输出功能时,输入功能仍然有效,并且可以用于存储和传输数据。一次只能驱动两条总线A或B中的一条。 输入可以从3.3 V或5 V器件驱动。此功能允许在混合的3.3 V /5 V系统环境中将这些器件用作转换器。 这些器件完全指定用于部分断...

发表于 10-09 17:08 2次 阅读
SN74LVC646A 具有三态输出的八路总线收发器和寄存器

SN74HCT652 具有三态输出的八路总线收发器和寄存器

 HCT652器件由总线收发器电路,D型触发器和控制电路组成,用于直接从数据中复用数据传输总线或从内部存储寄存器。提供输出使能(OEAB和OEBA \)输入以控制收发器功能。提供选择控制(SAB和SBA)输入以选择实时或存储的数据传输。低输入电平选择实时数据;高输入级别选择存储的数据。图1显示了可以使用这些器件执行的四种基本总线管理功能。 A或B数据总线上的数据或两者都可以存储在内部D型触发器中无论选择控制端子还是输出控制端子,在适当的时钟(CLKAB或CLKBA)端子上都会发生从低到高的跳变。当SAB和SBA处于实时传输模式时,通过同时启用OEAB和OEBA \,可以在不使用内部D型触发器的情况下存储数据。在此配置中,每个输出都会增强其输入。当两组总线的所有其他数据源都处于高阻态时,每组总线保持最后状态。 为确保上电或断电期间的高阻态,OEBA \应通过上拉电阻连接到VCC,OEAB应通过下拉电阻连接到GND;电阻的最小值由驱动器的电流吸收/电流源能力决定。 特性 工作电压范围4.5 V至5.5 V 低功耗,80-μA...

发表于 10-09 17:06 2次 阅读
SN74HCT652 具有三态输出的八路总线收发器和寄存器