这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】STM32G070RB的IIC使用

共3条 1/1 1 跳转至

【原创】STM32G070RB的IIC使用

高工
2022-06-19 21:19:08     打赏

    各位朋友们大家好~今儿我们来了解一下STM32G070的IIC。

    首先,对于以前学过单片机或者接触过STM32F1的小伙伴们来说,IIC其实并不陌生。IIC最标准的写法应该是写作“IIC”,但通常我们也可以见到在某些材料中也写作I2C,或者I2C,这不重要,谁还没几个外号呢。当这些名称出现的时候,我们知道他指的是什么就OKK了。下面简单的回顾一下。

    IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,它引脚少,硬件实现简单,可扩展性强,不需要 USARTCAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

    接下来,我们简单看一下IIC总线上主从设备之间的连线图,如下图1所示。

    image.png

图1 IIC总线主从设备之间的连线图

    由图可以看出,首先IIC总线有两条线,一条SCL用来同步收发双方的时钟,一条SDA用来传输数据。时钟线SCL和数据线SDA之间按照一定的时序相互配合,就可以完成数据的传输工作。

    其次,IIC总线上,可以有N个主机,以及N个从机(此图中只画了一个主机,实际上是可以多主机的),多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线 。同时我们可以看到,这两根线均通过了一个上拉电阻接到了VCC,这保证了在没有通信请求的时候,也就是IIC设备空闲的时候,对外呈现高阻态,当总线上所有的设备都空闲的时候,则上拉电阻会将空闲的总线拉成高电平。当有设备需要请求通信时就会将SDA总线由高拉低,打破当前高电平的平衡,造一个起始信号表明我要开始通信啦~具体起始信号的时序,我们下文中会详细讲解。

    同时,我们可以从图中看到,这两根线上挂的设备不止一个,每个连接到总线的设备,都有一个独立的地址,主机就可以利用这些地址,去寻找不同的设备,完成对他们的通信了。总线上最多能挂多少个设备呢?一般来说,从机地址可以是7位或10位来表示,如果按照7位来算,总线上最多可以挂载128个设备,如果用10位来算,那么总线上则理论上能挂载1024个设备了。不过通常由于硬件上的局限性,比如总线所能承受的最大电容400pF这一限制条件,因此总线上最多能挂载的设备数量一般来说是远小于理论值的。具体还需要看设备自身的等效电容值来计算。

    另外,由总线的结构我们也可以看出,真正传输数据的只有一根线SDA,因此IIC的通信方式属于半双工,也就是说同一个时间只能向一个方向进行通信。

    对于传输的速度,有三种:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多 I2C 设备尚不支持高速模式。

    



专家
2022-06-19 21:42:46     打赏
2楼

看看


专家
2022-06-19 22:49:52     打赏
3楼

感谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]