0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

提供多主机功能,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兼容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NXP
    NXP
    +关注

    关注

    60

    文章

    1267

    浏览量

    183270
  • STM32
    +关注

    关注

    2266

    文章

    10871

    浏览量

    354788
  • 总线
    +关注

    关注

    10

    文章

    2866

    浏览量

    87981

原文标题:STM32的I2C通信

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

收藏 人收藏

    评论

    相关推荐

    MM32F013x上实现I2C地址的功能应用

    I2C中,通信是借助设备地址寻址实现的,大致可以分为两类:一对通信。在
    发表于 01-05 11:43 2080次阅读

    用嵌入式系统的SPI模块实现I2C总线通信

    I2C一般用于单主机系统中。在单主机系统中,通信系统的主机可能没有I2C接口模块, 而直接使用
    发表于 04-15 11:47 38次下载

    模拟I2C总线主节点通信原理及实现方法

    摘要 介绍模拟I2C总线的主节点通信原理,并提出一种新的实现方法。这种采用延时接收比较来实现仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能够实现模拟
    发表于 06-18 17:57 5532次阅读
    模拟<b class='flag-5'>I2C</b>总线<b class='flag-5'>多</b>主节点<b class='flag-5'>通信</b>原理及实现方法

    STM32F2技术培训_通信接口_I2C

    STM32F2 技术培训_通信接口_I2C
    发表于 12-03 17:35 0次下载

    基于I2C总线的单主通信

    基于I2C总线的单主从单片机之间的通信
    发表于 08-30 16:03 13次下载
    基于<b class='flag-5'>I2C</b>总线的单主<b class='flag-5'>多</b>从<b class='flag-5'>通信</b>

    STM32F2通信接口I2C

    STM32F2通信接口I2C
    发表于 09-03 11:24 31次下载
    <b class='flag-5'>STM32F2</b>—<b class='flag-5'>通信</b>接口<b class='flag-5'>I2C</b>

    I2C总线的构成及其在通信中的应用

    是Philips公司开发的一种双向两线主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成机间的非主从通信或主从通信。基于
    发表于 10-20 09:30 17次下载
    <b class='flag-5'>I2C</b>总线的构成及其在<b class='flag-5'>多</b>机<b class='flag-5'>通信</b>中的应用

    STM32F10x_硬件I2C主从通信 (轮询发送,中断接收)

    STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
    的头像 发表于 03-25 10:59 1.1w次阅读
    <b class='flag-5'>STM32</b>F10x_硬件<b class='flag-5'>I2C</b>主从<b class='flag-5'>通信</b> (轮询发送,中断接收)

    STM32F103 硬件I2C主从机通信

    STM32F103 硬件I2C主从机通信
    发表于 12-07 12:06 57次下载
    <b class='flag-5'>STM32</b>F103 硬件<b class='flag-5'>I2C</b>主从机<b class='flag-5'>通信</b>

    STM32通信模拟I2C

    ,高速IIC总线一般可达400kbps以上。IIC是半双工通信方式。主机I2C总线系统结构I2C协议空闲状态开始信号停止信号应答信号数据的
    发表于 12-07 14:51 1次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>通信</b>模拟<b class='flag-5'>I2C</b>

    I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题

    I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题
    发表于 12-08 16:36 10次下载
    <b class='flag-5'>I2C</b>接口配置ES7243录音芯片,MCU(<b class='flag-5'>STM32</b>)收不到<b class='flag-5'>I2C</b> ACK的问题

    STM32F103硬件I2C Slave

    MCU:STM32F103IDE:STM32CubeIDEHAL库硬件I2C当作Slave,模拟EEPROM行为测试工具:树莓派为I2C主机
    发表于 12-20 19:38 52次下载
    <b class='flag-5'>STM32</b>F103硬件<b class='flag-5'>I2C</b> Slave

    MM32F013x —— I2C从机地址应用

    I2C中,通信是借助设备地址寻址实现的,大致可以分为两类:一对通信。在
    发表于 01-25 19:39 7次下载
    MM32F013x —— <b class='flag-5'>I2C</b>从机<b class='flag-5'>多</b>地址应用

    MM32F013x——I2C从机地址应用

    I2C中,通信是借助设备地址寻址实现的,大致可以分为两类:一对通信。在
    发表于 02-08 17:10 3次下载
    MM32F013x——<b class='flag-5'>I2C</b>从机<b class='flag-5'>多</b>地址应用

    Arduino I2C主机方法(为什么以及如何)

    电子发烧友网站提供《Arduino I2C主机方法(为什么以及如何).zip》资料免费下载
    发表于 10-31 11:53 0次下载
    Arduino <b class='flag-5'>I2C</b><b class='flag-5'>多</b><b class='flag-5'>主机</b>方法(为什么以及如何)