《I2C总线及SPI规范.ppt》由会员分享,可在线阅读,更多相关《I2C总线及SPI规范.ppt(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、I2C总线规范,I2C总线的定义,简单地说,就是用于连接到总线的器件传递信息的通道。它支持任何IC生产过程(NMOS,CMOS,双极性),是一个多主机的总线,可以连接多于一个能控制总线的器件到总线。是一种双向两线总线,包括一条串行数据线(SDA),一条串行时钟线(SCL),总线空闲时这两条线路都是高电平。,1 假设微控制器A 要发送信息到微控制器B 微控制器A 主机寻址微控制器B 从机 微控制器A 主机发送器发送数据到微控制器B 从机接收器 微控制器A 终止传输2 如果微控制器A 想从微控制器B 接收信息 微控制器A 主机寻址微控制器B 从机 微控制器A 主机接收器从微控制器B 从机发送器接收
2、数据 微控制器A 终止传输,I2C总线术语的定义,I2C总线的特征,每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机,可以作为主机发送器或主机接收器。它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s, 快速模式下可达400kbit/s ,高速模式下可达3.4Mbit/s。片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。,I2C总线的总体特征,SDA 和SCL 都是双向线路
3、都通过一个电流源或上拉电阻连接到正的电源电压,当总线空闲时这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。SDA 线上的数据必须在时钟的高电平周期保持稳定,数据线的电平状态只有在SCL 线的时钟信号是低电平时才能改变。,I2C总线的起始和停止条件,在SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件。当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为处于空闲状态。,传输数据,字节格式 发送到SDA 线上的每个字节必须
4、为8 位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。首先传输的是数据的最高位MSB,如果从机要完成一些其他功能,例如一个内部中断服务程序才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。,传输数据,响应: 数据传输必须带响应,相关的响应时钟脉冲由主机产生,在响应的时钟脉冲期间发送器释放SDA 线高。 在响应的时钟脉冲期间接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。,仲裁和时钟发生,仲裁过程中的时钟同步: 产生的同步SCL 时钟的低电平周期
5、由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定,如下图:,两个主机的仲裁过程,7 位的地址格式,在起始条件S 后发送了一个从机地址这个地址共有7 位,紧接着的第8 位是数据方向位R/W ,0 表示发送写,1 表示请求数据读数据传输,一般由主机产生的停止位P 终止,但是如果主机仍希望在总线上通讯它可以产生重复起始条件SR和寻址另一个从机。,10 位寻址,10 位寻址和7 位寻址兼容而且可以结合使用,10 位寻址采用了保留的1111XXX 作为起始条件S或重复起始条件Sr 的后第一个字节的头7 位,10 位寻址不会影响已有的7 位寻址,有7 位和10 位地址的器件可以连
6、接到相同的I2C 总线.尽管保留地址位1111XXX 有8 个可能的组合,但是只有4 个组合11110XX 用于10 位寻址,剩下的4个组合11111XX 保留给以后增强的I2C 总线.,头两个字节位的定义,10 位从机地址是由在起始条件S 或重复起始条件Sr 后的头两个字节组成,第一个字节的头7 位是11110XX 的组合,其中最后两位XX 是10 位地址的两个最高位MSB,第一个字节的第8 位是R/W 位,决定了报文的方向,第一个字节的最低位是0 表示主机将写信息到选中的从机,1 表示主机将向从机读信息如果R/W 位是0 则第二个字节是10 位从机地址剩下的8 位,如果R/W 位是1 则下
7、一个字节是从机发送给主机的数据,10 位寻址的格式,主机将10 位从机地址发送到从机 传输的方向不改变 ,当起始条件后有10 位地址时每个从机将从机地址第一个字节的头7 位11110XX 与自己的地址比较,并测试看第8 位R/W 方向位是否为0 ,此时很可能超过一个器件发现地址相同并产生一个响应A1, 所有发现地址相同的从机将从机地址第2个字节的8位XXXXXXXX 与自己的地址比较。此时只有一个主机发现地址相同并产生一个响应A2 ,匹配的从机将保持被主机寻址直到接收到停止条件P 或从机地址不同的重复起始条件Sr。,10 位寻址的格式,主机接收器用10 位的从机地址读从机发送器 传输方向在第2
8、 个R/W 位改变, 整个过程直到并包括响应位A2 都与主机发送器寻址从机接收器的相同,在重复起始条件Sr 后匹配的从机成员记得它之前被寻址这个从机然后检查Sr 后第一个字节的头7 位是否和起始条件S 后的相同,并检查第8 位R/W 是不是1, 如果匹配从机会认为它作为发送器被寻址然后产生响应A3 ,从机发送器保持寻址直到接收到停止条件P 或从机地址不同的另一个重复起始条件Sr, 重复起始条件Sr 后所有其他从机器件也用从机地址第一个字节的头7 位11110XX 与自己的地址比较并检查第8 位R/W ,但是没有一个会被寻址因为R/W =1, 10 位寻址或11110XX 从机地址7 位地址器件
9、不能匹配,10 位寻址的格式,组合格式1 主机发送数据到从机然后从相同的从机读数据,相同的主机始终占用着总线,传输方向在第二个R/W 位后改变。,10 位寻址的格式,组合格式2 主机发送数据到一个从机然后发送数据到另一个从机,相同的主机始终占用着总线。,10 位寻址的格式,组合格式3 在一个串行传输中组合了10 位和7 位寻址, 在每个起始条件S 或重复起始条件Sr 后发送10 位或7 位的从机地址,显示了主机如何发送数据到一个7 位地址的从机,然后发送数据到另一个10 位地址的从机。相同的主机始终占用着总线。,SPI协议,SPI协议,SPI,是英语Serial Peripheral inte
10、rface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200.,SPI接口简介,SPI的通信以主从方式工作,这种模式通常有1个主设备和1个或多个从设备,一般需要4根线,事实上3根也可以(单向传输时)。其也是所有基于
11、SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选) 。CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成1位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为1次),就可以完成8位数据的传输。,SPI总线通信分为Master和Slave,可以配置成单主单从,单主多从,互为主从。整个通信由主方控制,各信号含义如下
12、:(1)SDO 主设备数据输出,从设备数据输入(2)SDI 主设备数据输入,从设备数据输出(3)SCLK 时钟信号,由主设备产生(4)CS 从设备使能信号,由主设备控制,SPI主从连接框架,1个典型的SPI系统包括1个主MCU和1个和几个从外围器件,SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如右图所示,在SCLK的下降沿上数,通讯时序图,接口内部器件连接图,SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。,问题:如何对主设备时钟极性和相位进行配置?,