首页 » 科学 » 掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记

掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记

落叶飘零 2024-09-25 13:59:46 0

扫一扫用手机浏览

文章目录 [+]

1、SPI总线简介

同步外设接口(SPI)是由摩托罗拉公司开拓的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。

掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记 掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记 科学

SPI(Serial Peripheral Interface 串行外设接口)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交流。
SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能旗子暗记)四种旗子暗记构成。
传输的速率由时钟旗子暗记SCK决定,通讯时,SI为数据输入、SO为数据输出,数据在时钟的上升或低落沿由SDO 输出,在紧接着的低落或上升沿由SDI 读入,这样经由8/16 次时钟的改变,完成8/16 位数据的传输。

掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记 掌握SPI和I2C总线协议心得调试起来果真方便多了......_时钟_暗记 科学
(图片来自网络侵删)

采取SPI总线的系统下图所示,它包含了一个主片和多个从片,主片通过发出片选旗子暗记-CS来掌握对哪个从片进行通信,当某个从片的CS旗子暗记有效时,能通过SI吸收指令、数据,并通过SO发回数据。
而未当选中的从片的SO端处于高阻状态。

SPI总线的系统

在SPI传输中,数据是同步进行发送和吸收的。
数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。
然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对付SO-数据位的时钟相位。
CPOL和CPHA的设置决定了数据取样的时钟沿。

2、数据方向和通信速率。

SPI传输串行数据时首先传输最高位。
波特率可以高达5Mbps,详细速率大小取决于SPI硬件。
例如,Xicor公司的SPI串行器件传输速率能达到5MHz。

3、SPI总线接话柄时序

SPI总线包括1根串行同步时钟旗子暗记线以及2根数据线。
SPI模块为了和外设进行数据交流,根据外设事情哀求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。

如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。
如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或低落)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或低落)数据被采样。

SPI主模块和与之通信的外设备时钟相位和极性该当同等。
SPI主模块和与之通信的外设备时钟相位和极性该当同等。
个人理解这句话有2层意思:

其一,主设备SPI时钟和极性的配置该当由外设来决定;其二,二者的配置该当保持同等,即主设备的SDO同从设备的SDO配置同等,主设备的SDI同从设备的SDI配置同等。
由于主从设备是在SCLK的掌握下,同时发送和吸收数据,并通过2个双向移位寄存器来交流数据。
SPI接口时序如图3、图4所示。

4、SPI协议心得

4.1、SPI接口时钟配置心得:

在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟哀求,由于主设备这边的时钟极性和相位都因此从设备为基准的。
因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是低落沿吸收数据,是在时钟的低落沿还是上升沿输出数据。
但要把稳的是,由于主设备的SDO连接从设备的SDI,从设备的SDO连接主设备的SDI,从设备SDI吸收的数据是主设备的SDO发送过来的,主设备SDI吸收的数据是从设备SDO发送过来的,以是主设备这边 SPI时钟极性的配置(即SDO的配置)跟从设备的SDI吸收数据的极性是相反的,跟从设备SDO发送数据的极性是相同的。
下面这段话是Sychip Wlan8100 Module Spec上说的,充分解释了时钟极性是如何配置的:

The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.

意思是:主设备在时钟的低落沿发送数据,从设备在时钟的上升沿吸收数据。
因此主设备这边SPI时钟极性该当配置为低落沿有效。

又如,下面这段话是摘自LCD Driver IC SSD1289:

SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.

意思是:从设备SSD1289在时钟的上升沿吸收数据,而且是按照从高位到地位的顺序吸收数据的。
因此主设备的SPI时钟极性同样该当配置为低落沿有效。

时钟极性和相位配置精确后,数据才能够被准确的发送和吸收。
因此该当对照从设备的SPI接口时序或者Spec文档解释来精确配置主设备的时钟。

5、I2C(Inter-Integrated Circuit)总线

I2C总线是一种由PHILIPS公司开拓的两线式串行总线,用于连接微掌握器及其外围设备。
I2C总线产生于在80年代,最初为音频和视频设备开拓,如今紧张在做事器管理中利用,个中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或节制组件的功能状态,如电源和系统风扇。
可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
I2C总线系统如下图所示:

I2C总线系统

5、I2C总线特点

I2C总线最紧张的优点是其大略性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降落了互联本钱。
总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。

I2C总线的另一个优点是,它支持多主控(multimastering), 个中任何能够进行发送和吸收的设备都可以成为主总线。
一个主控能够掌握旗子暗记的传输和时钟频率。
当然,在任何韶光点上只能有一个主控。

7、I2C总线事情事理

7.1 总线的构成及旗子暗记类型

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和吸收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。
各种被掌握电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能事情,以是每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或吸收器),这取决于它所要完成的功能。

CPU发出的掌握旗子暗记分为地址码和掌握量两部分,地址码用来选址,即接通须要掌握的电路,确定掌握的种类;掌握量决定该调度的种别(如比拟度、亮度等)及须要调度的量。
这样,各掌握电路虽然挂在同一条总线上,却彼此独立,互不干系。
I2C总线电路如下图所示:

I2C总线电路

I2C总线在传送数据过程中共有三种类型旗子暗记, 它们分别是:开始旗子暗记、结束旗子暗记和应答旗子暗记。

开始旗子暗记:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束旗子暗记:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答旗子暗记:吸收数据的IC在吸收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个旗子暗记后,等待受控单元发出一个应答旗子暗记,CPU吸收到应答旗子暗记后,根据实际情形作出是否连续通报旗子暗记的判断。
若未收到应答旗子暗记,由判断为受控单元涌现故障。

8、I2C总线的时钟旗子暗记

