iic总线学习心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主控端 - 为启动数据传送 (START 指令)、产生时钟 (SCL) 信号并中止数据传送 (STOP指令) 的器件,主控端必须是传送端或接收端。
从属端 - 由主控端定址的器件。
从属端可以扮演接收端或发送端的角色。
多重主控端 - 在总线上可同时存一个以上的主控端,并且不会造成冲突或数据遗失。
通常来说运用 "bit-banged" 软件的主控端并不具有多重主控端能力,
I²C 总线控制器提供了一个将多重主控端硬件 I²C 连接端口加入到 DSP 或ASIC 的简单方法。
仲裁机制 - 预先定义在特定时间内只有一个主控端能够取得总线控制权。
同步 - 预先将二个或二个以上的主控端时钟信号予以同步化的定义程序。
SDA - 串行数据信号线 (S erial DA ta)
SCL - 串行时钟信号线 (S erial CL ock)
目标器件的 I²C 地址在第一个位组中送出,而这个起始位组中最不重要位(LSB) 则用来表明主控端将进行发送 (写入) 数据或由接收端接收 (读取) 数据,称为从属器件,每笔数据交换必须以 START 指令开头,并以 STOP 或RESTART 情况结束。
如果同一个 I²C 总线上有两个主控端,且同时发出 START 指令要控制总线时,那么就会以仲裁机制处理。
当主控端,如微控器,已经控
制总线时,其他的主控端必须等到第一个主控端送出 STOP 指令,并且将总线
回复闲置状态时,才能控制总线。
总线数据传送术语
F (FREE) - 总线为可用或闲置状态,这时 SDA 串行数据线与 SCL 串行时钟均为高电位状态。
S (START) 或 R (RESTART) - 数据传送是以 START 情况开始,这时 SDA 串行数据线的电压位准会从高电位转变为低电位,而 SCL 串行时钟则保持在高电位,当这个情况发生时,代表了总线进入忙碌 (BUSY) 状态。
C (CHANGE) - 当 SCL 串行时钟数据线为低电位时,数据位就可以由发送端放
置到 SDA 串行数据在线,在这段时间内,只要 SCL 串行时钟一直维持在低电
位状态,SDA 可以改变它的状态。
D (DATA) - SDA 串行数据在线高或低电位的数据在 SCL 串行时钟线处于高位
准时,在整个传输过程中时钟必须稳定维持在高电位以避免错误判读为 START 或 STOP 情况。
P (STOP) - 数据传输在收到 STOP 指令时结束,这时候 SDA 串行数据线的位
准由低电位回复到高电位,而 SCL 串行时钟线则维持在高电位,一但数据传送结束后,总线会在自动回复到可用状态。
电位转换 I²C
由于新的 I²C 器件以各种不同的电压运作,因此飞利浦半导体开发出一个解决方案,几乎不需要任何额外的动作或成本就能使不同电源电压的 I²C 器件拥有完整的双向数据传输电路,只要在 I²C 总线的不同电压位准间加上两颗低成本
的晶体管,将电位转换器两端总线上的逻辑电压位准加以隔离,这样的安排同
时也让这个电压转换电路可以用来隔离总线上已经断电的装置,使连上电源的
I²C 器件持续正常运作,这些电位转换功能也可以由低成本电位转换总线缓冲
器或 GTL 转换器件来达成,I²C 总线规格也拓展到运作电压在 2.7 V 以下的
器件,确保 I²C 总线在迈入新世纪时仍是新一代系统串行总线的最佳选择。
高速模式 I²C 总线
高速串行存储器与混合技术电信系统的发展使得总线必须在不同电源电压下高
速运作,而 I²C 总线高速 (High speed) 模式 (3.4MHz) 正好可以满足这些需求,在完全不影响与现有的(Standard) 与快速 (Fast) 模式器件的兼容性,并保留低成本、简易的特色,不需任何特殊逻辑电位、时序或驱动能力。
高速模
式主控端内特别设计的桥接器结构可以让快速与标准模式器件在同一个 I²C 总线系统中双向通信,在必要时主控端也可以进行双向电位转换,以支持各种不
同电源电压的器件,这种高速模式通常只出现在需要传送大量的数据的器件上,如 LCD 显示屏、高位数 ADC 或高容量 EEPROM 等,其他大多数的维护与控制
应用则以 100kHz 速度运作的 I²C 总线为主。
10-bit I²C 定址机制
10-bit I²C 定址可以使用高达 1024 个额外地址,避免因 I²C 器件快速增加
所带来的从属地址分配问题。
它并未改变 I²C 总线规格中所定义的地址格式,而是使用现有规格中所保留的地址。
10-bit 定址并不会影响现有的 7-bit 定
址功能,采用 7-bit 与 10-bit 定址的器件可以连接到相同的 I²C 总线上,
而两种形式的器件也可以使用在标准、快速或高速模式系统中,虽然多数的
I²C 器件都还是采用 7-bit 定址,然而设计工程师仍可以利用多个 I²C 总线
连接端口或多功器/交换器来达成总线上较小数量的器件,作为另一个解决这个定址的考量。
I²C 与 SMBus 比较
由 Intel 在 1990 所开发的系统管理总线 (SMBus, System Management Bus),属于 I²C 总线常见的衍生规格,通常可与 I²C 兼容,两个总线都采用两线式
通信方式,并且都拥有可定址的从属端,其中 SMBus 的最高数据传输率只有
100 kbps,因此需要经过特别处理,才能使用在拥有较高传输率 I²C 的系统中,其他的差异还包括计时与最小时钟速率、电压位准、提升电阻值与电流位准,
新的 I²C 器件已经陆续加入 SMBus 的功能,如可以依特定应用需求将计时(timeout) 功能加以开启或关闭
下面是I2C 总线的一些特征
• 只要求两条总线线路一条串行数据线SDA 一条串行时钟线SCL
• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地
址主机可以作为主机发送器或主机接收器
• 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁
防止数据被破坏
• 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速
模式下可达3.4Mbit/s
• 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整
SPI总线:
一种串行传输方式,三线制,网上可找到其通信协议和用法的
3根线实现数据双向传输
串行外围接口Serial peripheral interface
43
1
2
3
4
3
88
8
4
16
16
810101010
8 8
8
16
8
3
总线四种工作方式SPI
CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时
CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。
如果CPHA=0,在串行
CPHA=1,在串行同步时钟的第二
SPI主模块和与之通信的外设备时钟相位和极性应该一SPI总线包括1根串行同步时钟信号线以及2根数据线。
CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时
CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。
如果CPHA=0,在串行
CPHA=1,在串行同步时钟的第二
SPI主模块和与之通信的外设音时钟相位和极性应该一SPI接口时序如图3、图4所示。
补充:
上文中最后一句话:SPI主模块和与之通信的外设备时钟相位和极性应该一致。
个人理解2层意思:其一,主设备SPI时钟和极性的配置应该由外设来决定;其二,二者的配
SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI
SCLK的控制下,同时发送和接收数据,并通过2个双向移位寄
上升沿主机SDO发送数据1,同时从设备SDO发送数据0;紧接着在SCLK的下降沿的SDI接收到了主机发送过来的数据1,同时主机也接收到了从设备发送过来的数0.
SPI总线简介
推荐
同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM 和显示驱动器之类的慢速外设器件通信。
SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。
SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。
通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。
SPI通信
该总线通信基于主-从配置。
它有以下4个信号:
MOSI:主出/从入
MISO:主入/从出
SCK:串行时钟
SS:从属选择
芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。
在SPI传输中,数据是同步进行发送和接收的。
数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。
然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(C PHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。
CPOL和CPHA的设置决定了数据取样的时钟沿。
数据方向和通信速度
SPI传输串行数据时首先传输最高位。
波特率可以高达5Mbps,具体速度大小取决于SPI硬件。
例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
SPI总线接口及时序
SPI总线包括1根串行同步时钟信号线以及2根数据线。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时钟的空闲状态为低电平;如果C POL=1,串行同步时钟的空闲状态为高电平。
时钟相位(CPHA)能够配置用于选择两种不同的传输协议之
一进行数据传输。
如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA= 1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。
SPI主模块和与之通信的外设音时钟相位和极性应该一致。
SPI接口时序如图3、图4所示。
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。
下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sd i,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。
这样就完成里一个spi时序。
例子:
假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x 55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据
这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,s di、sdo相对于主机而言的。
其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。
根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来
SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。
SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
图3示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):
图2 SPI总线四种工作方式
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
如果C POL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。
如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。
SPI主模块和与之通信的外设音时钟相位和极性应该一致。
SPI接口时序如图3、图4所示。
二,.SPI功能模块的设计
根据功能定义及SPI的工作原理,将整个IP Core分为8个子模块:uC接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。
深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。
为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。
#1 楼主:CAN总线简介
贴子发表于:2007-9-12 19:54:41
1. CAN总线的产生与发展
控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以
及建筑、环境控制等众多部门。
控制器局部网将在我国迅速普及推广。
随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。
由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。
分散式工业控制系统就是为适应这种需要而发展起来的。
这类系统是以微型机为核心,将5C技术--COM PUTER(计算机技术)、CONTROL (自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和CHANGE(转换技术)紧密结合的产物。
它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。
典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。
现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。
现场总线的研究与应用已成为工业数据总线领域的热点。
尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格比将吸引众多工业控制系统采用。
同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。
控制器局部网CAN(CONTROLLER AERANETWORK)正是在这种背景下应运而生的。
由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。
为此,1991年9月PHILIPS SEMICONDUCTORS制订并发布了CAN技术规范(VERSION 2.0)。
该技术规范包括A和B两部分。
2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,而2.0B给出了标准的和扩展的两种报文格式。
此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
2. CAN总线特点
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。
通信速率可达1MBPS。
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。
采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同
的数据,这一点在分布式控制系统中非常有用。
数据段长度最多为8个字节,可满足通常工业领域中控制
命令、工作状态及测试数据的一般要求。
同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。
CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,
并已公认为最有前途的现场总线之一。
另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。
CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点
之间实现自由通信。
CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,
性价比高,特别适用于分布式测控系统之间的数通讯。
CAN总线插卡可以任意插在PC AT XT兼容机上
,方便地构成分布式监控系统。
3. CAN总线技术介绍
3.1位仲裁
要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。
在几个站同
时需要发送数据时,要求快速地进行总线分配。
实时处理通过网络交换的紧急数据有较大的不同。
一个快
速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并
要求更短的延时。
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有
最高的优先级。
这种优先级一旦在系统设计时被确立后就不能再被更改。
总线读取中的冲突可通过位仲裁
解决。
如图2所示,当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。
所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,
因为它的第3位为高,而其它两个站的报文第3位为低。
站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。
注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。
在此例中,站2的报文
被跟踪。
这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部
分已经在网络上传送了。
所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总
线再次空闲前发送报文。
CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统
中的重要性按顺序处理的。
这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放
在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。
对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。
这是实现有较高可靠性的通信系统的唯一方法
3.2 CAN与其它通信方案的比较
在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。
在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。
由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。
这将保证在总线存取时有明确的总线分配。
在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配(如:Ethernet CSMA/CD)。
因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。
为了分配总线,多于一个总线存取是必要的。
CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。
这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。
不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。
甚至当总线在重负载情况下, 以消息内容为优先的总线存取也被证明是一种有效的系统。
虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。
在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。
3.3 CAN的报文格式
在总线中传送的报文,每帧由7部分组成,见图3。
CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。
在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。
RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。
它还包括一个保留位(ro),为将来扩展使用。
它的最后四个字节用来指明数据场中数据的长度(DLC)。
数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
应答场(ACK)包括应答位和应答分隔符。
发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。
用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
报文的尾部由帧结束标出。
在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
3.4 数据错误检测
不同于其它总线,CAN协议不能使用应答信息。
事实上,它可以将发生的任何错误用信号发出。
CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。
3.4.1 循环冗余检查(CRC)
在一帧报文中加入冗余检查位可保证报文正确。
接收站通过CRC可判断报文是否有错。
3.4.2 帧检查
这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
3.4.3.应答错误
如前所述,被接收到的帧由接收站通过明确的应答来确认。
如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。
CAN协议也可通过位检查的方法探测错误。
3.4.4 总线检测
有时,CAN中的一个节点可监测自己发出的信号。
因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
3.4.5 位填充
一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。
然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。
为保证同步,同步沿用位填充产生。
在五个生。
在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。
例如,五个连续的低电平位后,CAN 自动插。