STM32——存储器,I2C协议

常见存储器分类

存储器可以分为易失性存储器和非易失性存储器,其中易失性存储器是RAM,RAM包括DRAM(SDRAM,DDR SDRAM,DDRII SDRAM,DDRIII SDRAM)和SRAM,非易失性存储器,包括ROM(MASK ROM,PROM【OPTROM,EPROM,EEPROM】,FLASH【NOR FLASH,NAND FLASH】,光盘,软盘,机械硬盘)

RAM:

(1) SRAM-静态随机存储器

以锁存器来存储数据

(2) DRAM-动态随机存储器

以电容来表示数据

随机存取是指当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关

特性DRAMSRAM
存取速度较慢较快
集成度较高较低
生产成本较低较高
是否需要刷新

ROM——只读存储器

MASK ROM:内部数据内容出厂时固化,不可修改

OPT ROM:内部数据内容用户可写入一次,之后不可修改

EP ROM:可重复擦写,但需要使用专用紫外线照射设备擦除

EEP ROM:可重复擦写,电擦除,使用方便

FLASH——闪存

Nor Flash——内部储存块或非方式连接

Nand Flash——内部储存块按与非方式连接

特性NOR FLASHNAND FLASH
同容量存储器成本较贵较便宜
集成度较低较高
介质类型随机存储连续存储
地址线和数据线独立分开共用
擦除单元以扇区/块擦除以扇区/块擦除
读写单元可以基于字节读写必须以块为单位读写
读取速度较高较低
写 入速度较低较高
坏块较少较多
是否支持XIP支持不支持

I2C——读写EEPROM

I2C通讯协议简介

I2C通信协议是由Phiilps公司开发的,由于它因较少,硬件实现简单,可拓展性强,不需要USART,CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间通讯

I2C物理层特点

(1)它是一个支持多设备的总线,总线指的是多个设备公用的信号线,在一个I2C通讯总线中。可连接多个IC通讯设备,支持多个通讯主机以及多个通讯从机

(2)一个I2C总线只是用两条总线线路,一台哦双向串行数据线(SDA),一条串行时钟线(SCL),数据线及用来表示数据,时钟线用于数据收发同步

(3)每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问

(4)总线通过上拉电阻接到电源,当I2C设备空闲时,会输出高阻态,当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平

(5)多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定哪个设备占用总线

仲裁方法:I2C一般使用开漏结构,可以实现线与逻辑,只要总线上有一个设备输出低电平,这条总线的电平就会变成低电平,即使其他设备输出高电平,整条总线也始终保持低电平。当多个主机进行数据传输时,比如A,B主机都需要在这个总线上传输数据,假设A传输一个高电平,B传输一个低电平,由于线与逻辑,SDA总线上就是低电平,此时设备会对比传输的数据与总线的状态,由于A是高电平,与总线状态不一致,A就失去了对总线上的使用权,B是低电平,与总线状态一致,B获得使用权。

(5)具有三种传输模式,标准模式传输速率为100kbit/s,快速模式为400kbit/s,高速模式下可达到3.4Mbit/s,但目前大多I2C设备不支持高速模式

(6)连接到相同总线的IC数量受到总线最大电容400pF限制

I2C协议层特点

I2C协议定义了通讯的起始和通知信号,数据有效性,响应,仲裁,时钟同步和地址广播等环节

写入过程分析: S是传输开始信号,紧接着就是从机地址,也就是传输的目标,随后是一个读写信号位,指定信号的发送目的,如果R/W为0,表示主机想在从机上执行写操作,当从机接收到数据之后,就会向主机发送一个响应信号(应答ACK),表示已收到信号,主机接收到这个信号时,就会开始发送数据,如果主机没有等到应答信号,就表示设备不在这个总线上,此时主机和从机占用总线进行数据交互,协议末尾是P,停止位。

 读取过程分析: S是传输开始信号(主机发送),紧接着就是从机地址,也就是读取的目标,随后是一个读写信号位,指定信号的发送目的,如果R/W为1,表示主机想在从机上执行读操作,当从机接收主机的信号(读)后,就会向主机发送一个响应信号(应答ACK),表示已收到信号,并将DATA由从机传输到主机,数据传输完毕后,主机向从机发送一个应答标志,表示已经收到数据,从机就会继续向主机传输数据,直到主机不应答(NACK),从机就停止数据传输,协议末尾是P,停止位。

 通讯的起始和停止信号

 (1)当SCL为高电平时,SDA由高电平向低电平切换,这种情况表示通讯的起始

(2)当SCL为低电平时,SDA由低电平向高电平切换,这种情况表示通讯停止

(3)起始和停止信号一般由主机产生

数据有效性

I2C使用SDA信号线来传输数据,使用SCL信号线进行数据同步,SDA数据线在SCL的每个时钟周期传输一位数据

SCL为高电平的时候SDA表示数据有效,即此时的SDA为高电平表示数据1,为低电平时表示数据0,当SCL为低电平时,SDA数据无效,一般这个时候SDA进行电平切换,为下一次表示数据做好准备

地址以及数据方向

I2C总线上的每个设备都有自己独立的地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机,设备地址可以是7位或者10位

紧跟设备地址的是数据位R/W用来表示数据传输的方向,数据方向位为1表示主机由从机读取数据,为0表示主机向从机写数据

响应

I2C的数据个地址传输都带相应,相应包括“应答(ACK)” 和非应答(NACK)

 传输时主机产生时钟,在第九个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,若SDA为高电平,表示非应答信号,低电平表示应答信号

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值