STM32?I2C-EEPROM

I2C协议简介:
I2C(inter-integrated Circuit)协议是由Phiilps公司开发的,因为它的引脚少,硬件实现简单,可扩展性强(不像USART,CAN的外部收发设备),如今被广泛的使用在系统内多个集成电路(IC)之间的通信.
(根据I2C总线协议,我们可以把I2C分为物理层和协议层)
物理层:
1,使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL).
2,每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问.
3,多主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线.
4,具有三种传输模式:
标准模式传输速率为100Kbit/s
快速模式传输速率为400Kbit/s
高速模式传输速率为3.4Mbit/s(但是目前大多的I2C设备都不支持高速模式)
5,片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整.
6,连接到相同总线的IC数量受到总线的最大电容400pF限制.
这里写图片描述

协议层:
I2C的协议包括起始和停止条件,数据有效性,响应,仲裁,时钟同步和地址广播等.(STM32有集成的硬件I2C接口,所以不需要用软件去模拟SDA和SCL时序).
这里写图片描述
主机写数据到从机
这里写图片描述
主机由从机读数据
(这两幅图表示的是主机和从机通讯时,SDA线的数据包序列)

S:传输开始信号
SLAVE ADDRESS:从机的地址
R/~W:传输方向选择 1为读,0为写
A/~A:应答或者非应答信号
DATA(带阴影的):数据由主机传输到从机
DATA(空白的):数据由从机传输到主机
P:停止传输信号

起始信号S产生后,所有从机就开始等待主机接下来广播的从机地址信号SLAVE ADDRESS,在I2C总线上,每个设备的地址都是唯一的.当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备会直接忽略之后的数据信号.(根据I2C总线协议,这个从机地址可是是7位或10位).
地址位的后面,是传输方向的选择(读写R/~W),从机接收到匹配的地址后,主机或从机会返回一个应答(A)或者非应答(~A)信号,只有接收到应答信号后,主机才能继续发送或接收数据.(根据I2C总线协议,之后的每一个操作都需要返回一个应答信号)

如果配置方向传输位是写数据:
广播完地址,接收到应答信号后,主机开始向从机传输数据(DATA),数据包的大小为8位,主机每发送一个数据,都要等待从机的应答信号(A)(重复这个过程可以向从机传输N个数据,这个N没有大小限制),当数据传输结束时,主机向从机发送一个停止传输信号(P),表示传输数据停止.

如果配置方向传输位是读数据:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值