在I2C总线上传送信息时的时钟同步旗子暗记是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。
SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟旗子暗记变为低电平,将使SCL线上所有器件开始并保护低电平期。
此时,低电平周期短的器件的时钟由低至高的跳变并不影响SCL线的状态,这些器件将进入高电平等待的状态。

当所有器件的时钟旗子暗记都变为高电平时,低电平期结束,SCL线被开释返回高电平,即所有的器件都同时开始它们的高电平期。
其后,第一个结束高电平期的器件又将SCL线拉成低电平。
这样就在SCL线上产生一个同步时钟。
可见,时钟低电平时间由时钟低电平期最长的器件决定,而时钟高电平时间由时钟高电平期最短的器件决定。

9、I2C总线的传输协议与数据传送

9.1、起始和停滞条件

在数据传送过程中,必须确认数据传送的开始和结束。
在I2C总线技能规范中,开始和结束旗子暗记(也称启动和停滞旗子暗记)的定义如图3所示。

开始旗子暗记:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变,开始传送数据。
结束旗子暗记:当SCL线为高电平时,SDA线从低电平向高电平跳变,结束传送数据。

开始和结束旗子暗记都是由主器件产生。
在开始旗子暗记往后,总线即被认为处于忙状态,其它器件不能再产生开始旗子暗记。
主器件在结束旗子暗记往后退出主器件角色,经由一段韶光过,总线被认为是空闲的。

超始和停滞旗子暗记图

9.2、字节格式

I2C总线数据传送采取时钟脉冲逐位串行传送办法,在SCL的低电日常平凡代,SDA线上高、低电平能变革,在高电日常平凡代,SDA上数据必须保护稳定,以便吸收器采样吸收,时序如下图所示。

数据传送时序图

I2C总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。
与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电日常平凡代,发送器开释SDA线,吸收器把SDA线拉低,以给出一个吸收确认位;第9个脉冲高电日常平凡代,发送器收到这个确认位然后开始下一字节的传送,下一个字节的第一个脉冲低电日常平凡代吸收器开释SDA。
每个字节须要9个脉冲,每次传送的字节数是不受限定的。

每个字节后必须随着一个ACK应答位,数据从最高有效位(MSB)开始传输。
如果从机要实行一些功能后才能吸收或者发送新的完全数据,比如说做事一个内部中断,那么它可以将时钟线SCL拉低来逼迫使主机进入wait状态,当从机准备好新的字节数据传输时,开释时钟线SC,数据传输便连续进行。

每个字节后都有ACK发生,ACK应答位许可吸收器关照发送器字节成功吸收了下一个字节可以发送了.主机产生所有的时钟脉冲,包括应答位的第9个时钟脉冲。

ACK应答旗子暗记是如下定义的:在ACK的第9个时钟脉冲中发送器开释SDA线,以是吸收器可以将SDA拉低,使得在这个时钟脉冲的高电日常平凡代担保SDA是低电平.建立和保持韶光也该当打算在内。
当在第9个时钟脉冲期间SDA仍旧是高,这时定义为NACK旗子暗记,这时主机可以产生一个终止条件来终止传输,或者一个重复的开始条件来开始一个新的传输,这里有5种情形导致NACK的产生:

1、总线当前的传输地址上没有吸收器,以是没有设备用ACK来相应;

2、由于吸收者正在处理一些实时的功能,尚未准备与主机的通信,以是吸收者不能收发;

3、在传输期间,吸收者收到不能识别的数据或者命令;

4、在传输期间,吸收者无法吸收更多的数据字节;

5、主-吸收器要关照从-发送器传输的结束。

9.3、相应

数据传输必须带相应。
干系的相应时钟脉冲由主机产生,当主器件发送完一字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,此时钟内主器件开释SDA线,一字节传送结束,而从器件的相应旗子暗记将SDA线拉成低电平,使SDA在该时钟的高电日常平凡代为稳定的低电平。
从器件的相应旗子暗记结束后,SDA线返回高电平,进入下一个传送周期。

常日被寻址的吸收器在吸收到的每个字节后必须产生一个相应。
当从机不能相应从机地址时,从机必须使数据线保持高电平,主机然后产生一个停滞条件终止传输或者产生重复起始条件开始新的传输。
如果从机吸收器相应了从机地址但是在传输了一段韶光后不能吸收更多数据字节,主机必须再一次终止传输。
这个情形用从机在第一个字节后没有产生相应来表示。
从机使数据线保持高电平主机产生一个停滞或重复起始条件。
完全的数据传送过程下图图所示。

完全的数据传送过程

I2C总线还具有广播呼叫地址用于寻址总线上所有器件的功能。
若一个器件不须要广播呼叫寻址中所供应的任何数据,则可以忽咯该地址不作相应。
如果该器件须要广播呼叫寻址中按需供应的数据,则应对地址作出相应,其表现为一个吸收器。

10、总线基本操作

I2C规程利用主/从双向通讯。
器件发送数据到总线上,则定义为发送器,器件吸收数据则定义为吸收器。
主器件和从器件都可以事情于吸收和发送状态。
总线必须由主器件(常日为微掌握器)掌握,主器件产生串行时钟(SCL)掌握总线的传输方向,并产生起始和停滞条件。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停滞条件。
拜会下图:

串行总线上的数据传送顺序

备注:部分图片来源于网络,侵删!

标签:

相关文章

硒鼓怎么加墨粉老鸟指南_硒鼓_墨粉

硒鼓怎么加墨粉:一体式硒鼓硒鼓怎么加墨粉硒鼓怎么加墨粉,一体式硒鼓用完了碳粉,便是要报废掉。但是很多人会琢磨怎么在粉盒上打孔、灌粉...

科学 2025-01-11 阅读0 评论0