《嵌入式系统-6-嵌入式系统总线ppt课件.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统-6-嵌入式系统总线ppt课件.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去嵌入式系统嵌入式系统火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去课程内容1)1)嵌入式系统硬件基础(嵌入式系统硬件基础(2 2学时)学时)2)2)嵌入式系统软件基础(嵌入式系统软件基础(2 2学时)学时)3)3)ArduinoArduino开源硬件平台应用开发(开源硬件平台应用开发(6 6学时)学时)4)4)嵌入式系统中的总线与网络(嵌入式系统中的总线与网络(2 2学时)学时)5)5)嵌入式操作系统(嵌入式操作系统(2 2学
2、时)学时)6)6)嵌入式系统驱动开发方法(嵌入式系统驱动开发方法(2 2学时)学时)7)7)嵌入式数据库(嵌入式数据库(1 1学时)学时)8)8)数据流图(数据流图(1 1学时)学时)9)9)实时软件设计方法实时软件设计方法DARTSDARTS(2 2学时)学时)10)10)ARMARM硬件体系结构(硬件体系结构(2 2学时)学时)11)11)ARMARM应用开发介绍(应用开发介绍(2 2学时)学时)12)12)实时操作系统实时操作系统freeRTOSfreeRTOS(2 2学时)学时)13)13)实时操作系统实时操作系统freeRTOSfreeRTOS的移植(的移植(2 2学时)学时)14)
3、14)基于基于freeRTOSfreeRTOS的驱动开发(的驱动开发(2 2学时)学时)15)15)基于实时操作系统的实时应用开发(基于实时操作系统的实时应用开发(2020学时,实践)学时,实践)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去第二部分 嵌入式系统开发2.1 嵌入式系统中的总线火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去嵌入式系统中的总线系统级总线系统级总线板级总线板级总线片上总线片上总线火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸
4、湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去板级总线 嵌入式系统中,通过总线在多个互连I/O设备间进行计算机或者主机系统并行通信。PC总线PC104VME火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去板级总线PC总线 从整体来看,从整体来看,PCPC总线大致只经过了总线大致只经过了ISA ISA 和和PCI PCI 总线两个阶段以及未来的总线两个阶段以及未来的PCI Express 总线。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去ISAISA总线阶段总线阶段 1PC/XT
5、总线(PC总线):1981年,IBM,PC/XT 电脑,基于8bit的8088 处理器。2 PC/AT 总线:1984年,IBM,基于16-bit Intel 80286处理器的PC/AT 电脑。为了开发与IBM PC 兼容的外围设备,业内逐渐确立了以IBM PC IBM PC 总线规范为基础的总线规范为基础的ISAISA(工业标准架构:(工业标准架构:Industry Standard Architecture Industry Standard Architecture)总线)总线。3 EISA(Extended ISA,扩展ISA)总线:1988年,康柏、惠普等9个厂商协同把ISA 扩展
6、到32-bit,8MHz,与8/16bit 的ISA总线完全兼容。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去ISAISA总线阶段总线阶段 ISA:8/16bit,最大传输速率仅为8MB/s,允许多个CPU 共享系统资源。兼容性好,是上个世纪80年代最广泛采用的系统总线;弱点:传输速率过低、CPU占用率高、占用硬件中断资源等。在PC98 规范中,就开始放弃了ISA 总线,而Intel 从i810 芯片组开始,也不再提供对ISA 接口的支持。EISA 也由于速度有限,且成本过高,在还没成为标准总线之前,在20世纪90年代初的时候,就
7、给PCI 总线给取代了。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 PCI 总线是独立于CPU 的系统总线,采用了独特的中间缓冲器设计,可将显示卡、声卡、网卡、硬盘控制器等高速的外围设备直接挂在CPU 总线上,打破了瓶颈,使得CPU 的性能得到充分的发挥。最早提出的PCI 总线工作在33MHz 频率之下,传输带宽达到了133MB/s(33MHz X 32bit/8)。1993年提出了64-bit 的PCI 总线。后来又提出把PCI 总线的频率提到66MHz。目前广泛采用的是32-bit、33MHz 的
8、PCI 总线。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线的特点及系统结构总线的特点及系统结构PCI总线是一种兼容性最强、功能最全的计算机总线。他可同时支持多组外围设备,且不受制于处理器。PCI总线有如下主要特点:(1)在全部读写传送中可实现突发传送。(2)并行总线操作。(3)隐式仲裁。(4)访问速度快。(5)软件透明。(6)自动配置。PCIPCI总线阶段总线阶段 火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 PCI是一种高
9、性能3264 b地址数据复用总线。PCI总线不仅可以应用到低档至高档的台式系统上,而且也可应用在便携式机及至服务器的范围中。在一个PCI系统中,可做到高速外部设备和低速外部设备共享,PCI总线与ISAEISA总线并存。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 PCIPCI总线信号与命令总线信号与命令接口信号线,通常分为必备的和可选的2大类。主设备:取得了总线控制权的设备,需要49条接口信号线;“从设备”或“目标设备”:被主设备选中以进行通信的设备,至少需要47条接口信号线。图中,表示低电平有效,否则
10、表示高电平有效。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 总线命令用来规定主、从设备之间的传输类型,出现于地址期的CBE30线上。当一个主设备获得PCI总线的拥有权时,他可启动表1的任何一种交易类型。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 PCIPCI总线传输协议总线传输协议PCI总线对协议、时序、负载、电气特性及机械特性等技术指标均有严格的规定和要求。(1)基本的总线传输机制:一次突发传输包括一个地址
11、期和一个或若干个数据期。(2)除RST,INTAINTD之外的所有信号都是在时钟的上升沿被采样。(3)PCI总线上数据传输基本上都由FRAME,IRDY和TRDY三条信号线控制。(4)当FRAME和IRDY都无效时,接口处于空闲状态。FRAME信号建立后的第一个时钟前沿是地址期,在这个时钟前沿上传送地址和总线命令;下一个时钟前沿开始一个或若干个数据期。IRDY和TRDY有效的时钟前沿进行一次数据传输。(5)无论是主设备还是目标设备,一旦承诺了数据传输,就要进行到本次传输完成。(6)FRAME撤销而IRDY建立,表示主设备准备好了最后一次数据传输,等到目标设备发出了TRDY信号,就标志着最后一次
12、传输的完成.火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 PCI总线配置空间 根据PCI规范,每一个PCI设备都有一个PCI配置空间,容量最大为256字节,称为配置寄存器。配置寄存器是PCI设备的硬件与PCI设备的初始化软件及错误处理软件之间的信息交接区,以便软件对Pci设备进行识别和控制以及PCI设备向软件反映设备状态和要求。配置空间的组织结构配置空间的组织结构256字节的配置空间分为头标区(Header Region):64个字节,每个PCI设备必备,对所有的PCI设备其寄存器布局和格式大致相同。头
13、标区又分为两部分,头16个字节的对所有类型的PCI设备都是相同的,余下的48字节根据设备的功能类别有不同的布局。设备关联区(Device Dependent Region):192字节,寄存器的设置与布局完全取决于该PCI设备本身的需要,一个PCI设备因本身的特殊功能所需设置的专用寄存器只能放在这个区域中。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 配置空间的功能1设备识别 头标区有五个寄存器是识别一个PCI设备的,这五个寄存器都是只读的。(1)厂商标识(Vendor ID)这个标识符由PCI规范的权
14、威组织SIG统一分配,以保证惟一性,例如分配给Intel公司的标识码为“8086h”。“FFFFh”是一个无效的标识。(2)设备标识(Device ID)标识某一种设备,这个标识符由制造厂商分配。(3)修订版本标识(Revision ID)标识设备具体的修订版本,由制造厂商选择。(4)头标类型(Head Type)表明头标区中10h到3Fh字节空间的布局类型和该设备是否是多功能设备。位7用来标识一个多功能设备,为1则该设备是一个多功能设备;为0该设备为单一功能设备。位6到0规定头标区中10h到3Fh字节的布局类型,目前只有两种类型:00h和01h,此处讨论的是00h类型。(5)分类代码(Cla
15、ss Code)该寄存器分为三个字节段:高字节(0Bh)是基本分类码,粗略地对设备地功能进行分类;中字节(0Ah)是一个子分类码,标识设备更具体的功能;低字节(09h)标识所用的、寄存器一级的编程接口。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 2.设备控制 位于配置空间04h偏移地址处的命令寄存器是一个读/写寄存器,控制一个PCI设备产生和响应PCI周期的能力。I/OI/O空间使能位空间使能位控制设备对I/O空间访问的响应,为1时,允许该设备对I/O空间的访问进行响应,为0时禁止。如果该设备内有属于
16、PCI I/O空间的单元并允许PCI主设备访问时,此位应置为1。存储器空间使能位存储器空间使能位控制本设备对存储器空间访问的响应,为1时允许该设备对存储器空间的访问进行响应,为0时禁止。如果该设备内有属于PCI存储空间的单元并允许PCI主设备访问时,此位应置为1。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PCIPCI总线阶段总线阶段 3 基地址 头标区中有6个双字的基址寄存器,在上电时,这6个基地址寄存器中的内容向POST软件反映该设备需要多少存储器空间和I/O空间。POST软件通过各设备内的基地址寄存器了解到PCI总线上有哪些
17、存储器设备和I/O设备,根据它们的容量需求把它们映射定位到适当的存储器地址和I/O地址,并把起始地址再写入基地址寄存器,然后引导系统。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去 PCI Express 总线,第三代输入/输出总线,简称3GIO(Third-Generation Input/Output),另外它的开发代号是Arapahoe,所以又称为Arapahoe 总线。Intel 在2001年春季的IDF上,正式公布了旨在取代PCI总线的第三代I/O 技术,该规范由Intel 支持的AWG(Arapahoe Working
18、Group)负责制定。在2002 年4月17日,AWG 正式宣布3GIO 1.0规范草稿制定完毕,并移交PCI-SIG 进行审核。PCI ExpressPCI Express总线阶段总线阶段 火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去CPCICPCI总线总线19951995年年1111月月PCIPCI工工业业计计算算机机制制造造者者联联合合会会(PICMIGPICMIG)颁颁布了布了CompactPCICompactPCI规范规范1.01.0版版19971997年推出年推出CPCI2.0CPCI2.0规范规范CPCICPCI总总
19、线线规规范范=PCI=PCI总总线线的的电电气气规规范范+标标准准针针孔孔连连接接器器(IEC-1076-4-101IEC-1076-4-101)+欧洲卡规范(欧洲卡规范(IEC297/IEEE1011.1IEC297/IEEE1011.1)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去CPCICPCI总线总线在电气特性上,CPCI总线以PCI电气规范为基础,解决了VME等总线技术与PCI总线不兼容的问题,使得基于PC的x86架构、硬盘存储等技术能在工业领域使用。同时由于在接口等地方做了重大改进,使得采用CPCI技术的服务器、工控电
20、脑等拥有了高可靠性、高密度的优点。在机械结构上,CPCI总线结构使用了欧卡连接器和标准3U、6U板卡尺寸。此外,CPCI总线具有很好的抗震性和通风性,而且还可以从前面板拔插板卡,使更换和维修板卡极为方便。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PC/104PC/104是一种工业计算机总线标准是一种工业计算机总线标准 PC/104是一种工业计算机总线标准。PC/104有两个版本:8位和16位,分别与PC和PC/AT相对应。PC/104PLUS则与PCI总线相对应。PC/104是IEEE-996标准的延伸。第一块PC104产生于1
21、987年,但严格意义的规范说明在1992年才公布,从那以后,对PC104感兴趣的人越来越多,当时就有125个厂家引进PC104规范生产PC104兼容产品。像原来的PC总线一样,PC104一直是以一个非法定标准在执行,而不是委员会设计制定的。1992年IEEE开始着手为PC和PC/AT总线制定一个精简的IEEEP996标准(草稿),PC104作为基本文件被采纳,叫做IEEEP996.1兼容PC嵌入式模块标准。PC104是一种专门为嵌入式控制而定义的工业控制总线。其信号定义和PC/AT基本一致,但电气和机械规范却完全不同,是一种优化的、小型、堆栈式结构的嵌入式控制系统。板级总线PC/104总线火灾
22、袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PC/104PC/104是一种工业计算机总线标准是一种工业计算机总线标准 PC104与普通PC总线控制系统的主要不同是:1、小尺寸结构:标准模块的机械尺寸是3.6X3.8英寸,即96X90mm 2、堆栈式连接:去掉总线背板和插板滑道,总线以“针”和“孔”形式层叠连接,即PC104总线模块之间总线的连接是通过上层的针和下层的孔相互咬和相连,这种层叠封装有极好的抗震性。3、轻松总线驱动:减少元件数量和电源消耗,4mA总线驱动即可使模块正常工作,每个模块1-2瓦能耗。火灾袭来时要迅速疏散逃生,不可
23、蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PC/104PC/104是一种工业计算机总线标准是一种工业计算机总线标准PC104和PC104PLUS PC104有两个版本,8位和16位,分别与PC和PC/AT相对应。8位PC104共有64个总线管脚,单列双排插针和插孔,P1:64针,P2:40针,合计104个总线信号,PC104因此得名。当8位模块和16位模块连接时,16位模块必须在8位模块得下面(见附图2)。P2总线连结在8-位元模块中是可选的,这样让这些模块无论何处都可在堆栈中使用。PC104PLUS则与PCI总线相对应。PC104PLUS是专为PCI总线设
24、计的,可以连接高速外接设备。PC104PLUS在硬件上通过一个3X40即120孔插座,PC104PLUS包括了PCI规范2.1版要求的所有信号。为了向下兼容,PC104PLUS保持了PC104的所有特性。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PC/104PC/104是一种工业计算机总线标准是一种工业计算机总线标准 PC104PLUS与PC104相比有以下3个特点:1相对PC/104连接,增加了第三个连结接口支持PCIbus.2改变了组件高度的需求,增加模块的柔韧性.3加入了控制逻辑单元,以满足高速度bus的需求.火灾袭来时要
25、迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去PC/104PC/104是一种工业计算机总线标准是一种工业计算机总线标准 PC104PLUS总线与PCI总线规范的不同:1PC104PLUS是用120针2mm孔堆栈插座连接,而32位PCI总线用124针插槽连接 2120针的PCI不支持64位扩展,和JTAG,PRSNT或 CLKRUN 信号.PC104PLUS规范包含了两种总线标准:ISA和PCI,所以向其他PC机一样,可以双总线并存。由于PC104的管脚定义与ISA、PCI的规范完全兼容,所以公司在产品内部用PC/104模块时,也可以应自己的需要
26、设计生产更多的专业应用PC/104模块种类。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去串行总线扩展-I I2 2C C串行总线串行总线 I2C总线是一个简单的双向两总线。通过此总线对IC进行控制非常方便。引入I2C共用总线接口的原因 消费电子、通信和工控的一些系统一般都有:智能控制,如使用微处理器进行控制。通用的电路,如 LCD驱动、I/O 端口、RAM、EEPROM和一些数据转换电路。面向应用的电路,如数字解调和数字信号处理等。为了充分利用以上设计的相似之处,使硬件工作更有效,电路更简单,引入了I2C总线。片上总线IC器件之间
27、进行连接火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去串行总线扩展-I-I2 2C C串行总线串行总线 I2C总线的特点 仅有两条总线信号线 SDA(数据信号线)和SCL(串行时钟信号线)。每一个连在此总线的设备是可编址的 采用I2C总线连接的设备处于主从模式,主方既可接受数据,也可发送数据。一个真正多总线 含冲突检测和竞争功能,从而确保当多个主方同时发送数据时不会造成数据冲突。串行的8位双向数据传送总线 在标准模式下,数据传输速率为100Kb/s;在快模式下,数据传输率为400Kb/s;在高速模式下,数据传输率为3.4Mb/s。火
28、灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去串行总线扩展-I-I2 2C C串行总线串行总线 I2C总线的结构和数据传输规范 I2C总线是一种用于IC器件之间进行连接的二进制总线。通过两根信号线(SDA和SCL)传输信息。通过地址识别连接此总线接口的设备,如存储器、键盘接口等。SDA(串行数据信号线)和SCL(串行时钟信号线)都是双向的I/O线,它们通过上拉电阻连接到正电源。当总线空闲时,两条信号线(SDA和SCL)都是高电平,连接在总线上的器件的输出级必须是开漏或集电极开路,以实现线与功能。火灾袭来时要迅速疏散逃生,不可蜂拥而出或
29、留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去SPI总线概述SPI总线结构SPI总线工作模式与数据传输SPI总线应用示例SPI总线应用代码示例片上总线SPI总线火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去一、SPI总线概述1.SPI(SerialPeripheralInterface,同步串行外设接口)是由Motorola公司首先提出的全双工三线同步外设接口,采用主从模式架构主从模式架构(Master-Slave),支持多从设备模式应用,一般只支持单主设备单主设备。2.SPI总线大量应用于主设备与EEPROM
30、,RTC,ADC和显示驱动器之类的慢速外设通信。3.SPI接口在内部硬件实际上是个简单的移位寄存器,时钟由主设备(Master)控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去一、SPI总线概述4.主要特点:同步通信由主设备发起;支持全双工工作模式;工作在主-从设备模式下;时钟相位和极性可编程;带有写冲突保护和总线竞争保护机制;最大传输波特率5Mbps,总线频率最高可达2MHz;工作在主设备模式下时,支持最大的时钟频率=系统时钟/4;工作在从设备模式下时,支持最大的时钟频率=系
31、统时钟/2。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二、SPI总线结构SPI设备可以只是一个移位寄存器,也可以是一个独立的子系统。命令代码和数据值都是串行传输的。移位寄存器的长度不是固定的,不同设备可能不同。正常来说,移位寄存器是8位的,或者是8的整数倍(integral multiples)。当然,移位寄存器的长度并不一定要遵循这个规范,比如两个级联的EEPROM就可以存储18位数据。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二、SPI总线结构SPI要求两条控
32、制线要求两条控制线SCLKSCLK(时钟)、(时钟)、(时钟)、(时钟)、CSCS(片选)(片选)(片选)(片选)和两条数据线和两条数据线SDISDI(数据输入)、(数据输入)、(数据输入)、(数据输入)、SDOSDO(数据输出)(数据输出)(数据输出)(数据输出)。Motorola将这些数据线命名MOSI和MISO,即Master-Out-Slave-In和Master-In-Slave-Out。片选线则称为SS(Slave-Select)。CS对应被选中的对应被选中的外设外设。这个引脚大多时候是低电平有效的。若没被选中,SDO线是高阻的,故是未被激活的。主设备决定它要连接的是哪个外设。无论
33、设备有没有被选中,时钟线SCLK都会被接入该设备。时钟信号用于数据通信的同步。时钟信号用于数据通信的同步。大多数大多数SPI设备提供这四条线。设备提供这四条线。有时候,SDI和SDO线会翻倍,比如NationalSemiconductor公司的在温度传感器LM74;有时候,这些线中的一根会缺失。若某个外围设备一定不能被配置,它就无需输入线,只需要输出线;一旦它被选中了,它就开始发送数据。有一些ADC设备没有SDI线,比如Microchip的MCCP3001。也有些设备是没有数据输出的。比如LCD控制器,它可以被配置,但不能发送数据或状态信息。(比如NationalSemiconductor的C
34、OP472-3)。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二、SPI总线结构主设备与从设备连接主设备与从设备连接主设备与从设备通信环路主设备与从设备通信环路SPI主设备-从设备连接及通信环路示意图:火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二、SPI总线结构主设备与级联SPI设备连接左图中的几个级联SPI设备显然可以看作是一个大型设备,可以共用同一个片选信号。前一个设备的输出数据和下一个设备的输入数据绑定在一起,这样就形成了一个更宽的移位寄存器。火灾袭来时要迅速
35、疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二、SPI总线结构主设备与多个独立从设备连接如果独立从设备与主设备直接连接,则需要右图所示的总线结构。这时候主设备的SCKL时钟和SDI数据线都和每个从设备直接连接。此时,SDO数据线也还是绑定在一起,然后一起返回给主设备。只有片选信号是独立连接到每一个SPI设备的。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去三、SPI总线工作模式与数据传输Motorola没有定义任何通用的SPI时钟规范,但实际上,SPI总线有四种模式可以使用,这四种模式
36、由时钟极性(CPOL,ClockPolarity)和时钟相位(CPHA,ClockPhase)组合决定。CPOL和CPHA的设置决定了数据采样的时钟沿。1.SPI总线工作模式火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去uCPOL对传输协议没有重大影响。若CPOL=0,串行同步时钟的空闲状态为低电平;若CPOL=1,串行同步时钟的空闲状态为高电平。uCPHA能够配置用于选择两种不同的传输协议之一进行数据传输。若CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;若CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降
37、)数据被采样。三、SPI总线工作模式与数据传输1.SPI总线工作模式火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去SPISPI的四种工作模式的四种工作模式其中,使用最广泛的是SPI0和SPI3方式。三、SPI总线工作模式与数据传输1.SPI总线工作模式CPOLCPOL决定空闲时时钟的电平决定空闲时时钟的电平如果如果CPOL=0CPOL=0,串行同步时钟的,串行同步时钟的空闲状态为低电平;如果空闲状态为低电平;如果CPOL=1CPOL=1,串行同步时钟的空闲,串行同步时钟的空闲状态为高电平状态为高电平CPHACPHA决定从时钟的第几个
38、跳变决定从时钟的第几个跳变沿开始数据采样沿开始数据采样火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去三、SPI总线工作模式CPHA=0时,SPI总线数据传输时序CPHA=1时,SPI总线数据传输时序2.SPI总线数据传输时序图火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去四、SPI总线应用举例有一个主设备和从设备进行通信,分别有1个8位双向移位寄存器进行数据交换。其中主设备待发送数据为10101010,上升沿发送,下降沿接收,高位先发送,当第一个下降沿到来时,MISO上的
39、电平将存到寄存器中,此时主设备寄存器=0101010,MISO;从设备上移位寄存器数据为01010101,发送过程与主设备的相反。这样,8个时钟脉冲后,两个寄存器的内容就相互交换一次,这样就完成了一个SPI时序。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去四、SPI总线应用举例火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/SPI_defs.h/此文件定义SPI引脚/SPI引脚映射到P0.0-P0.3,但也可以定义到器件/的其它任何可用的GPI
40、O引脚#ifndefSPI_DEFS#defineSPI_DEFSsbitMOSI=P00;/主出/从入(输出)sbitMISO=P01;/主入/从出(输入)sbitSCK=P02;/串行时钟(输出)sbitNSS=P03;/从选择(输出到片选)#endif注意注意:此代码适用于CYGNAL公司的AN028-C8051F30X系列单片机产品,以模式0为例。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/SPI_MODE0.c/此文件包含一个模式0执行SPI器件的C程序。/目标t:C8051F30 x/链接工
41、具KEILC516.03/KEILEVALC51#include/SFR声明#includeSPI_defs.h/SPI端口定义/SPI_Transfer/使用SPI协议同时发送和接受一个字节/SCK空闲为低在SCK上升时位锁存/此程序的时序如下/参数时钟数/MOSI有效到SCK上升沿6/SCK上升到MISO锁存2/SCK下降到MOSI有效7/SCK高时间8/SCK低时间13火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例charSPI_Transfer(charSPI_byte)unsignedcharSP
42、I_count;/SPI办理计数器/单个字节SPI循环for(SPI_count=8;SPI_count0;SPI_count-)MOSI=SPI_byte&0 x80;/放当前输出位到MOSISPI_byte=SPI_byte1;/移下一位到MSBSCK=0 x01;/i设置SCK为高SPI_byte|=MISO;/在MISO上捕捉当前位SCK=0 x00;/设置时钟为低return(SPI_byte);/结束SPI_Transfer火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/SPI_F300_Tes
43、t.c/此程序示范C8051F30X处理主SPI程序集是如何在一个C程序中使用的/此程序设置C8051F30X器件的通用IO引脚为适当功能/接着用SPI_Transfer函数通过SPI引脚发送和接收信息/当发送信息时通过UART口与PC机的终端程序连接来/监视程序进程/为了实现代码功能下列文件之一应该被编译或汇编/最终生成的目标文件必须与从这些文件产生的目标文件连接/SPI_MODE0.c模式0主SPI器件的C语言实现/目标器件:C8051F30 x/连接工具:KEILC516.03/KEILEVALC51火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯
44、、湿被褥勇敢地冲出去五、SPI总线应用代码示例#include/SFR声明#include/标准I/O#includeSPI_defs.h/SPI端口定义/C8051F30X的16位SFR定义sfr16DP=0 x82;/数据指针sfr16TMR2RL=0 xca;/定时器T2重装值sfr16TMR2=0 xcc;/定时器T2计数器sfr16PCA0CP1=0 xe9;/PCA0模式1捕捉/比较sfr16PCA0CP2=0 xeb;/PCA0模式2捕捉/比较sfr16PCA0=0 xf9;/PCA0计数器sfr16PCA0CP0=0 xfb;/PCA0模式0捕捉/比较/全局变量#defineS
45、YSCLK24500000/系统时钟频率Hz#defineBAUDRATE115200/UART波特率bps火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/函数原型voidPORT_Init(void);/端口I/O配置voidSYSCLK_Init(void);/系统时钟初始化voidUART0_Init(void);/UART0初始化externcharSPI_Transfer(char);/SPI传输程序/主程序voidmain(void)unsignedchartest_counter,SPI_re
46、turn;/用于测试SPI程序/禁止WDTPCA0MD&=0 x40;/WDTE=0(清除WDT使能)SYSCLK_Init();/初始化振荡器PORT_Init();/初始化端口和GPIOUART0_Init();/初始化UART0EA=1;/使能全部中断火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例while(1)for(test_counter=0;test_counter=0 xFF;test_counter+)NSS=0 x00;/选择SPI从器件/发送/接收SPI字节SPI_return=SPI
47、_Transfer(test_counter);NSS=0 x01;/取消选择SPI从器件printf(nSPIOut=0 x%02X,SPIIn=0 x%02X,(unsigned)test_counter,(unsigned)SPI_return);/发送SPI数据到UART/为校验目的火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/初始化子程序/PORT_Init/配置数据交叉开关和GPIO端口/P0.0-MOSI/P0.1-MISO/P0.2-SCK/P0.3-NSS/P0.4-UARTTX/P0.
48、5-UARTRX/P0.6-/P0.7-voidPORT_Init(void)XBR0=0 x0F;/在XBAR中跳过SPI引脚XBR1=0 x03;/UART0TX和RX引脚使能XBR2=0 x40;/使能数据交叉开关和弱上拉P0MDOUT|=0 x1D;/允许TX0,MOSI,SCK和NSS为推挽输出火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例/SYSCLK_Init/此程序初始化系统时钟用内部24.5MHz时钟/作为时钟源voidSYSCLK_Init(void)OSCICN=0 x07;/选择内部
49、振荡器作为系统时钟源/UART0_Init/使用定时器T0作为波特率发生器和8-N-1模式voidUART0_Init(void)SCON0=0 x10;/SCON0:8位可变速率位/忽略停止位/RX使能/第九位为0/清RI0和TI0位火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线应用代码示例if(SYSCLK/BAUDRATE/2/2561)TH1=-(SYSCLK/BAUDRATE/2);CKCON&=0 x13;CKCON|=0 x10;/T1M=1;SCA1:0=xxelseif(SYSCLK/BAUDRATE
50、/2/2564)TH1=-(SYSCLK/BAUDRATE/2/4);CKCON&=0 x13;CKCON|=0 x01;/T1M=0;SCA1:0=01elseif(SYSCLK/BAUDRATE/2/25612)TH1=-(SYSCLK/BAUDRATE/2/12);CKCON&=0 x13;/T1M=0;SCA1:0=00elseTH1=-(SYSCLK/BAUDRATE/2/48);CKCON&=0 x13;CKCON|=0 x02;/T1M=0;SCA1:0=10火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去五、SPI总线