SPI协议和I2C协议基础知识学习

大部分内容来自野火的FPGA教学视频,笔者仅作整理,方便回顾。 视频地址:【野火】FPGA系列教学视频,真正的手把手教学,“波形图”教学法,现场画波形图写代码,硬件基于野火FPGA EP4CE10征途系列开发板,已完结_哔哩哔哩_bilibili

SPI通讯协议

SPI通讯协议(Serial Peripheral Interface),即串行外围设备接口。

        应用:EEPROM、Flash、RTC、ADC、DSP。

        优点:全双工、通讯方式简单、数据传输相对较快。

        缺点:没有应答机制确认数据是否接收,数据可靠性有缺陷。

SPI物理层

一主一从:

        SCK(Serial Clock):时钟信号线,用于同步通讯数据;

        MOSI(Master Output,Slave Inout):主设备输出/从设备输入;

        MISO(Master input,Slave Output):主设备输入/从设备输出;

        CS(Chip Select):片选信号线,也称CS_N。

一主多从:

 SPI协议层

        CPOL(clock polarity):时钟极性,CPOL=0时表示在片选信号未被选中时(即CS为高电平,从设备未被选中),SCK处于低电平;反之,SCK为高电平。

        CPHA(clock phase):时钟相位, CPHA=0时表示在时钟的奇数沿采样,CPHA=1时在偶数沿采样。

        CPOL、CPHA两者不同的0和1组合决定了SPI的四种通讯模式,模式00和模式10最常用。

CPHA=0,奇数边缘采样

CPHA=1,偶数边缘采样

IIC通讯协议

I2C通讯协议(Inter-Integrated Circuit),一种简单、双向二线制同步串行总线。

优点:简单、双向、同步,只需两条线,总用引脚少,硬件实现简单,可扩展型强,可连接多个从机和多个主机;

应用:数据采集领域的串行AD,摄像头配置、X射线管配置

I2C物理层:

I2C物理层

I2C_SCL:串行时钟线,用于同步通讯数据;

I2C_SDA:双向串行数据线,传输通讯数据。

特点:

        I2C总线下可连接多个从机,每个从机有一个独立的地址,总机通过地址访问不同的设备;

        当总线空闲时保持高电平

        多个主机同时访问时,采用仲裁的方式决定响应哪个主机;

        有三种通讯模式,标准模式(100Kb/s)、快速模式(400Kb/s)、高速模式(3.4Mb/s),大部分设备只支持标准和快速模式;

I2C协议层:

                   空闲状态    起始信号                  数据读写状态                  停止信号         

数据读写状态

注意SDA数据更新的时间节点。SCL高电平时,SDA保持不变了,保证开始和停止动作的独立。

设备地址和存储地址

         I2C设备在出厂前被设置一个器件地址,一般七位宽,一些设备七位地址都被设置,地址不可改,有些设备地址只有部分设置(如EEPROM,只设置了高四位为1010),其他位用户可自主设置。下图的EEPROM中,设备地址高四位为1010,低三位由A2、A1、A0决定,实际设备地址为1010011,这也说明一个I2C总线上最多连8个EEPROM。

EEPROM

         I2C总线中,主机发送的控制命令被所有从机接收,每个从机根据命令中的地址与自身地址是否匹配决定是否回应应答信号。

I2C读写操作

 I2C协议下EEPROM——单字节数据写入操作过程: 

单字节地址-数据写操作

双字节地址-数据写操作

        首先主机向从机发送起始信号(START),然后发送器件地址(DEVICE ADDRESS),紧接着是读写控制位(R/W,高电平读,低电平写);

        所有的从设备会对比自身地址和接收到的地址,对应地址的从设备发送应答信号(ACK)给主机,主机接收到后,主从机之间建立连接;

         然后主机发送存储地址,单字节直接发送,双字节先发送高八位地址,中间接收到从设备的应答信号(ACK)后再发送低八位地址(看图);在地址发送完毕并且接收到从设备的应答信号后,主机发送单字节数据;

        最后从机返回应答信号,主机发送结束信号(STOP),通讯结束。

 I2C协议下EEPROM——页写操作过程: 

 I2C协议下      EEPROM页写操作过程

         与单字节类似。

        所有的I2C设备都支持单字节写入操作,但只有部分设备支持页写操作,且一次页写写入的数据不能超过一页数据总量。

 I2C协议下EEPROM——数据读操作:

单字节数据读操作时序图

         注意,读数据时要先将要读的数据的地址写入从设备,所以要写写入地址,读写控制位置为写(低电平),写入地址后再次发送起始信号,验证设备地址后读写控制位置为读(高电平),这时主机接收传出的信号即可,接收完成后主机向从机发送一个周期的无应答信号(高电平、NO ACK),随后主机发送停止信号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值