spi与i2c总线的区别
0 2022-11-30

  什么是SPI

  SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。

  SPI协议概括

  SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

  (1)SDI – SerialData In,串行数据输入;

  (2)SDO – SerialDataOut,串行数据输出;

  (3)SCLK – Serial Clock,时钟信号,由主设备产生;

  (4)CS – 从设备使能信号,由主设备控制。

  什么是I2C总线

  I2C--INTER-IC串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实 现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线 上,通过地址来识别通信对象。

  I2C 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps(我们开发板一般在130Kbps),高速模式下达到4Mbps,不能实现全双工,不适合传输很多的数据。

  I2C总线是一个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防止数据被破坏 。

  下来详细了解I2C总线时序:

  1.1 总线数据有效性

  I2C总线是单工,因此同一时刻数据只有一个流向,因此采样有效时钟也是单一的,是在SCL时钟的高电平采样数据。

  I2C总线上SDA数据在SCL时钟低电平是可以发生变化,但是在时钟高电平时必须稳定,以便主从设备根据时钟采样数据,如下图:


  1.2 总线空闲条件

  I2C总线上设备都释放总线(发出传输停止)后,I2C总线根据上拉电阻变成高电平,SDA SCL都是高电平。

  1.3 总线数据传输起始和结束条件

  I2C总线SCL高电平时SDA出现由高到低的跳变,标志总线上数据传输的开始条件

  I2C总线SCL高电平时SDA出现由低到高的跳变,标志总线上数据传输的结束条件


  1.4 总线数据传输顺序以及ACK应答

  I2C总线上数据传输室MSB在前,LSB在后,从示波器上看,从左向右依次读出数据即可

  I2C总线传输的数据不收限制,但是每次发到SDA上的必须是8位,并且主机发送8位后释放总线,从机收到数据后必须拉低SDA一个时钟,回应ACK表示数据接收成功,我们如果示波器上看到的波形就是每次9位数据,8bit 1bit ack。如下:


  从机收到一字节数据后,如果需要一些时间处理,则会拉低SCL,让传输进入等待状态,处理完成,释放SCL,继续传输,如下:


  1.5 总线读写时序

  数据的传输在起始条件之后,发送一个7位的从机地址,紧接着第8位是数据方向(R/ W),0-表示发送数据(写),1-表示接收数据(读)。数据传输一般由主机产生的停止位(P)终止。但是如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr),和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。

  I2C总线主设备读写从设备,一般都是与从设备的寄存器打交道,这个可以通过阅读从设备的datasheet获取。总线写时序如下:

  master start master addr|w slave ack master reg|w slave ack master data slave ack master restart。。master data slave nack master stop

  总线读时序如下:

  master start master addr|w slave ack master reg|w slave ack master restart master addr|r slave ack slave data master nack master stop

  总线读时序与写的不同之处在于读需要2次传输才能完成一次读取,首先要写寄存器地址到从设备,其实是写到了从设备的控制寄存器或者命令寄存器,从设备内部会根据这个地址来寻址所要操作的寄存器。

  我在读我们的bios和内核时发现,2者在总线读时序上的实现不太一样,在于第一次寄存器地址写入后,一个发的是restart,一个发的是stop,然后再start开始读取数据,示波器抓波形发现读取数据都正确,说明这2种时序都是正确的。

  I2C总线的读写时序比较固定,设备通信严格遵循协议,因此I2C总线设备驱动程序的编写也就相对简单一些。

  主要应用的I2C总线设备有touchscreen rtc 外扩io等

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 地址总线数据总线及控制总线的定义

    总线:指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。地址总线(AB):地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基

    5小时前
  • 如何提高RS485接口芯片的通信质量

    RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的

    5小时前
  • 模拟SPI接口I/O的定义及通信设计

    1.端口:P0.4,P0.5,P0.6,P0.72.调用delay_ms函数sbitspi_cs=P0^1;sbitspi_di=P0^2;sbitspi_cl

    昨天
  • 串口数据转换CAN帧格式的方法

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的帧格式是如何的?本文将为大家

    昨天
  • IPMB接口的请求和应答协议

    lRequest/ResponseProtocol(请求/应答协议)IPMB使用“请求——应答”协议,发送一条请求消息给一个智能设备,该设备会返回一个独立的应答

    昨天
  • IPMB接口协议的实现目标和特征

    智能平台管理总线(IPMB)的设计是为了在mission-critical服务器平台支持“ServerPlatformManagement”(服务器平台管理)的

    昨天
  • 飞机加油系统中的PIC单片机应用

    一、引言当前,能源已成为制约很多国家发展的瓶颈,特别是广大发展中国家,能源紧缺现象逐步凸现,世界各国对石油资源的争夺不断加剧,甚至引发局部战争;作为最大的发展中

    昨天
  • 基于ARM7处理器实现USB接口与CAN总线

    为了更好的将USB的通用性和CAN的专业性结合起来,通过计算机的USB接口接入CAN专业网络,实现系统控制的便利性和应用的高效性,本文讲述了一种基于ARM7处理

    昨天
  • 嵌入式开发常用总线与接口

    任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化

    前天
  • 电机控制单电阻采样机制

    电机控制单电阻采样机制是在一个PWM波形内采集两相电流ADC数据,但某些扇区边界条件下只能获得一路电流ADC数据,需要对PWM波形进行变形用于构造电流采样区域。

    01-28
  • 共模电感用于总线的作用

    在CAN节点的设计中,我们通常为了总线的通讯更为可靠,为CAN接口增加各种器件,但实际并非所有应用都需要,过多防护不仅增加成本,而且器件的寄生参数必然影响信号质

    01-20
下载排行榜
更多
广告